48#ifndef GUM_MULTI_DIM_COMBINATION_H
49#define GUM_MULTI_DIM_COMBINATION_H
119 template <
class TABLE >
121#ifndef DOXYGEN_SHOULD_SKIP_THIS
123 template <
typename T >
128 template <
template <
typename,
typename... >
class CONTAINER, typename T, typename... Args >
129 struct TableType< CONTAINER< T, Args... > > {
185 operations(
const std::vector< const IScheduleMultiDim* >& set,
186 const bool is_result_persistent =
false)
const
190 const bool is_result_persistent =
false)
const
200 const bool is_result_persistent =
false)
const;
202 const std::vector< const IScheduleMultiDim* >& set,
203 const bool is_result_persistent =
false)
const;
232 virtual std::pair< double, double >
The Table-agnostic base class of scheduleMultiDim.
virtual TABLE(*)(const TABLE &, const TABLE &) combinationFunction()
returns the combination function currently used by the combinator
MultiDimCombination< TABLE > & operator=(const MultiDimCombination< TABLE > &)
forbid copy operators
MultiDimCombination(const MultiDimCombination< TABLE > &)
copy constructor
virtual std::pair< std::vector< ScheduleOperator * >, const IScheduleMultiDim * > operations(const std::vector< const IScheduleMultiDim * > &set, const bool is_result_persistent=false) const =0
returns the set of operations to perform as well as the result of the combination
virtual TABLE * execute(const Set< const TABLE * > &set) const =0
creates and returns the result of the combination of the tables within set
virtual std::pair< double, double > memoryUsage(const Set< const Sequence< const DiscreteVariable * > * > &set) const =0
returns the combination function currently used by the combinator
virtual ~MultiDimCombination()
destructor
virtual double nbOperations(const Set< const TABLE * > &set) const =0
returns a rough estimate of the number of operations that will be performed to compute the combinatio...
virtual void setCombinationFunction(TABLE(*combine)(const TABLE &, const TABLE &))=0
changes the function used for combining two TABLES
virtual MultiDimCombination< TABLE > * clone() const =0
virtual constructor
virtual double nbOperations(const Set< const Sequence< const DiscreteVariable * > * > &set) const =0
returns the combination function currently used by the combinator
MultiDimCombination()
default constructor
const IScheduleMultiDim * schedule(Schedule &schedule, const Set< const IScheduleMultiDim * > &set, const bool is_result_persistent=false) const
add to a given schedule the set of operations needed to perform the combination
const IScheduleMultiDim * schedule(Schedule &schedule, const std::vector< const IScheduleMultiDim * > &set, const bool is_result_persistent=false) const
returns the combination function currently used by the combinator
virtual std::pair< double, double > memoryUsage(const Set< const TABLE * > &set) const =0
Returns the memory consumption used during the combination.
virtual std::pair< std::vector< ScheduleOperator * >, const IScheduleMultiDim * > operations(const Set< const IScheduleMultiDim * > &set, const bool is_result_persistent=false) const =0
returns the combination function currently used by the combinator
virtual void execute(TABLE &container, const Set< const TABLE * > &set) const =0
returns the combination function currently used by the combinator
typename TableType< TABLE >::value_type value_type
the type of the values contained into TABLE
Class containing a schedule of operations to perform on multidims.
The generic class for storing (ordered) sequences of objects.
A generic class to combine efficiently several MultiDim tables.
gum is the global namespace for all aGrUM entities
Class containing a schedule of operations to perform on multidims.