Go to the documentation of this file.
132 int size(
void)
const;
148 slice(
int start,
int inc=1,
int n=-1);
186 static void*
operator new(size_t)
throw();
187 static void operator delete(
void*,size_t);
244 bool operator ()(
const X&,
const X&);
247 static void sort(View*
x,
int n);
316 x =
r.alloc<View>(
n);
327 int size(
void)
const;
476 bool same(
const Space& home,
const View&
y)
const;
494 template<
class ViewY>
501 template<
class ViewY>
506 static void*
operator new(size_t)
throw();
507 static void operator delete(
void*,size_t);
558 A
slice(
int start,
int inc=1,
int n=-1);
595 template<
class InputIterator>
601 int size(
void)
const;
695 template<
class InputIterator>
706 slice(
int start,
int inc=1,
int n=-1);
780 template<
class InputIterator>
781 ArgArray(InputIterator first, InputIterator last);
787 slice(
int start,
int inc=1,
int n=-1);
867 template<
class InputIterator>
868 VarArgArray(InputIterator first, InputIterator last);
874 slice(
int start,
int inc=1,
int n=-1);
924 template<
class Char,
class Traits,
class Var>
925 std::basic_ostream<Char,Traits>&
933 template<
class Char,
class Traits,
class View>
934 std::basic_ostream<Char,Traits>&
941 template<
class Char,
class Traits,
class T>
942 std::basic_ostream<Char,Traits>&
992 assert((
i >= 0) && (
i <
size()));
999 assert((
i >= 0) && (
i <
size()));
1006 assert(
n==0 || start <
n);
1013 s = (
n-start)/inc + ((
n-start) % inc == 0 ? 0 : 1);
1015 s = (start+1)/-inc + ((start+1) % -inc == 0 ? 0 : 1);
1017 for (
int i=0;
i<
r.size();
i++, start+=inc)
1076 for (
int i =
n;
i--;)
1086 for (
int i =
n;
i--;)
1100 VarArray<Var>::operator
delete(
void*,size_t) {
1104 typename ArrayTraits<VarArray<Var> >::ArgsType
1107 for (
int i=
x.size();
i--;)
1109 for (
int i=
y.size();
i--;)
1110 r[
x.size()+
i] =
y[
i];
1115 typename ArrayTraits<VarArray<Var> >::ArgsType
1118 for (
int i=
x.size();
i--;)
1120 for (
int i=
y.size();
i--;)
1121 r[
x.size()+
i] =
y[
i];
1126 typename ArrayTraits<VarArray<Var> >::ArgsType
1129 for (
int i=
x.size();
i--;)
1131 for (
int i=
y.size();
i--;)
1132 r[
x.size()+
i] =
y[
i];
1137 typename ArrayTraits<VarArray<Var> >::ArgsType
1140 for (
int i=
x.size();
i--;)
1147 typename ArrayTraits<VarArray<Var> >::ArgsType
1151 for (
int i=
y.size();
i--;)
1161 template<
class View>
1165 template<
class View>
1169 x = (
n>0) ? home.
alloc<View>(
n) : NULL;
1171 template<
class View>
1175 x = (
n>0) ?
r.alloc<View>(
n) : NULL;
1178 template<
class View>
1183 for (
int i =
n;
i--; )
1189 template<
class View>
1193 x =
r.alloc<View>(
n);
1194 for (
int i =
n;
i--; )
1201 template<
class View>
1206 template<
class View>
1213 template<
class View>
1219 template<
class View>
1225 template<
class View>
1228 assert((
i >= 0) && (
i <
size()));
1232 template<
class View>
1235 assert((
i >= 0) && (
i <
size()));
1239 template<
class View>
1245 template<
class View>
1251 template<
class View>
1257 template<
class View>
1263 template<
class View>
1269 template<
class View>
1275 template<
class View>
1281 template<
class View>
1287 template<
class View>
1290 x[
i]=
x[0];
x++;
n--;
1293 template<
class View>
1299 template<
class View>
1306 template<
class View>
1313 template<
class View>
1317 x[
i].cancel(home,
p,pc);
1318 x[
i]=
x[0];
x++;
n--;
1321 template<
class View>
1325 x[
i].cancel(home,
p,pc);
1329 template<
class View>
1334 for (
int j=
i; j--; )
1339 template<
class View>
1344 for (
int j=
i+1; j<
n; j++)
1349 template<
class View>
1353 x[
i].cancel(home,
a);
1354 x[
i]=
x[0];
x++;
n--;
1357 template<
class View>
1361 x[
i].cancel(home,
a);
1365 template<
class View>
1370 for (
int j=
i; j--; )
1375 template<
class View>
1380 for (
int j=
i+1; j<
n; j++)
1385 template<
class View>
1391 for (
int i =
n;
i--; )
1398 template<
class View>
1402 for (
int i =
n;
i--; )
1406 template<
class View>
1409 for (
int i =
n;
i--; )
1413 template<
class View>
1416 for (
int i =
n;
i--; )
1420 template<
class View>
1423 for (
int i =
n;
i--; )
1427 template<
class View>
1430 for (
int i =
n;
i--; )
1434 template<
class View>
1437 for (
int i =
n;
i--;)
1443 template<
class View>
1449 template<
class View>
template<
class X>
1451 ViewArray<View>::ViewLess<X>::operator ()(
const X&
a,
const X&
b) {
1455 template<
class View>
1459 Support::quicksort<View,ViewLess<View> >(
y,m,
vl);
1462 template<
class X,
class Y>
1467 template<
class X,
class Y>
1473 template<
class View>
1479 View*
y =
r.alloc<View>(
n);
1480 for (
int i =
n;
i--; )
1483 for (
int i =
n-1;
i--; )
1492 template<
class View>
1497 for (
int i =
n;
i--; )
1503 template<
class View>
1510 for (
int i = 1;
i<
n;
i++)
1516 template<
class View>
1522 View*
y =
r.alloc<View>(
n);
1523 for (
int i =
n;
i--; )
1526 for (
int i =
n-1;
i--; )
1535 template<
class View>
template<
class ViewY>
1540 for (
int i =
n;
i--; )
1546 template<
class View>
template<
class ViewY>
1549 if ((
size() < 1) || (
y.size() < 1))
1552 View* xs =
r.alloc<View>(
size());
1553 for (
int i=
size();
i--; )
1556 Support::quicksort<View,ViewLess<View> >(xs,
size(),xvl);
1557 ViewY* ys =
r.alloc<ViewY>(
y.size());
1558 for (
int j=
y.size(); j--; )
1560 ViewLess<ViewY> yvl;
1561 Support::quicksort<ViewY,ViewLess<ViewY> >(ys,
y.size(),yvl);
1564 while ((
i <
size()) && (j <
y.size()))
1566 r.free<View>(xs,
size());
1567 r.free<ViewY>(ys,
y.size());
1575 r.free<View>(xs,
size());
1576 r.free<ViewY>(ys,
y.size());
1580 template<
class View>
1586 template<
class View>
1588 ViewArray<View>::operator
delete(
void*,size_t) {
1600 return (
n > onstack_size) ?
1601 heap.
alloc<T>(
static_cast<unsigned int>(
n)) : &onstack[0];
1608 assert(
n+
i >= onstack_size);
1610 if (newCapacity <=
n+
i)
1612 T* newA = allocate(newCapacity);
1624 :
n(0),
capacity(onstack_size),
a(allocate(0)) {}
1629 :
n(n0),
capacity(
n < onstack_size ? onstack_size :
n),
a(allocate(
n)) {}
1634 :
n(aa.
n),
capacity(
n < onstack_size ? onstack_size :
n),
a(allocate(
n)) {
1641 :
n(static_cast<int>(aa.
size())),
1642 capacity(
n < onstack_size ? onstack_size :
n),
a(allocate(
n)) {
1660 capacity = (
n < onstack_size ? onstack_size :
n);
1676 assert((
i>=0) && (
i <
n));
1683 assert((
i>=0) && (
i <
n));
1735 template<
class T>
template<
class A>
1738 assert(
n==0 || start <
n);
1745 s = (
n-start)/inc + ((
n-start) % inc == 0 ? 0 : 1);
1747 s = (start+1)/-inc + ((start+1) % -inc == 0 ? 0 : 1);
1749 for (
int i=0;
i<
r.size();
i++, start+=inc)
1750 new (&
r[
i]) T(
a[start]);
1754 template<
class T>
template<
class A>
1759 return static_cast<A&
>(*this);
1763 template<
class InputIterator>
1766 :
n(0),
capacity(onstack_size),
a(allocate(0)) {
1767 while (first != last) {
1774 template<
class T>
template<
class A>
1778 for (
int i=0;
i<
x.size();
i++)
1779 new (&
a[
n++]) T(
x[
i]);
1780 return static_cast<A&
>(*this);
1783 template<
class T>
template<
class A>
1788 new (&
r[
i]) T(
a[
i]);
1789 for (
int i=
x.n;
i--;)
1790 new (&
r[
n+
i]) T(
x.a[
i]);
1794 template<
class T>
template<
class A>
1799 new (&
r[
i]) T(
a[
i]);
1823 for (
int i = 1;
i <
n;
i++)
1824 a[
i] = va_arg(args,T);
1831 for (
int i=
n;
i--; )
1846 template<
class InputIterator>
1878 return x.template concat
1883 typename ArrayTraits<PrimArgArray<T> >::ArgsType
1885 return x.template concat
1890 typename ArrayTraits<PrimArgArray<T> >::ArgsType
1913 for (
int i=
n;
i--; )
1928 template<
class InputIterator>
1960 return x.template concat
1965 typename ArrayTraits<ArgArray<T> >::ArgsType
1967 return x.template concat
1972 typename ArrayTraits<ArgArray<T> >::ArgsType
1976 return xa.template concat
2004 template<
class InputIterator>
2013 for (
int i=
x.size();
i--; )
2044 return x.template concat
2049 typename ArrayTraits<VarArgArray<Var> >::ArgsType
2051 return x.template concat
2056 typename ArrayTraits<VarArgArray<Var> >::ArgsType
2060 return xa.template concat
2067 return a.varimp() <
b.varimp();
2073 for (
int i =
n;
i--;)
2086 for (
int i =
n;
i--; )
2089 Support::quicksort<Var,VarLess>(
y,
n,
vl);
2090 for (
int i =
n-1;
i--; )
2107 for (
int i =
n;
i--; )
2109 for (
int i =
y.n;
i--; )
2112 Support::quicksort<Var,VarLess>(
z,m,
vl);
2113 for (
int i = m-1;
i--; )
2127 for (
int i =
n;
i--; )
2161 template<
class Char,
class Traits,
class Var>
2162 std::basic_ostream<Char,Traits>&
2165 std::basic_ostringstream<Char,Traits> s;
2166 s.copyfmt(os); s.width(0);
2170 for (
int i=1;
i<
x.size();
i++)
2174 return os << s.str();
2177 template<
class Char,
class Traits,
class View>
2178 std::basic_ostream<Char,Traits>&
2181 std::basic_ostringstream<Char,Traits> s;
2182 s.copyfmt(os); s.width(0);
2186 for (
int i=1;
i<
x.size();
i++)
2190 return os << s.str();
2193 template<
class Char,
class Traits,
class T>
2194 std::basic_ostream<Char,Traits>&
2197 std::basic_ostringstream<Char,Traits> s;
2198 s.copyfmt(os); s.width(0);
2202 for (
int i=1;
i<
x.size();
i++)
2206 return os << s.str();
iterator end(void)
Return an iterator past the end of the array.
T * pointer
Type of a pointer to the value type.
Var & operator[](int i)
Return variable at position i.
Post propagator for SetVar x
static T * copy(T *d, const T *s, long unsigned int n)
Copy n objects starting at s to d.
bool same(const OffsetView &x, const OffsetView &y)
Test whether views x and y are the same.
~ArgArrayBase(void)
Destructor.
Post propagator for SetVar SetOpType SetVar y
const typedef View * const_iterator
Type of the iterator used to iterate read-only through this array's elements.
void resize(int i)
Resize to hold at least i additional elements.
Var * pointer
Type of a pointer to the value type.
void update(Space &, bool share, ViewArray< View > &a)
Update array to be a clone of array a.
void subscribe(Space &home, Propagator &p, PropCond pc, bool schedule=true)
Subscribe propagator p with propagation condition pc to variable.
const typedef Var * const_iterator
Type of the iterator used to iterate read-only through this array's elements.
bool operator()(const Var &, const Var &)
iterator end(void)
Return an iterator past the end of the array.
Argument array for primtive types.
const VarArray< Var > & operator=(const VarArray< Var > &a)
Initialize from variable array a (share elements)
unsigned int size(I &i)
Size of all ranges of range iterator i.
ArgArray(void)
Allocate empty array.
bool same(const Space &home) const
Test whether array contains same variable multiply.
void update(const NoOffset &)
Integer-precision integer scale view.
const typedef T * const_pointer
Type of a read-only pointer to the value type.
bool assigned(View x, int v)
Whether x is assigned to value v.
T value_type
Type of the view stored in this array.
void update(Space &, bool share, VarArray< Var > &a)
Update array to be a clone of array a.
Post propagator for SetVar SetOpType SetVar SetRelType SetVar z
Gecode::IntArgs i(4, 1, 2, 3, 4)
bool assigned(void) const
Test if all variables are assigned.
bool same(const Item &i, const Item &j)
Whether two items are the same.
const typedef Var * const_pointer
Type of a read-only pointer to the value type.
const FloatNum min
Smallest allowed float value.
Var value_type
Type of the variable stored in this array.
reverse_iterator rend(void)
Return a reverse iterator past the beginning of the array.
std::reverse_iterator< View * > reverse_iterator
Type of the iterator used to iterate backwards through this array's elements.
iterator end(void)
Return an iterator past the end of the array.
iterator begin(void)
Return an iterator at the beginning of the array.
ArrayTraits< ArgArray< T > >::ArgsType slice(int start, int inc=1, int n=-1)
Return slice of length n such that forall , .
FloatVal operator+(const FloatVal &x)
Var * x
Array of variables.
Sort order for variables.
bool assigned(void) const
Test whether view is assigned.
static const int onstack_size
How many elements are possible inside array.
const typedef View & const_reference
Type of a constant reference to the value type.
bool __before(const View &x, const View &y)
View * pointer
Type of a pointer to the value type.
T * alloc(long unsigned int n)
Allocate block of n objects of type T from heap.
T * allocate(int n)
Allocate memory for n elements.
int size(void) const
Return size of array (number of elements)
bool __same(const X &x, const Y &y)
void move_fst(int i)
Move view from position 0 to position i (shift elements to the left)
bool assigned(void) const
Test if all variables are assigned.
View & reference
Type of a reference to the value type.
Var * iterator
Type of the iterator used to iterate through this array's elements.
Base class for variables.
Gecode toplevel namespace
int capacity
Allocated size of the array.
Base-class for propagators.
VarImp * x
Pointer to variable implementation.
Var & reference
Type of a reference to the value type.
reverse_iterator rend(void)
Return a reverse iterator past the beginning of the array.
std::basic_ostream< Char, Traits > & operator<<(std::basic_ostream< Char, Traits > &os, const ArgArrayBase< T > &x)
std::basic_ostream< Char, Traits > & operator<<(std::basic_ostream< Char, Traits > &os, const FloatView &x)
Print float variable view.
int n
Number of variables (size)
Node * x
Pointer to corresponding Boolean expression node.
void reschedule(Space &home, Propagator &p, IntSet &y)
PrimArgArray(void)
Allocate empty array.
Argument array for non-primitive types.
VarImp * varimp(void) const
Return variable implementation of variable.
bool shared(const Space &home) const
Test whether array contains shared views.
struct Gecode::@579::NNF::@61::@63 a
For atomic nodes.
A & append(const T &x)
Insert a new element x at the end of the array (increase size by 1)
View * iterator
Type of the iterator used to iterate through this array's elements.
struct Gecode::@579::NNF::@61::@62 b
For binary nodes (and, or, eqv)
T & operator[](int i)
Return element at position i.
ArrayTraits< VarArgArray< Var > >::ArgsType slice(int start, int inc=1, int n=-1)
Return slice of length n such that forall , .
const typedef T & const_reference
Type of a constant reference to the value type.
Post propagator for SetVar SetOpType SetVar SetRelType r
Boolean integer variables.
reverse_iterator rbegin(void)
Return a reverse iterator at the end of the array.
T * alloc(long unsigned int n)
Allocate block of n objects of type T from space heap.
std::reverse_iterator< T * > reverse_iterator
Type of the iterator used to iterate backwards through this array's elements.
FloatVal operator+(const FloatVal &x)
Arithmetic operator.
void cancel(Space &home, Propagator &p, PropCond pc)
Cancel subscription of propagator p with propagation condition pc to all views.
void sort(TaskViewArray< TaskView > &t)
Sort task view array t according to sto and inc (increasing or decreasing)
const ArgArrayBase< T > & operator=(const ArgArrayBase< T > &a)
Initialize from view array a (copy elements)
std::reverse_iterator< const Var * > const_reverse_iterator
Type of the iterator used to iterate backwards and read-only through this array's elements.
std::reverse_iterator< const View * > const_reverse_iterator
Type of the iterator used to iterate backwards and read-only through this array's elements.
const typedef T * const_iterator
Type of the iterator used to iterate read-only through this array's elements.
const int capacity[n_warehouses]
Capacity of a single warehouse.
void move_lst(int i)
Move view from position size()-1 to position i (truncate array by one)
Base-class for argument arrays.
bool assigned(void) const
Test if all variables are assigned.
A concat(const ArgArrayBase< T > &x) const
Return this array concatenated with x.
const ViewArray< View > & operator=(const ViewArray< View > &a)
Initialize from view array a (share elements)
bool shared(const ConstView< ViewA > &, const ConstView< ViewB > &)
Test whether views share same variable.
void drop_fst(int i)
Drop views from positions 0 to i-1 from array.
reverse_iterator rbegin(void)
Return a reverse iterator at the end of the array.
Heap heap
The single global heap.
A slice(int start, int inc=1, int n=-1)
reverse_iterator rbegin(void)
Return a reverse iterator at the end of the array.
ViewArray(void)
Default constructor (array of size 0)
VarArgArray(void)
Allocate empty array.
int PropCond
Type for propagation conditions.
VarArray(void)
Default constructor (array of size 0)
const typedef Var & const_reference
Type of a constant reference to the value type.
T * iterator
Type of the iterator used to iterate through this array's elements.
void cancel(Space &home, Propagator &p, IntSet &y)
void drop_lst(int i)
Drop views from positions i+1 to size()-1 from array.
int size(void) const
Return size of array (number of elements)
ViewArray(Space &home, const VarArgArray< Var > &a)
Initialize from variable argument array a (copy elements)
bool before(const OffsetView &x, const OffsetView &y)
Test whether view x comes before y (arbitrary order)
bool shared(const IntSet &, VX)
ArrayTraits< PrimArgArray< T > >::ArgsType & operator<<(const T &x)
Insert a new element x at the end of the array (increase size by 1)
void free(T *b, long unsigned int n)
Delete n objects starting at b.
std::reverse_iterator< Var * > reverse_iterator
Type of the iterator used to iterate backwards through this array's elements.
ArrayTraits< VarArgArray< Var > >::ArgsType slice(int start, int inc=1, int n=-1)
int size(void) const
Return size of array (number of elements)
Traits of arrays in Gecode.
iterator begin(void)
Return an iterator at the beginning of the array.
ArrayTraits< PrimArgArray< T > >::ArgsType slice(int start, int inc=1, int n=-1)
void unique(const Space &home)
Remove all duplicate views from array (changes element order)
reverse_iterator rend(void)
Return a reverse iterator past the beginning of the array.
std::reverse_iterator< const T * > const_reverse_iterator
Type of the iterator used to iterate backwards and read-only through this array's elements.
ArrayTraits< VarArgArray< Var > >::ArgsType & operator<<(const Var &x)
Insert a new element x at the end of the array (increase size by 1)
ViewArray(Region &r, const VarArgArray< Var > &a)
Initialize from variable argument array a (copy elements)
View value_type
Type of the view stored in this array.
bool __shared(const X &x, const Y &y)
const unsigned int slice
Size of a slice in a portfolio and scale factor for restarts(in number of failures)
void subscribe(Space &home, Propagator &p, IntSet &y)
int n
Number of negative literals for node type.
ArrayTraits< ArgArray< T > >::ArgsType & operator<<(const T &x)
Insert a new element x at the end of the array (increase size by 1)
T onstack[onstack_size]
In-array storage for elements.
Argument array for variables.
bool same(const Space &home) const
Test whether array has multiple occurence of the same view.
T & reference
Type of a reference to the value type.
void reschedule(Space &home, Propagator &p, PropCond pc)
Re-schedule propagator p with propagation condition pc.
int p
Number of positive literals for node type.
View & operator[](int i)
Return view at position i.
ArgArrayBase(void)
Allocate empty array.
Archive & operator<<(Archive &e, FloatNumBranch nl)
iterator begin(void)
Return an iterator at the beginning of the array.
const typedef View * const_pointer
Type of a read-only pointer to the value type.