64 #ifndef GUM_SCHEDULE_PROJECTION_H 65 #define GUM_SCHEDULE_PROJECTION_H 67 #include <agrum/tools/core/set.h> 68 #include <agrum/tools/graphicalModels/inference/scheduler/schedule.h> 69 #include <agrum/tools/graphicalModels/inference/scheduler/scheduleMultiDim.h> 70 #include <agrum/tools/variables/discreteVariable.h> 75 template <
typename GUM_SCALAR >
121 template <
template <
typename >
class TABLE >
134 virtual MultiDimImplementation< GUM_SCALAR >* (*projectFunction())(
135 const MultiDimImplementation< GUM_SCALAR >&,
136 const Set<
const DiscreteVariable* >&)
141 virtual float nbOperations(
const ScheduleMultiDim< GUM_SCALAR >& table,
142 const Set<
const DiscreteVariable* >& del_vars,
143 const Schedule< GUM_SCALAR >& schedule)
145 float nbOperations(
const MultiDimImplementation< GUM_SCALAR >& table,
146 const Set<
const DiscreteVariable* >& del_vars,
147 const Schedule< GUM_SCALAR >& schedule);
148 template <
template <
typename >
class TABLE >
150 const Set<
const DiscreteVariable* >& del_vars,
151 const Schedule< GUM_SCALAR >& schedule);
162 virtual std::pair<
long,
long >
163 memoryUsage(
const ScheduleMultiDim< GUM_SCALAR >& table,
164 const Set<
const DiscreteVariable* >& del_vars,
165 const Schedule< GUM_SCALAR >& schedule)
167 std::pair<
long,
long >
168 memoryUsage(
const MultiDimImplementation< GUM_SCALAR >& table,
169 const Set<
const DiscreteVariable* >& del_vars,
170 const Schedule< GUM_SCALAR >& schedule);
171 template <
template <
typename >
class TABLE >
172 std::pair<
long,
long >
174 const Set<
const DiscreteVariable* >& del_vars,
175 const Schedule< GUM_SCALAR >& schedule);
188 #include <agrum/tools/graphicalModels/inference/scheduler/scheduleProjection_tpl.h> virtual ScheduleProjection< GUM_SCALAR > * newFactory() const =0
virtual constructor
ScheduleProjection()
default constructor
float nbOperations(const TABLE< GUM_SCALAR > &set, const Set< const DiscreteVariable * > &del_vars, const Schedule< GUM_SCALAR > &schedule)
creates and returns the projection of the table over a subset of its vars
INLINE void emplace(Args &&... args)
virtual ~ScheduleProjection()
destructor
float nbOperations(const MultiDimImplementation< GUM_SCALAR > &table, const Set< const DiscreteVariable * > &del_vars, const Schedule< GUM_SCALAR > &schedule)
creates and returns the projection of the table over a subset of its vars
std::pair< long, long > memoryUsage(const MultiDimImplementation< GUM_SCALAR > &table, const Set< const DiscreteVariable * > &del_vars, const Schedule< GUM_SCALAR > &schedule)
creates and returns the projection of the table over a subset of its vars
virtual void setProjectFunction(MultiDimImplementation< GUM_SCALAR > *(*proj)(const MultiDimImplementation< GUM_SCALAR > &, const Set< const DiscreteVariable * > &))=0
changes the function used for projecting tables
ScheduleMultiDim< GUM_SCALAR > project(const TABLE< GUM_SCALAR > &table, const Set< const DiscreteVariable * > &del_vars, Schedule< GUM_SCALAR > &schedule)
creates and returns the projection of the table over a subset of its vars
ScheduleProjection(const ScheduleProjection< GUM_SCALAR > &)
copy constructor
ScheduleMultiDim< GUM_SCALAR > project(const MultiDimImplementation< GUM_SCALAR > &table, const Set< const DiscreteVariable * > &del_vars, Schedule< GUM_SCALAR > &schedule)
creates and returns the projection of the table over a subset of its vars
ScheduleProjection< GUM_SCALAR > & operator=(const ScheduleProjection< GUM_SCALAR > &)
to be coherent with combinations, forbid copy operators
std::pair< long, long > memoryUsage(const TABLE< GUM_SCALAR > &table, const Set< const DiscreteVariable * > &del_vars, const Schedule< GUM_SCALAR > &schedule)
creates and returns the projection of the table over a subset of its vars