28 #ifndef DOXYGEN_SHOULD_SKIP_THIS 30 # include <agrum/agrum.h> 31 # include <agrum/tools/graphicalModels/inference/scheduler/scheduleCombine.h> 37 template <
typename GUM_SCALAR >
38 ScheduleCombine< GUM_SCALAR >::ScheduleCombine(
const ScheduleMultiDim< GUM_SCALAR >& table1,
39 const ScheduleMultiDim< GUM_SCALAR >& table2,
40 MultiDimImplementation< GUM_SCALAR >* (*combine)(
41 const MultiDimImplementation< GUM_SCALAR >&,
42 const MultiDimImplementation< GUM_SCALAR >&)) :
43 ScheduleOperation< GUM_SCALAR >(ScheduleOperation< GUM_SCALAR >::Type::COMBINE_MULTIDIM),
44 _table1_(table1), _table2_(table2), _args_(0), _results_(0), _combine_(combine) {
46 GUM_CONSTRUCTOR(ScheduleCombine);
49 Sequence<
const DiscreteVariable* > vars = _table1_.variablesSequence();
50 const Sequence<
const DiscreteVariable* >& vars2 = _table2_.variablesSequence();
52 for (
typename Sequence<
const DiscreteVariable* >::const_iterator_safe iter = vars2.beginSafe();
53 iter != vars2.endSafe();
55 if (!vars.exists(*iter)) { vars.insert(*iter); }
60 _result_ =
new ScheduleMultiDim< GUM_SCALAR >(vars);
INLINE void emplace(Args &&... args)