rel-op.hh gecode/set.hh gecode/set/rel.hh gecode/set/rel-op/common.hpp gecode/set/rel-op/superofinter.hpp gecode/set/rel-op/subofunion.hpp gecode/set/rel-op/inter.hpp gecode/set/rel-op/union.hpp gecode/set/rel-op/partition.hpp gecode/set/rel-op/post.hpp /usr/include/gecode/set/element.hh /usr/include/gecode/set/rel-op/post.hpp Gecode::Set::RelOp::SuperOfInter Gecode::Set::RelOp::SubOfUnion Gecode::Set::RelOp::Intersection Gecode::Set::RelOp::Union Gecode::Set::RelOp::IntersectionN Gecode::Set::RelOp::UnionN Gecode::Set::RelOp::PartitionN Gecode Gecode::Set Gecode::Set::RelOp /*-*-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:2009-10-1217:36:53+0200(Mon,12Oct2009)$by$Author:schulte$ *$Revision:9878$ * *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_RELOP_HH__ #define__GECODE_SET_RELOP_HH__ #include<gecode/set.hh> #include<gecode/set/rel.hh> namespaceGecode{namespaceSet{namespaceRelOp{ template<classView0,classView1,classView2> classSuperOfInter: publicMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_CLUB>{ protected: usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_CLUB>::x0; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_CLUB>::x1; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_CLUB>::x2; SuperOfInter(Space&home,boolshare,SuperOfInter&p); SuperOfInter(Homehome,View0,View1,View2); public: virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,View0x,View1y,View2z); }; template<classView0,classView1,classView2> classSubOfUnion: publicMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>{ protected: usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x0; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x1; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x2; SubOfUnion(Space&home,boolshare,SubOfUnion&p); SubOfUnion(Homehome,View0,View1,View2); public: virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,View0x,View1y,View2z); }; template<classView0,classView1,classView2> classIntersection: publicMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>{ protected: usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x0; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x1; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x2; Intersection(Space&home,boolshare,Intersection&p); Intersection(Homehome,View0,View1,View2); public: virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,View0x,View1y,View2z); }; template<classView0,classView1,classView2> classUnion: publicMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>{ protected: usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x0; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x1; usingMixTernaryPropagator<View0,PC_SET_ANY,View1,PC_SET_ANY, View2,PC_SET_ANY>::x2; Union(Space&home,boolshare,Union&p); Union(Homehome,View0,View1,View2); public: virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,View0x,View1y,View2z); }; template<classView0,classView1> classIntersectionN: publicMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>{ protected: usingMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>::x; usingMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>::y; boolshared; LUBndSetintOfDets; IntersectionN(Space&home,boolshare,IntersectionN&p); IntersectionN(Homehome,ViewArray<View0>&,View1); IntersectionN(Homehome,ViewArray<View0>&,constIntSet&,View1); public: virtualPropCostcost(constSpace&home,constModEventDelta&med)const; virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); staticExecStatuspost(Homehome,ViewArray<View0>&y,View1x); staticExecStatuspost(Homehome,ViewArray<View0>&y, constIntSet&z,View1x); }; template<classView0,classView1> classUnionN:publicMixNaryOnePropagator<View0,PC_SET_ANY, View1,PC_SET_ANY>{ protected: usingMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>::x; usingMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>::y; boolshared; GLBndSetunionOfDets; UnionN(Space&home,boolshare,UnionN&p); UnionN(Homehome,ViewArray<View0>&,View1); UnionN(Homehome,ViewArray<View0>&,constIntSet&,View1); public: virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); virtualPropCostcost(constSpace&home,constModEventDelta&med)const; staticExecStatuspost(Homehome,ViewArray<View0>&y,View1x); staticExecStatuspost(Homehome,ViewArray<View0>&y, constIntSet&z,View1x); }; template<classView0,classView1> classPartitionN:publicMixNaryOnePropagator<View0,PC_SET_ANY, View1,PC_SET_ANY>{ protected: usingMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>::x; usingMixNaryOnePropagator<View0,PC_SET_ANY,View1,PC_SET_ANY>::y; boolshared; GLBndSetunionOfDets; PartitionN(Space&home,boolshare,PartitionN&p); PartitionN(Homehome,ViewArray<View0>&,View1); PartitionN(Homehome,ViewArray<View0>&,constIntSet&,View1); public: virtualActor*copy(Space&home,bool); virtualExecStatuspropagate(Space&home,constModEventDelta&med); virtualPropCostcost(constSpace&home,constModEventDelta&med)const; staticExecStatuspost(Homehome,ViewArray<View0>&y,View1x); staticExecStatuspost(Homehome,ViewArray<View0>&y, constIntSet&z,View1x); }; }}} #include<gecode/set/rel-op/common.hpp> #include<gecode/set/rel-op/superofinter.hpp> #include<gecode/set/rel-op/subofunion.hpp> #include<gecode/set/rel-op/inter.hpp> #include<gecode/set/rel-op/union.hpp> #include<gecode/set/rel-op/partition.hpp> #include<gecode/set/rel-op/post.hpp> #endif //STATISTICS:set-prop