this repo has no description
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2/*
3 * Main authors:
4 * Christian Schulte <schulte@gecode.org>
5 *
6 * Copyright:
7 * Christian Schulte, 2012
8 *
9 * This file is part of Gecode, the generic constraint
10 * development environment:
11 * http://www.gecode.org
12 *
13 * Permission is hereby granted, free of charge, to any person obtaining
14 * a copy of this software and associated documentation files (the
15 * "Software"), to deal in the Software without restriction, including
16 * without limitation the rights to use, copy, modify, merge, publish,
17 * distribute, sublicense, and/or sell copies of the Software, and to
18 * permit persons to whom the Software is furnished to do so, subject to
19 * the following conditions:
20 *
21 * The above copyright notice and this permission notice shall be
22 * included in all copies or substantial portions of the Software.
23 *
24 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
25 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
26 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
27 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
28 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
29 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
30 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 *
32 */
33
34namespace Gecode {
35
36 forceinline
37 IntValBranch::IntValBranch(Select s0)
38 : s(s0) {}
39
40 forceinline
41 IntValBranch::IntValBranch(Rnd r)
42 : ValBranch<IntVar>(r), s(SEL_RND) {}
43
44 forceinline
45 IntValBranch::IntValBranch(IntBranchVal v, IntBranchCommit c)
46 : ValBranch<IntVar>(v,c), s(SEL_VAL_COMMIT) {}
47
48 forceinline IntValBranch::Select
49 IntValBranch::select(void) const {
50 return s;
51 }
52
53
54 inline IntValBranch
55 INT_VAL_MIN(void) {
56 return IntValBranch(IntValBranch::SEL_MIN);
57 }
58
59 inline IntValBranch
60 INT_VAL_MED(void) {
61 return IntValBranch(IntValBranch::SEL_MED);
62 }
63
64 inline IntValBranch
65 INT_VAL_MAX(void) {
66 return IntValBranch(IntValBranch::SEL_MAX);
67 }
68
69 inline IntValBranch
70 INT_VAL_RND(Rnd r) {
71 return IntValBranch(r);
72 }
73
74 inline IntValBranch
75 INT_VAL_SPLIT_MIN(void) {
76 return IntValBranch(IntValBranch::SEL_SPLIT_MIN);
77 }
78
79 inline IntValBranch
80 INT_VAL_SPLIT_MAX(void) {
81 return IntValBranch(IntValBranch::SEL_SPLIT_MAX);
82 }
83
84 inline IntValBranch
85 INT_VAL_RANGE_MIN(void) {
86 return IntValBranch(IntValBranch::SEL_RANGE_MIN);
87 }
88
89 inline IntValBranch
90 INT_VAL_RANGE_MAX(void) {
91 return IntValBranch(IntValBranch::SEL_RANGE_MAX);
92 }
93
94 inline IntValBranch
95 INT_VAL(IntBranchVal v, IntBranchCommit c) {
96 return IntValBranch(v,c);
97 }
98
99 inline IntValBranch
100 INT_VALUES_MIN(void) {
101 return IntValBranch(IntValBranch::SEL_VALUES_MIN);
102 }
103
104 inline IntValBranch
105 INT_VALUES_MAX(void) {
106 return IntValBranch(IntValBranch::SEL_VALUES_MAX);
107 }
108
109
110
111 forceinline
112 BoolValBranch::BoolValBranch(Select s0)
113 : s(s0) {}
114
115 forceinline
116 BoolValBranch::BoolValBranch(Rnd r)
117 : ValBranch<BoolVar>(r), s(SEL_RND) {}
118
119 forceinline
120 BoolValBranch::BoolValBranch(BoolBranchVal v, BoolBranchCommit c)
121 : ValBranch<BoolVar>(v,c), s(SEL_VAL_COMMIT) {}
122
123 forceinline BoolValBranch::Select
124 BoolValBranch::select(void) const {
125 return s;
126 }
127
128
129 inline BoolValBranch
130 BOOL_VAL_MIN(void) {
131 return BoolValBranch(BoolValBranch::SEL_MIN);
132 }
133
134 inline BoolValBranch
135 BOOL_VAL_MAX(void) {
136 return BoolValBranch(BoolValBranch::SEL_MAX);
137 }
138
139 inline BoolValBranch
140 BOOL_VAL_RND(Rnd r) {
141 return BoolValBranch(r);
142 }
143
144 inline BoolValBranch
145 BOOL_VAL(BoolBranchVal v, BoolBranchCommit c) {
146 return BoolValBranch(v,c);
147 }
148
149}
150
151// STATISTICS: int-branch