ldsb.hh gecode/set.hh gecode/int/ldsb.hh gecode/set/ldsb/brancher.hpp Gecode::Set::LDSB::LDSBSetBrancher Gecode::Set::LDSB Gecode Gecode::Set Gecode::Int Gecode::Int::LDSB /*-*-mode:C++;c-basic-offset:2;indent-tabs-mode:nil-*-*/ /* *Mainauthors: *ChristopherMears<chris.mears@monash.edu> * *Copyright: *ChristopherMears,2012 * *Lastmodified: *$Date:2013-05-0813:30:48+0200(Wed,08May2013)$by$Author:schulte$ *$Revision:13622$ * *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_LDSB_HH__ #define__GECODE_SET_LDSB_HH__ #include<gecode/set.hh> #include<gecode/int/ldsb.hh> namespaceGecode{namespaceSet{namespaceLDSB{ usingnamespaceInt::LDSB; template<classView,intn,classVal,unsignedinta> classLDSBSetBrancher:publicLDSBBrancher<View,n,Val,a>{ public: typedefvoid(*VarValPrint)(constSpace&home,constBrancherHandle&bh, unsignedintb, typenameView::VarTypex,inti, constVal&m, std::ostream&o); int_prevPos; int_nNonValueSymmetries; int_nValueSymmetries; ValueSymmetryImp<View>**_copiedSyms; int_nCopiedSyms; IntSet_leftBranchValues; bool_stable; LDSBSetBrancher(Space&home,boolshare,LDSBSetBrancher&b); LDSBSetBrancher(Homehome, ViewArray<View>&x, ViewSel<View>*vs[n], ValSelCommitBase<View,Val>*vsc, SymmetryImp<View>**syms,intnsyms, SetBranchFilterbf, VarValPrintvvp); virtualconstChoice*choice(Space&home); virtualExecStatuscommit(Space&home,constChoice&c,unsignedintb); virtualActor*copy(Space&home,boolshare); staticBrancherHandlepost(Homehome, ViewArray<View>&x, ViewSel<View>*vs[n], ValSelCommitBase<View,Val>*vsc, SymmetryImp<View>**_syms, int_nsyms, SetBranchFilterbf, VarValPrintvvp); voidupdatePart1(Space&home,intchoicePos); }; }}} namespaceGecode{namespaceInt{namespaceLDSB{ template<> ArgArray<Literal> VariableSequenceSymmetryImp<Set::SetView> ::symmetric(Literall,constViewArray<Set::SetView>&x)const; }}} #include<gecode/set/ldsb/brancher.hpp> #endif //STATISTICS:set-branch