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 >
119 template <
template <
typename >
class TABLE >
130 virtual MultiDimImplementation< GUM_SCALAR >* (*projectFunction())(
131 const MultiDimImplementation< GUM_SCALAR >&,
132 const Set<
const DiscreteVariable* >&)
137 virtual float nbOperations(
const ScheduleMultiDim< GUM_SCALAR >& table,
138 const Set<
const DiscreteVariable* >& del_vars,
139 const Schedule< GUM_SCALAR >& schedule)
141 float nbOperations(
const MultiDimImplementation< GUM_SCALAR >& table,
142 const Set<
const DiscreteVariable* >& del_vars,
143 const Schedule< GUM_SCALAR >& schedule);
144 template <
template <
typename >
class TABLE >
146 const Set<
const DiscreteVariable* >& del_vars,
147 const Schedule< GUM_SCALAR >& schedule);
158 virtual std::pair<
long,
long >
memoryUsage(
const ScheduleMultiDim< GUM_SCALAR >& table,
159 const Set<
const DiscreteVariable* >& del_vars,
160 const Schedule< GUM_SCALAR >& schedule)
162 std::pair<
long,
long >
memoryUsage(
const MultiDimImplementation< GUM_SCALAR >& table,
163 const Set<
const DiscreteVariable* >& del_vars,
164 const Schedule< GUM_SCALAR >& schedule);
165 template <
template <
typename >
class TABLE >
166 std::pair<
long,
long >
memoryUsage(
const TABLE< GUM_SCALAR >& table,
167 const Set<
const DiscreteVariable* >& del_vars,
168 const Schedule< GUM_SCALAR >& schedule);
180 #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