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(
834 Bijection<
const DiscreteVariable*,
const DiscreteVariable* >& bij,
841 virtual void replace_(
const DiscreteVariable* x,
const DiscreteVariable* y);
845 Sequence<
const DiscreteVariable* > vars__;
848 std::vector< Size > vals__;
858 void swap__(Idx i, Idx j);
865 void chgVal__(Idx varPos, Idx newVal);
872 void chgVals__(Idx varPos,
const Size newVal);
895 void add__(
const DiscreteVariable& v);
912 void erase__(
const DiscreteVariable& v);
918 void init__(MultiDimAdressable* master);
922 std::ostream& operator<<(std::ostream&,
const SetInst&);
931 gum::SetInst& operator<<(gum::SetInst& inst,
const gum::DiscreteVariable& i);
940 gum::SetInst& operator>>(gum::SetInst& inst,
const gum::DiscreteVariable& i);
944 #ifndef GUM_NO_INLINE 945 # include <agrum/tools/multidim/setInst_inl.h>