43 namespace Gecode {
namespace Int {
namespace LDSB {
46 findVar(
int *indices,
unsigned int n_values,
unsigned int seq_size,
int index) {
49 for (
unsigned int i = 0 ;
i < n_values ;
i++) {
50 if (indices[
i] == index)
51 return std::pair<int,int>(seq,
pos);
53 if (pos == seq_size) {
58 return std::pair<int,int>(-1,-1);
64 using namespace Int::LDSB;
68 for (
int i = 0 ;
i < vars.
size() ;
i++)
69 a[
i] = vars[
i].varimp();
74 for (
int i = 0 ;
i < vars.
size() ;
i++)
75 a[
i] = vars[
i].varimp();
81 for (
int i = 0 ;
i < indices.
size() ;
i++)
82 xs[
i] = x[indices[
i]];
96 for (
int i = 0 ;
i < vars.
size() ;
i++)
97 a[
i] = vars[
i].varimp();
102 for (
int i = 0 ;
i < vars.
size() ;
i++)
103 a[
i] = vars[
i].varimp();
111 int n = (upper-lower+1)/2;
131 namespace Gecode {
namespace Int {
namespace LDSB {
156 int* indices = home.
alloc<
int>(
n);
157 for (
int i = 0 ;
i <
n ;
i++) {
158 VariableMap::const_iterator index = variableMap.find(varref->
xs[
i]);
159 if (index == variableMap.end())
161 indices[
i] = index->second;
167 int *vs = home.
alloc<
int>(
n);
176 int n = varseqref->
nxs;
177 int* indices = home.
alloc<
int>(
n);
178 for (
int i = 0 ;
i <
n ;
i++) {
179 VariableMap::const_iterator index =
180 variableMap.find(varseqref->
xs[
i]);
181 if (index == variableMap.end())
183 indices[
i] = index->second;
190 int *vs = home.
alloc<
int>(
n);
191 for (
unsigned int i = 0 ;
i <
n ;
i++)
213 int* indices = home.
alloc<
int>(
n);
214 for (
int i = 0 ;
i <
n ;
i++) {
215 VariableMap::const_iterator index = variableMap.find(varref->
xs[
i]);
216 if (index == variableMap.end())
218 indices[
i] = index->second;
224 int *vs = home.
alloc<
int>(
n);
233 int n = varseqref->
nxs;
234 int* indices = home.
alloc<
int>(
n);
235 for (
int i = 0 ;
i <
n ;
i++) {
236 VariableMap::const_iterator index =
237 variableMap.find(varseqref->
xs[
i]);
238 if (index == variableMap.end())
240 indices[
i] = index->second;
247 int *vs = home.
alloc<
int>(
n);
248 for (
unsigned int i = 0 ;
i <
n ;
i++)
260 using namespace Int::LDSB;
284 if (vals.
commit() != NULL)
292 for (
int i = 0 ;
i < x.
size() ;
i++)
293 variableMap[x[
i].varimp()] =
i;
300 for (
int i = 0 ;
i <
n ;
i++) {
317 vars.
a.expand(home,x);
321 vars.
b.expand(home,x);
325 vars.
c.expand(home,x);
329 vars.
d.expand(home,x);
331 return branch(home,x,vars.
a,vals,syms,bf,vvp);
336 for (
int i = 0 ;
i < x.
size() ;
i++)
337 variableMap[x[
i].varimp()] =
i;
344 for (
int i = 0 ;
i <
n ;
i++) {
363 if (vals.
commit() != NULL)
387 if (vals.
commit() != NULL)
411 if (vals.
commit() != NULL)
442 for (
int i = 0 ;
i < x.
size() ;
i++)
443 variableMap[x[
i].varimp()] =
i;
450 for (
int i = 0 ;
i <
n ;
i++) {
468 if (vals.
commit() != NULL)
488 vars.
a.expand(home,x);
492 vars.
b.expand(home,x);
496 vars.
c.expand(home,x);
500 vars.
d.expand(home,x);
502 return branch(home,x,vars.
a,vals,syms,bf,vvp);
507 for (
int i = 0 ;
i < x.
size() ;
i++)
508 variableMap[x[
i].varimp()] =
i;
515 for (
int i = 0 ;
i <
n ;
i++) {
533 if (vals.
commit() != NULL)
550 LDSBBrancher<BoolView,2,int,2>::post(home,xv,vs,vsc,array,n,bf,vvp);
557 LDSBBrancher<BoolView,3,int,2>::post(home,xv,vs,vsc,array,n,bf,vvp);
564 LDSBBrancher<BoolView,4,int,2>::post(home,xv,vs,vsc,array,n,bf,vvp);