fork
Configure Feed
Select the types of activity you want to include in your feed.
this repo has no description
fork
Configure Feed
Select the types of activity you want to include in your feed.
1/* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
2/*
3 * Main authors:
4 * Christian Schulte <schulte@gecode.org>
5 *
6 * Contributing authors:
7 * Samuel Gagnon <samuel.gagnon92@gmail.com>
8 *
9 * Copyright:
10 * Christian Schulte, 2002
11 * Samuel Gagnon, 2018
12 *
13 * This file is part of Gecode, the generic constraint
14 * development environment:
15 * http://www.gecode.org
16 *
17 * Permission is hereby granted, free of charge, to any person obtaining
18 * a copy of this software and associated documentation files (the
19 * "Software"), to deal in the Software without restriction, including
20 * without limitation the rights to use, copy, modify, merge, publish,
21 * distribute, sublicense, and/or sell copies of the Software, and to
22 * permit persons to whom the Software is furnished to do so, subject to
23 * the following conditions:
24 *
25 * The above copyright notice and this permission notice shall be
26 * included in all copies or substantial portions of the Software.
27 *
28 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
29 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
31 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
32 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
33 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
34 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
35 *
36 */
37
38namespace Gecode { namespace Int {
39
40 /*
41 * Constructors and initialization
42 *
43 */
44 forceinline
45 IntView::IntView(void) {}
46 forceinline
47 IntView::IntView(const IntVar& y)
48 : VarImpView<IntVar>(y.varimp()) {}
49 forceinline
50 IntView::IntView(IntVarImp* y)
51 : VarImpView<IntVar>(y) {}
52
53 /*
54 * Value access
55 *
56 */
57 forceinline int
58 IntView::min(void) const {
59 return x->min();
60 }
61 forceinline int
62 IntView::max(void) const {
63 return x->max();
64 }
65 forceinline int
66 IntView::med(void) const {
67 return x->med();
68 }
69 forceinline int
70 IntView::val(void) const {
71 return x->val();
72 }
73#ifdef GECODE_HAS_CBS
74 forceinline int
75 IntView::baseval(int val) const {
76 return val;
77 }
78#endif
79
80 forceinline unsigned int
81 IntView::size(void) const {
82 return x->size();
83 }
84 forceinline unsigned int
85 IntView::width(void) const {
86 return x->width();
87 }
88 forceinline unsigned int
89 IntView::regret_min(void) const {
90 return x->regret_min();
91 }
92 forceinline unsigned int
93 IntView::regret_max(void) const {
94 return x->regret_max();
95 }
96
97
98 /*
99 * Domain tests
100 *
101 */
102 forceinline bool
103 IntView::range(void) const {
104 return x->range();
105 }
106 forceinline bool
107 IntView::in(int n) const {
108 return x->in(n);
109 }
110 forceinline bool
111 IntView::in(long long int n) const {
112 return x->in(n);
113 }
114
115
116 /*
117 * Domain update by value
118 *
119 */
120 forceinline ModEvent
121 IntView::lq(Space& home, int n) {
122 return x->lq(home,n);
123 }
124 forceinline ModEvent
125 IntView::lq(Space& home, long long int n) {
126 return x->lq(home,n);
127 }
128
129 forceinline ModEvent
130 IntView::le(Space& home, int n) {
131 return x->lq(home,n-1);
132 }
133 forceinline ModEvent
134 IntView::le(Space& home, long long int n) {
135 return x->lq(home,n-1);
136 }
137
138 forceinline ModEvent
139 IntView::gq(Space& home, int n) {
140 return x->gq(home,n);
141 }
142 forceinline ModEvent
143 IntView::gq(Space& home, long long int n) {
144 return x->gq(home,n);
145 }
146
147 forceinline ModEvent
148 IntView::gr(Space& home, int n) {
149 return x->gq(home,n+1);
150 }
151 forceinline ModEvent
152 IntView::gr(Space& home, long long int n) {
153 return x->gq(home,n+1);
154 }
155
156 forceinline ModEvent
157 IntView::nq(Space& home, int n) {
158 return x->nq(home,n);
159 }
160 forceinline ModEvent
161 IntView::nq(Space& home, long long int n) {
162 return x->nq(home,n);
163 }
164
165 forceinline ModEvent
166 IntView::eq(Space& home, int n) {
167 return x->eq(home,n);
168 }
169 forceinline ModEvent
170 IntView::eq(Space& home, long long int n) {
171 return x->eq(home,n);
172 }
173
174
175 /*
176 * Iterator-based domain update
177 *
178 */
179 template<class I>
180 forceinline ModEvent
181 IntView::narrow_r(Space& home, I& i, bool depend) {
182 return x->narrow_r(home,i,depend);
183 }
184 template<class I>
185 forceinline ModEvent
186 IntView::inter_r(Space& home, I& i, bool depend) {
187 return x->inter_r(home,i,depend);
188 }
189 template<class I>
190 forceinline ModEvent
191 IntView::minus_r(Space& home, I& i, bool depend) {
192 return x->minus_r(home,i,depend);
193 }
194 template<class I>
195 forceinline ModEvent
196 IntView::narrow_v(Space& home, I& i, bool depend) {
197 return x->narrow_v(home,i,depend);
198 }
199 template<class I>
200 forceinline ModEvent
201 IntView::inter_v(Space& home, I& i, bool depend) {
202 return x->inter_v(home,i,depend);
203 }
204 template<class I>
205 forceinline ModEvent
206 IntView::minus_v(Space& home, I& i, bool depend) {
207 return x->minus_v(home,i,depend);
208 }
209
210
211
212
213 /*
214 * Delta information for advisors
215 *
216 */
217 forceinline int
218 IntView::min(const Delta& d) const {
219 return IntVarImp::min(d);
220 }
221 forceinline int
222 IntView::max(const Delta& d) const {
223 return IntVarImp::max(d);
224 }
225 forceinline unsigned int
226 IntView::width(const Delta& d) const {
227 return IntVarImp::width(d);
228 }
229 forceinline bool
230 IntView::any(const Delta& d) const {
231 return IntVarImp::any(d);
232 }
233
234
235 forceinline ModEventDelta
236 IntView::med(ModEvent me) {
237 return VarImpView<IntVar>::med(me);
238 }
239
240
241 /**
242 * \brief %Range iterator for integer variable views
243 * \ingroup TaskActorIntView
244 */
245 template<>
246 class ViewRanges<IntView> : public IntVarImpFwd {
247 public:
248 /// \name Constructors and initialization
249 //@{
250 /// Default constructor
251 ViewRanges(void);
252 /// Initialize with ranges for view \a x
253 ViewRanges(const IntView& x);
254 /// Initialize with ranges for view \a x
255 void init(const IntView& x);
256 //@}
257 };
258
259 forceinline
260 ViewRanges<IntView>::ViewRanges(void) {}
261
262 forceinline
263 ViewRanges<IntView>::ViewRanges(const IntView& x)
264 : IntVarImpFwd(x.varimp()) {}
265
266 forceinline void
267 ViewRanges<IntView>::init(const IntView& x) {
268 IntVarImpFwd::init(x.varimp());
269 }
270
271}}
272
273// STATISTICS: int-var
274