35 #include <agrum/agrum.h> 37 #include <agrum/tools/core/bijection.h> 38 #include <agrum/tools/multidim/implementations/multiDimAdressable.h> 39 #include <agrum/tools/multidim/implementations/multiDimInterface.h> 43 class MultiDimAdressable;
97 SetInst(
const SetInst& aI);
103 SetInst(
const Instantiation& aI);
110 SetInst& operator=(
const SetInst& aI);
118 SetInst(MultiDimAdressable& aMD);
126 SetInst(
const MultiDimAdressable& aMD);
134 SetInst(MultiDimAdressable* aMD);
142 SetInst(
const MultiDimAdressable* aMD);
174 void add(
const DiscreteVariable& v);
183 void erase(
const DiscreteVariable& v);
196 Size domainSize()
const;
202 Idx pos(
const DiscreteVariable& v)
const;
212 Size vals(Idx i)
const;
222 Size vals(
const DiscreteVariable& var)
const;
232 Size vals(
const DiscreteVariable* var)
const;
242 Idx nbrOccurences(
const DiscreteVariable& var)
const;
253 Idx val(Idx i)
const;
263 Idx val(
const DiscreteVariable& var)
const;
273 Idx val(
const DiscreteVariable* var)
const;
283 const DiscreteVariable& variable(Idx i)
const;
298 SetInst& chgVal(
const DiscreteVariable& v, Idx newVal);
313 SetInst& chgVal(
const DiscreteVariable* v, Idx newVal);
330 SetInst& chgVal(Idx varPos, Idx newVal);
345 SetInst& chgVals(
const DiscreteVariable& v,
const Size newVal);
360 SetInst& addVal(
const DiscreteVariable& v, Idx newVal);
375 SetInst& addVals(
const DiscreteVariable& v,
const Size newVal);
390 SetInst& remVal(
const DiscreteVariable& v, Idx newVal);
405 SetInst& remVals(
const DiscreteVariable& v,
const Size newVal);
421 SetInst& interVals(
const DiscreteVariable& v,
const Size newVal);
437 SetInst& interVal(
const DiscreteVariable& v, Idx newVal);
452 SetInst& chgVals(
const DiscreteVariable* v,
const Size newVal);
467 SetInst& addVal(
const DiscreteVariable* v, Idx newVal);
482 SetInst& addVals(
const DiscreteVariable* v,
const Size newVal);
497 SetInst& remVal(
const DiscreteVariable* v, Idx newVal);
512 SetInst& remVals(
const DiscreteVariable* v,
const Size newVal);
528 SetInst& interVals(
const DiscreteVariable* v,
const Size newVal);
544 SetInst& interVal(
const DiscreteVariable* v, Idx newVal);
561 SetInst& chgVals(Idx varPos,
const Size newVal);
577 SetInst& addVal(Idx varPos, Idx newVal);
593 SetInst& addVals(Idx varPos,
const Size newVal);
609 SetInst& remVal(Idx varPos, Idx newVal);
625 SetInst& remVals(Idx varPos,
const Size newVal);
642 SetInst& interVals(Idx varPos,
const Size newVal);
659 SetInst& interVal(Idx varPos, Idx newVal);
676 SetInst& chgDifVal(Idx varPos,
const Size newVal);
683 SetInst& chgValIn(
const SetInst& i);
691 bool contains(
const DiscreteVariable& v)
const;
699 bool contains(
const DiscreteVariable* v)
const;
705 const Sequence<
const DiscreteVariable* >& variablesSequence()
const;
711 virtual bool empty()
const;
717 std::string toString()
const;
723 void reorder(
const Sequence<
const DiscreteVariable* >& v);
729 void reorder(
const SetInst& i);
747 bool inOverflow()
const;
778 void unsetOverflow();
833 static void assign_values(Bijection<
const DiscreteVariable*,
const DiscreteVariable* >& bij,
840 virtual void replace_(
const DiscreteVariable* x,
const DiscreteVariable* y);
844 Sequence<
const DiscreteVariable* > _vars_;
847 std::vector< Size > _vals_;
857 void _swap_(Idx i, Idx j);
864 void _chgVal_(Idx varPos, Idx newVal);
871 void _chgVals_(Idx varPos,
const Size newVal);
894 void _add_(
const DiscreteVariable& v);
911 void _erase_(
const DiscreteVariable& v);
917 void _init_(MultiDimAdressable* master);
921 std::ostream& operator<<(std::ostream&,
const SetInst&);
930 gum::SetInst& operator<<(gum::SetInst& inst,
const gum::DiscreteVariable& i);
939 gum::SetInst& operator>>(gum::SetInst& inst,
const gum::DiscreteVariable& i);
943 #ifndef GUM_NO_INLINE 944 # include <agrum/tools/multidim/setInst_inl.h>