branch-tiebreak.hpp /usr/include/gecode/kernel.hh Gecode::TieBreak Gecode /*-*-mode:C++;c-basic-offset:2;indent-tabs-mode:nil-*-*/ /* *Mainauthors: *ChristianSchulte<schulte@gecode.org> * *Copyright: *ChristianSchulte,2012 * *Lastmodified: *$Date:2013-02-0816:47:00+0100(Fri,08Feb2013)$by$Author:schulte$ *$Revision:13278$ * *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. * */ namespaceGecode{ template<classVarBranch> classTieBreak{ public: VarBrancha,b,c,d; TieBreak(VarBrancha0=VarBranch(), VarBranchb0=VarBranch(), VarBranchc0=VarBranch(), VarBranchd0=VarBranch()); }; template<classVarBranch> TieBreak<VarBranch> tiebreak(VarBrancha,VarBranchb); template<classVarBranch> TieBreak<VarBranch> tiebreak(VarBrancha,VarBranchb,VarBranchc); template<classVarBranch> TieBreak<VarBranch> tiebreak(VarBrancha,VarBranchb,VarBranchc,VarBranchd); template<classVarBranch> forceinline TieBreak<VarBranch>::TieBreak(VarBrancha0, VarBranchb0, VarBranchc0, VarBranchd0) :a(a0),b(b0),c(c0),d(d0){} template<classVarBranch> forceinlineTieBreak<VarBranch> tiebreak(VarBrancha,VarBranchb){ TieBreak<VarBranch>ab(a,b); returnab; } template<classVarBranch> forceinlineTieBreak<VarBranch> tiebreak(VarBrancha,VarBranchb,VarBranchc){ TieBreak<VarBranch>abc(a,b,c); returnabc; } template<classVarBranch> forceinlineTieBreak<VarBranch> tiebreak(VarBrancha,VarBranchb,VarBranchc,VarBranchd){ TieBreak<VarBranch>abcd(a,b,c,d); returnabcd; } } //STATISTICS:kernel-branch