76 #ifndef GUM_SCHEDULE_COMBINATION_H 77 #define GUM_SCHEDULE_COMBINATION_H 79 #include <agrum/tools/core/set.h> 80 #include <agrum/tools/graphicalModels/inference/scheduler/schedule.h> 81 #include <agrum/tools/graphicalModels/inference/scheduler/scheduleMultiDim.h> 82 #include <agrum/tools/multidim/implementations/multiDimImplementation.h> 87 template <
typename GUM_SCALAR >
127 template <
template <
typename >
class TABLE >
138 virtual MultiDimImplementation< GUM_SCALAR >* (
139 *combineFunction())(
const MultiDimImplementation< GUM_SCALAR >&,
140 const MultiDimImplementation< GUM_SCALAR >&)
145 virtual float nbOperations(
const Set<
const ScheduleMultiDim< GUM_SCALAR >* >& set,
146 const Schedule< GUM_SCALAR >& schedule)
148 float nbOperations(
const Set<
const MultiDimImplementation< GUM_SCALAR >* >& set,
149 const Schedule< GUM_SCALAR >& schedule);
150 template <
template <
typename >
class TABLE >
151 float nbOperations(
const Set<
const TABLE< GUM_SCALAR >* >& set,
152 const Schedule< GUM_SCALAR >& schedule);
163 virtual std::pair<
long,
long >
164 memoryUsage(
const Set<
const ScheduleMultiDim< GUM_SCALAR >* >& set,
165 const Schedule< GUM_SCALAR >& schedule)
167 std::pair<
long,
long >
168 memoryUsage(
const Set<
const MultiDimImplementation< GUM_SCALAR >* >& set,
169 const Schedule< GUM_SCALAR >& schedule);
170 template <
template <
typename >
class TABLE >
171 std::pair<
long,
long >
memoryUsage(
const Set<
const TABLE< GUM_SCALAR >* >& set,
172 const Schedule< GUM_SCALAR >& schedule);
184 #include <agrum/tools/graphicalModels/inference/scheduler/scheduleCombination_tpl.h> ScheduleCombination(const ScheduleCombination< GUM_SCALAR > &)
copy constructor
ScheduleCombination()
default constructor
INLINE void emplace(Args &&... args)
float nbOperations(const Set< const TABLE< GUM_SCALAR > * > &set, const Schedule< GUM_SCALAR > &schedule)
ScheduleCombination< GUM_SCALAR > & operator=(const ScheduleCombination< GUM_SCALAR > &)
forbid copy operators
virtual void setCombineFunction(MultiDimImplementation< GUM_SCALAR > *(*combine)(const MultiDimImplementation< GUM_SCALAR > &, const MultiDimImplementation< GUM_SCALAR > &))=0
changes the function used for combining two TABLES
ScheduleMultiDim< GUM_SCALAR > combine(const Set< const MultiDimImplementation< GUM_SCALAR > * > &set, Schedule< GUM_SCALAR > &schedule)
virtual ScheduleCombination< GUM_SCALAR > * newFactory() const =0
virtual constructor
virtual ~ScheduleCombination()
destructor
std::pair< long, long > memoryUsage(const Set< const MultiDimImplementation< GUM_SCALAR > * > &set, const Schedule< GUM_SCALAR > &schedule)
float nbOperations(const Set< const MultiDimImplementation< GUM_SCALAR > * > &set, const Schedule< GUM_SCALAR > &schedule)
std::pair< long, long > memoryUsage(const Set< const TABLE< GUM_SCALAR > * > &set, const Schedule< GUM_SCALAR > &schedule)
ScheduleMultiDim< GUM_SCALAR > combine(const Set< const TABLE< GUM_SCALAR > * > &set, Schedule< GUM_SCALAR > &schedule)