branch-tiebreak.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 namespace Gecode {
00039
00041 template<class VarBranch>
00042 class TieBreak {
00043 public:
00045 VarBranch a, b, c, d;
00047 TieBreak(VarBranch a0 = VarBranch(),
00048 VarBranch b0 = VarBranch(),
00049 VarBranch c0 = VarBranch(),
00050 VarBranch d0 = VarBranch());
00051 };
00052
00059
00060 template<class VarBranch>
00061 TieBreak<VarBranch>
00062 tiebreak(VarBranch a, VarBranch b);
00064 template<class VarBranch>
00065 TieBreak<VarBranch>
00066 tiebreak(VarBranch a, VarBranch b, VarBranch c);
00068 template<class VarBranch>
00069 TieBreak<VarBranch>
00070 tiebreak(VarBranch a, VarBranch b, VarBranch c, VarBranch d);
00072
00073
00074 template<class VarBranch>
00075 forceinline
00076 TieBreak<VarBranch>::TieBreak(VarBranch a0,
00077 VarBranch b0,
00078 VarBranch c0,
00079 VarBranch d0)
00080 : a(a0), b(b0), c(c0), d(d0) {}
00081
00082 template<class VarBranch>
00083 forceinline TieBreak<VarBranch>
00084 tiebreak(VarBranch a, VarBranch b) {
00085 TieBreak<VarBranch> ab(a,b);
00086 return ab;
00087 }
00088
00089 template<class VarBranch>
00090 forceinline TieBreak<VarBranch>
00091 tiebreak(VarBranch a, VarBranch b, VarBranch c) {
00092 TieBreak<VarBranch> abc(a,b,c);
00093 return abc;
00094 }
00095
00096 template<class VarBranch>
00097 forceinline TieBreak<VarBranch>
00098 tiebreak(VarBranch a, VarBranch b, VarBranch c, VarBranch d) {
00099 TieBreak<VarBranch> abcd(a,b,c,d);
00100 return abcd;
00101 }
00102
00103 }
00104
00105