set.hh gecode/kernel.hh gecode/int.hh gecode/iter.hh gecode/support/auto-link.hpp gecode/set/exception.hpp gecode/set/limits.hpp gecode/set/var-imp.hpp gecode/set/view.hpp gecode/set/array-traits.hpp gecode/set/array.hpp gecode/set/branch/traits.hpp gecode/set/branch/afc.hpp gecode/set/branch/activity.hpp gecode/set/branch/var.hpp gecode/set/branch/val.hpp gecode/set/branch/assign.hpp /usr/include/gecode/set/branch.hh /usr/include/gecode/set/channel/sorted.hpp /usr/include/gecode/set/channel.hh /usr/include/gecode/set/convex.hh /usr/include/gecode/set/distinct.hh /usr/include/gecode/set/element.hh /usr/include/gecode/set/int/card.hpp /usr/include/gecode/set/int/minmax.hpp /usr/include/gecode/set/int/weights.hpp /usr/include/gecode/set/int.hh /usr/include/gecode/set/ldsb.hh /usr/include/gecode/set/precede.hh /usr/include/gecode/set/rel-op/post.hpp /usr/include/gecode/set/rel-op.hh /usr/include/gecode/set/rel.hh /usr/include/gecode/set/sequence.hh Gecode::SetVar Gecode::SetVarGlbRanges Gecode::SetVarLubRanges Gecode::SetVarUnknownRanges Gecode::SetVarGlbValues Gecode::SetVarLubValues Gecode::SetVarUnknownValues Gecode::SetVarArgs Gecode::SetVarArray Gecode::SetAFC Gecode::SetActivity Gecode::SetVarBranch Gecode::SetValBranch Gecode::SetAssign Gecode::Set Gecode Gecode::Set::Limits GECODE_SET_EXPORT GECODE_LIBRARY_NAME "Set" /*-*-mode:C++;c-basic-offset:2;indent-tabs-mode:nil-*-*/ /* *Mainauthors: *GuidoTack<tack@gecode.org> *ChristianSchulte<schulte@gecode.org> * *Contributingauthors: *GaborSzokoli<szokoli@gecode.org> * *Copyright: *GuidoTack,2004 *ChristianSchulte,2004 *GaborSzokoli,2004 * *Lastmodified: *$Date:2013-07-2314:31:03+0200(Tue,23Jul2013)$by$Author:schulte$ *$Revision:13939$ * *ThisfileispartofGecode,thegenericconstraint *developmentenvironment: *http://www.gecode.org * *Permissionisherebygranted,freeofcharge,toanypersonobtaining *acopyofthissoftwareandassociateddocumentationfiles(the *"Software"),todealintheSoftwarewithoutrestriction,including *withoutlimitationtherightstouse,copy,modify,merge,publish, *distribute,sublicense,and/orsellcopiesoftheSoftware,andto *permitpersonstowhomtheSoftwareisfurnishedtodoso,subjectto *thefollowingconditions: * *Theabovecopyrightnoticeandthispermissionnoticeshallbe *includedinallcopiesorsubstantialportionsoftheSoftware. * *THESOFTWAREISPROVIDED"ASIS",WITHOUTWARRANTYOFANYKIND, *EXPRESSORIMPLIED,INCLUDINGBUTNOTLIMITEDTOTHEWARRANTIESOF *MERCHANTABILITY,FITNESSFORAPARTICULARPURPOSEAND *NONINFRINGEMENT.INNOEVENTSHALLTHEAUTHORSORCOPYRIGHTHOLDERSBE *LIABLEFORANYCLAIM,DAMAGESOROTHERLIABILITY,WHETHERINANACTION *OFCONTRACT,TORTOROTHERWISE,ARISINGFROM,OUTOFORINCONNECTION *WITHTHESOFTWAREORTHEUSEOROTHERDEALINGSINTHESOFTWARE. * */ #ifndef__GECODE_SET_HH__ #define__GECODE_SET_HH__ #include<gecode/kernel.hh> #include<gecode/int.hh> #include<gecode/iter.hh> /* *Configurelinking * */ #if!defined(GECODE_STATIC_LIBS)&&\ (defined(__CYGWIN__)||defined(__MINGW32__)||defined(_MSC_VER)) #ifdefGECODE_BUILD_SET #defineGECODE_SET_EXPORT__declspec(dllexport) #else #defineGECODE_SET_EXPORT__declspec(dllimport) #endif #else #ifdefGECODE_GCC_HAS_CLASS_VISIBILITY #defineGECODE_SET_EXPORT__attribute__((visibility("default"))) #else #defineGECODE_SET_EXPORT #endif #endif //Configureauto-linking #ifndefGECODE_BUILD_SET #defineGECODE_LIBRARY_NAME"Set" #include<gecode/support/auto-link.hpp> #endif #include<gecode/set/exception.hpp> namespaceGecode{namespaceSet{ namespaceLimits{ constintmax=(Gecode::Int::Limits::max/2)-1; constintmin=-max; constunsignedintcard=max-min+1; voidcheck(intn,constchar*l); voidcheck(unsignedintn,constchar*l); voidcheck(constIntSet&s,constchar*l); } }} #include<gecode/set/limits.hpp> #include<gecode/set/var-imp.hpp> namespaceGecode{ namespaceSet{ classSetView; } classSetVar:publicVarImpVar<Set::SetVarImp>{ friendclassSetVarArray; friendclassSetVarArgs; usingVarImpVar<Set::SetVarImp>::x; public: SetVar(void); SetVar(constSetVar&y); SetVar(constSet::SetView&y); GECODE_SET_EXPORTSetVar(Space&home); GECODE_SET_EXPORT SetVar(Space&home,intglbMin,intglbMax,intlubMin,intlubMax, unsignedintcardMin=0, unsignedintcardMax=Set::Limits::card); GECODE_SET_EXPORT SetVar(Space&home,constIntSet&glbD,intlubMin,intlubMax, unsignedintcardMin=0, unsignedintcardMax=Set::Limits::card); GECODE_SET_EXPORT SetVar(Space&home,intglbMin,intglbMax,constIntSet&lubD, unsignedintcardMin=0, unsignedintcardMax=Set::Limits::card); GECODE_SET_EXPORT SetVar(Space&home,constIntSet&glbD,constIntSet&lubD, unsignedintcardMin=0, unsignedintcardMax=Set::Limits::card); unsignedintglbSize(void)const; unsignedintlubSize(void)const; unsignedintunknownSize(void)const; unsignedintcardMin(void)const; unsignedintcardMax(void)const; intlubMin(void)const; intlubMax(void)const; intglbMin(void)const; intglbMax(void)const; boolcontains(inti)const; boolnotContains(inti)const; }; classSetVarGlbRanges{ private: Set::GlbRanges<Set::SetVarImp*>iter; public: SetVarGlbRanges(void); SetVarGlbRanges(constSetVar&x); booloperator ()(void)const; voidoperator ++(void); intmin(void)const; intmax(void)const; unsignedintwidth(void)const; }; classSetVarLubRanges{ private: Set::LubRanges<Set::SetVarImp*>iter; public: SetVarLubRanges(void); SetVarLubRanges(constSetVar&x); booloperator ()(void)const; voidoperator ++(void); intmin(void)const; intmax(void)const; unsignedintwidth(void)const; }; classSetVarUnknownRanges{ private: Set::UnknownRanges<Set::SetVarImp*>iter; public: SetVarUnknownRanges(void); SetVarUnknownRanges(constSetVar&x); booloperator ()(void)const; voidoperator ++(void); intmin(void)const; intmax(void)const; unsignedintwidth(void)const; }; classSetVarGlbValues{ private: Iter::Ranges::ToValues<SetVarGlbRanges>iter; public: SetVarGlbValues(void); SetVarGlbValues(constSetVar&x); booloperator ()(void)const; voidoperator ++(void); intval(void)const; }; classSetVarLubValues{ private: Iter::Ranges::ToValues<SetVarLubRanges>iter; public: SetVarLubValues(void); SetVarLubValues(constSetVar&x); booloperator ()(void)const; voidoperator ++(void); intval(void)const; }; classSetVarUnknownValues{ private: Iter::Ranges::ToValues<SetVarUnknownRanges>iter; public: SetVarUnknownValues(void); SetVarUnknownValues(constSetVar&x); booloperator ()(void)const; voidoperator ++(void); intval(void)const; }; template<classChar,classTraits> std::basic_ostream<Char,Traits>& operator<<(std::basic_ostream<Char,Traits>&os,constSetVar&x); } #include<gecode/set/view.hpp> namespaceGecode{ } #include<gecode/set/array-traits.hpp> namespaceGecode{ classSetVarArgs:publicVarArgArray<SetVar>{ public: SetVarArgs(void){} explicitSetVarArgs(intn):VarArgArray<SetVar>(n){} SetVarArgs(constSetVarArgs&a):VarArgArray<SetVar>(a){} SetVarArgs(constVarArray<SetVar>&a):VarArgArray<SetVar>(a){} SetVarArgs(conststd::vector<SetVar>&a):VarArgArray<SetVar>(a){} template<classInputIterator> SetVarArgs(InputIteratorfirst,InputIteratorlast) :VarArgArray<SetVar>(first,last){} GECODE_SET_EXPORT SetVarArgs(Space&home,intn,intglbMin,intglbMax, intlubMin,intlubMax, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); GECODE_SET_EXPORT SetVarArgs(Space&home,intn,constIntSet&glb, intlubMin,intlubMax, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); GECODE_SET_EXPORT SetVarArgs(Space&home,intn,intglbMin,intglbMax, constIntSet&lub, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); GECODE_SET_EXPORT SetVarArgs(Space&home,intn, constIntSet&glb,constIntSet&lub, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); }; classSetVarArray:publicVarArray<SetVar>{ public: SetVarArray(void); SetVarArray(constSetVarArray&); SetVarArray(Space&home,constSetVarArgs&); GECODE_SET_EXPORTSetVarArray(Space&home,intn); GECODE_SET_EXPORT SetVarArray(Space&home,intn,intglbMin,intglbMax,intlubMin,intlubMax, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); GECODE_SET_EXPORT SetVarArray(Space&home,intn,constIntSet&glb,intlubMin,intlubMax, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); GECODE_SET_EXPORT SetVarArray(Space&home,intn,intglbMin,intglbMax,constIntSet&lub, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); GECODE_SET_EXPORT SetVarArray(Space&home,intn, constIntSet&glb,constIntSet&lub, unsignedintminCard=0, unsignedintmaxCard=Set::Limits::card); }; } #include<gecode/set/array.hpp> namespaceGecode{ enumSetRelType{ SRT_EQ, SRT_NQ, SRT_SUB, SRT_SUP, SRT_DISJ, SRT_CMPL, SRT_LQ, SRT_LE, SRT_GQ, SRT_GR }; enumSetOpType{ SOT_UNION, SOT_DUNION, SOT_INTER, SOT_MINUS }; GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetRelTyper,inti); GECODE_SET_EXPORTvoid dom(Homehome,constSetVarArgs&x,SetRelTyper,inti); GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetRelTyper,inti,intj); GECODE_SET_EXPORTvoid dom(Homehome,constSetVarArgs&x,SetRelTyper,inti,intj); GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetRelTyper,constIntSet&s); GECODE_SET_EXPORTvoid dom(Homehome,constSetVarArgs&x,SetRelTyper,constIntSet&s); GECODE_SET_EXPORTvoid cardinality(Homehome,SetVarx,unsignedinti,unsignedintj); GECODE_SET_EXPORTvoid cardinality(Homehome,constSetVarArgs&x,unsignedinti,unsignedintj); GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetRelTypert,inti,Reifyr); GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetRelTypert,inti,intj,Reifyr); GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetRelTypert,constIntSet&s,Reifyr); GECODE_SET_EXPORTvoid dom(Homehome,SetVarx,SetVard); GECODE_SET_EXPORTvoid dom(Homehome,constSetVarArgs&x,constSetVarArgs&d); GECODE_SET_EXPORTvoid rel(Homehome,SetVarx,SetRelTyper,SetVary); GECODE_SET_EXPORTvoid rel(Homehome,SetVarx,SetRelTypert,SetVary,Reifyr); GECODE_SET_EXPORTvoid rel(Homehome,SetVars,SetRelTyper,IntVarx); GECODE_SET_EXPORTvoid rel(Homehome,IntVarx,SetRelTyper,SetVars); GECODE_SET_EXPORTvoid rel(Homehome,SetVars,SetRelTypert,IntVarx,Reifyr); GECODE_SET_EXPORTvoid rel(Homehome,IntVarx,SetRelTypert,SetVars,Reifyr); GECODE_SET_EXPORTvoid rel(Homehome,SetVars,IntRelTyper,IntVarx); GECODE_SET_EXPORTvoid rel(Homehome,IntVarx,IntRelTyper,SetVars); GECODE_SET_EXPORTvoid rel(Homehome,SetVarx,SetOpTypeop,SetVary,SetRelTyper,SetVarz); GECODE_SET_EXPORTvoid rel(Homehome,SetOpTypeop,constSetVarArgs&x,SetVary); GECODE_SET_EXPORTvoid rel(Homehome,SetOpTypeop,constSetVarArgs&x,constIntSet&z,SetVary); GECODE_SET_EXPORTvoid rel(Homehome,SetOpTypeop,constIntVarArgs&x,constIntSet&z,SetVary); GECODE_SET_EXPORTvoid rel(Homehome,SetOpTypeop,constIntVarArgs&x,SetVary); GECODE_SET_EXPORTvoid rel(Homehome,constIntSet&x,SetOpTypeop,SetVary, SetRelTyper,SetVarz); GECODE_SET_EXPORTvoid rel(Homehome,SetVarx,SetOpTypeop,constIntSet&y, SetRelTyper,SetVarz); GECODE_SET_EXPORTvoid rel(Homehome,SetVarx,SetOpTypeop,SetVary, SetRelTyper,constIntSet&z); GECODE_SET_EXPORTvoid rel(Homehome,constIntSet&x,SetOpTypeop,SetVary,SetRelTyper, constIntSet&z); GECODE_SET_EXPORTvoid rel(Homehome,SetVarx,SetOpTypeop,constIntSet&y,SetRelTyper, constIntSet&z); GECODE_SET_EXPORTvoid convex(Homehome,SetVarx); GECODE_SET_EXPORTvoid convex(Homehome,SetVarx,SetVary); GECODE_SET_EXPORTvoid sequence(Homehome,constSetVarArgs&x); GECODE_SET_EXPORTvoid sequence(Homehome,constSetVarArgs&y,SetVarx); GECODE_SET_EXPORTvoid atmostOne(Homehome,constSetVarArgs&x,unsignedintc); GECODE_SET_EXPORTvoid min(Homehome,SetVars,IntVarx); GECODE_SET_EXPORTvoid notMin(Homehome,SetVars,IntVarx); GECODE_SET_EXPORTvoid min(Homehome,SetVars,IntVarx,Reifyr); GECODE_SET_EXPORTvoid max(Homehome,SetVars,IntVarx); GECODE_SET_EXPORTvoid notMax(Homehome,SetVars,IntVarx); GECODE_SET_EXPORTvoid max(Homehome,SetVars,IntVarx,Reifyr); GECODE_SET_EXPORTvoid cardinality(Homehome,SetVars,IntVarx); GECODE_SET_EXPORTvoid weights(Homehome,IntSharedArrayelements,IntSharedArrayweights, SetVarx,IntVary); GECODE_SET_EXPORTvoid channel(Homehome,constIntVarArgs&x,constSetVarArgs&y); GECODE_SET_EXPORTvoid channelSorted(Homehome,constIntVarArgs&x,SetVary); GECODE_SET_EXPORTvoid channel(Homehome,constBoolVarArgs&x,SetVary); GECODE_SET_EXPORTvoid channel(Homehome,constSetVarArgs&x,constSetVarArgs&y); GECODE_SET_EXPORTvoid precede(Homehome,constSetVarArgs&x,ints,intt); GECODE_SET_EXPORTvoid precede(Homehome,constSetVarArgs&x,constIntArgs&c); GECODE_SET_EXPORTvoid element(Homehome,SetOpTypeop,constSetVarArgs&x,SetVary,SetVarz, constIntSet&u=IntSet(Set::Limits::min,Set::Limits::max)); GECODE_SET_EXPORTvoid element(Homehome,SetOpTypeop,constIntVarArgs&x,SetVary,SetVarz, constIntSet&u=IntSet(Set::Limits::min,Set::Limits::max)); GECODE_SET_EXPORTvoid element(Homehome,SetOpTypeop,constIntSetArgs&x,SetVary,SetVarz, constIntSet&u=IntSet(Set::Limits::min,Set::Limits::max)); GECODE_SET_EXPORTvoid element(Homehome,SetOpTypeop,constIntArgs&x,SetVary,SetVarz, constIntSet&u=IntSet(Set::Limits::min,Set::Limits::max)); GECODE_SET_EXPORTvoid element(Homehome,constSetVarArgs&x,IntVary,SetVarz); GECODE_SET_EXPORTvoid element(Homehome,constIntSetArgs&s,IntVary,SetVarz); GECODE_SET_EXPORTvoid element(Homehome,constIntSetArgs&a, IntVarx,intw,IntVary,inth,SetVarz); GECODE_SET_EXPORTvoid element(Homehome,constSetVarArgs&a, IntVarx,intw,IntVary,inth,SetVarz); GECODE_SET_EXPORTvoid wait(Homehome,SetVarx,void(*c)(Space&home)); GECODE_SET_EXPORTvoid wait(Homehome,constSetVarArgs&x,void(*c)(Space&home)); } namespaceGecode{ typedefbool(*SetBranchFilter)(constSpace&home,SetVarx,inti); typedefdouble(*SetBranchMerit)(constSpace&home,SetVarx,inti); typedefint(*SetBranchVal)(constSpace&home,SetVarx,inti); typedefvoid(*SetBranchCommit)(Space&home,unsignedinta, SetVarx,inti,intn); } #include<gecode/set/branch/traits.hpp> namespaceGecode{ classSetAFC:publicAFC{ public: SetAFC(void); SetAFC(constSetAFC&a); SetAFC&operator =(constSetAFC&a); SetAFC(Homehome,constSetVarArgs&x,doubled=1.0); voidinit(Home,constSetVarArgs&x,doubled=1.0); }; } #include<gecode/set/branch/afc.hpp> namespaceGecode{ classSetActivity:publicActivity{ public: SetActivity(void); SetActivity(constSetActivity&a); SetActivity&operator =(constSetActivity&a); GECODE_SET_EXPORT SetActivity(Homehome,constSetVarArgs&x,doubled=1.0, SetBranchMeritbm=NULL); GECODE_SET_EXPORTvoid init(Home,constSetVarArgs&x,doubled=1.0, SetBranchMeritbm=NULL); }; } #include<gecode/set/branch/activity.hpp> namespaceGecode{ typedefvoid(*SetVarValPrint)(constSpace&home,constBrancherHandle&bh, unsignedinta, SetVarx,inti,constint&n, std::ostream&o); } namespaceGecode{ classSetVarBranch:publicVarBranch{ public: enumSelect{ SEL_NONE=0, SEL_RND, SEL_MERIT_MIN, SEL_MERIT_MAX, SEL_DEGREE_MIN, SEL_DEGREE_MAX, SEL_AFC_MIN, SEL_AFC_MAX, SEL_ACTIVITY_MIN, SEL_ACTIVITY_MAX, SEL_MIN_MIN, SEL_MIN_MAX, SEL_MAX_MIN, SEL_MAX_MAX, SEL_SIZE_MIN, SEL_SIZE_MAX, SEL_DEGREE_SIZE_MIN, SEL_DEGREE_SIZE_MAX, SEL_AFC_SIZE_MIN, SEL_AFC_SIZE_MAX, SEL_ACTIVITY_SIZE_MIN, SEL_ACTIVITY_SIZE_MAX, }; protected: Selects; public: SetVarBranch(void); SetVarBranch(Rndr); SetVarBranch(Selects,BranchTblt); SetVarBranch(Selects,doubled,BranchTblt); SetVarBranch(Selects,AFCa,BranchTblt); SetVarBranch(Selects,Activitya,BranchTblt); SetVarBranch(Selects,VoidFunctionmf,BranchTblt); Selectselect(void)const; voidexpand(Homehome,constSetVarArgs&x); }; SetVarBranchSET_VAR_NONE(void); SetVarBranchSET_VAR_RND(Rndr); SetVarBranchSET_VAR_MERIT_MIN(SetBranchMeritbm,BranchTbltbl=NULL); SetVarBranchSET_VAR_MERIT_MAX(SetBranchMeritbm,BranchTbltbl=NULL); SetVarBranchSET_VAR_DEGREE_MIN(BranchTbltbl=NULL); SetVarBranchSET_VAR_DEGREE_MAX(BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_MIN(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_MIN(SetAFCa,BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_MAX(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_MAX(SetAFCa,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_MIN(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_MIN(SetActivitya,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_MAX(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_MAX(SetActivitya,BranchTbltbl=NULL); SetVarBranchSET_VAR_MIN_MIN(BranchTbltbl=NULL); SetVarBranchSET_VAR_MIN_MAX(BranchTbltbl=NULL); SetVarBranchSET_VAR_MAX_MIN(BranchTbltbl=NULL); SetVarBranchSET_VAR_MAX_MAX(BranchTbltbl=NULL); SetVarBranchSET_VAR_SIZE_MIN(BranchTbltbl=NULL); SetVarBranchSET_VAR_SIZE_MAX(BranchTbltbl=NULL); SetVarBranchSET_VAR_DEGREE_SIZE_MIN(BranchTbltbl=NULL); SetVarBranchSET_VAR_DEGREE_SIZE_MAX(BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_SIZE_MIN(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_SIZE_MIN(SetAFCa,BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_SIZE_MAX(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_AFC_SIZE_MAX(SetAFCa,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_SIZE_MIN(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_SIZE_MIN(SetActivitya,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_SIZE_MAX(doubled=1.0,BranchTbltbl=NULL); SetVarBranchSET_VAR_ACTIVITY_SIZE_MAX(SetActivitya,BranchTbltbl=NULL); } #include<gecode/set/branch/var.hpp> namespaceGecode{ classSetValBranch:publicValBranch{ public: enumSelect{ SEL_MIN_INC, SEL_MIN_EXC, SEL_MED_INC, SEL_MED_EXC, SEL_MAX_INC, SEL_MAX_EXC, SEL_RND_INC, SEL_RND_EXC, SEL_VAL_COMMIT }; protected: Selects; public: SetValBranch(Selects=SEL_MIN_INC); SetValBranch(Selects,Rndr); SetValBranch(VoidFunctionv,VoidFunctionc); Selectselect(void)const; }; SetValBranchSET_VAL_MIN_INC(void); SetValBranchSET_VAL_MIN_EXC(void); SetValBranchSET_VAL_MED_INC(void); SetValBranchSET_VAL_MED_EXC(void); SetValBranchSET_VAL_MAX_INC(void); SetValBranchSET_VAL_MAX_EXC(void); SetValBranchSET_VAL_RND_INC(Rndr); SetValBranchSET_VAL_RND_EXC(Rndr); SetValBranchSET_VAL(SetBranchValv,SetBranchCommitc=NULL); } #include<gecode/set/branch/val.hpp> namespaceGecode{ classSetAssign:publicValBranch{ public: enumSelect{ SEL_MIN_INC, SEL_MIN_EXC, SEL_MED_INC, SEL_MED_EXC, SEL_MAX_INC, SEL_MAX_EXC, SEL_RND_INC, SEL_RND_EXC, SEL_VAL_COMMIT }; protected: Selects; public: SetAssign(Selects=SEL_MIN_INC); SetAssign(Selects,Rndr); SetAssign(VoidFunctionv,VoidFunctionc); Selectselect(void)const; }; SetAssignSET_ASSIGN_MIN_INC(void); SetAssignSET_ASSIGN_MIN_EXC(void); SetAssignSET_ASSIGN_MED_INC(void); SetAssignSET_ASSIGN_MED_EXC(void); SetAssignSET_ASSIGN_MAX_INC(void); SetAssignSET_ASSIGN_MAX_EXC(void); SetAssignSET_ASSIGN_RND_INC(Rndr); SetAssignSET_ASSIGN_RND_EXC(Rndr); SetAssignSET_ASSIGN(SetBranchValv,SetBranchCommitc=NULL); } #include<gecode/set/branch/assign.hpp> namespaceGecode{ GECODE_SET_EXPORTBrancherHandle branch(Homehome,constSetVarArgs&x, SetVarBranchvars,SetValBranchvals, SetBranchFilterbf=NULL, SetVarValPrintvvp=NULL); GECODE_SET_EXPORTBrancherHandle branch(Homehome,constSetVarArgs&x, TieBreak<SetVarBranch>vars,SetValBranchvals, SetBranchFilterbf=NULL, SetVarValPrintvvp=NULL); GECODE_SET_EXPORTBrancherHandle branch(Homehome,SetVarx,SetValBranchvals, SetVarValPrintvvp=NULL); GECODE_SET_EXPORTBrancherHandle assign(Homehome,constSetVarArgs&x,SetAssignvals, SetBranchFilterbf=NULL, SetVarValPrintvvp=NULL); GECODE_SET_EXPORTBrancherHandle assign(Homehome,SetVarx,SetAssignvals, SetVarValPrintvvp=NULL); } //LDSB-relateddeclarations. namespaceGecode{ GECODE_SET_EXPORTSymmetryHandleVariableSymmetry(constSetVarArgs&x); GECODE_SET_EXPORT SymmetryHandleVariableSequenceSymmetry(constSetVarArgs&x,intss); GECODE_SET_EXPORTBrancherHandle branch(Homehome,constSetVarArgs&x, SetVarBranchvars,SetValBranchvals, constSymmetries&syms, SetBranchFilterbf=NULL, SetVarValPrintvvp=NULL); GECODE_SET_EXPORTBrancherHandle branch(Homehome,constSetVarArgs&x, TieBreak<SetVarBranch>vars,SetValBranchvals, constSymmetries&syms, SetBranchFilterbf=NULL, SetVarValPrintvvp=NULL); } #endif //IFDEF:GECODE_HAS_SET_VARS //STATISTICS:set-post