132 int size(
void)
const;
138 Var& operator [](
int i);
141 const Var& operator [](
int i)
const;
148 slice(
int start,
int inc=1,
int n=-1);
153 iterator begin(
void);
156 const_iterator begin(
void)
const;
160 const_iterator end(
void)
const;
162 reverse_iterator rbegin(
void);
164 const_reverse_iterator rbegin(
void)
const;
166 reverse_iterator rend(
void);
168 const_reverse_iterator rend(
void)
const;
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);
327 int size(
void)
const;
335 View& operator [](
int i);
338 const View& operator [](
int i)
const;
343 iterator begin(
void);
346 const_iterator begin(
void)
const;
350 const_iterator end(
void)
const;
352 reverse_iterator rbegin(
void);
354 const_reverse_iterator rbegin(
void)
const;
356 reverse_iterator rend(
void);
358 const_reverse_iterator rend(
void)
const;
394 void move_fst(
int i);
397 void move_lst(
int i);
426 void drop_fst(
int i);
429 void drop_lst(
int i);
473 bool same(
const Space& home,
const View& y)
const;
475 void unique(
const Space& home);
491 template<
class ViewY>
492 bool shared(
const Space& home,
const ViewY& y)
const;
498 template<
class ViewY>
503 static void*
operator new(size_t)
throw();
504 static void operator delete(
void*,size_t);
530 static const int onstack_size = 16;
532 T onstack[onstack_size];
542 A concat(
const T&
x)
const;
545 A& append(
const T&
x);
555 A slice(
int start,
int inc=1,
int n=-1);
592 template<
class InputIterator>
598 int size(
void)
const;
604 T& operator [](
int i);
607 const T& operator [](
int i)
const;
612 iterator begin(
void);
615 const_iterator begin(
void)
const;
619 const_iterator end(
void)
const;
621 reverse_iterator rbegin(
void);
623 const_reverse_iterator rbegin(
void)
const;
625 reverse_iterator rend(
void);
627 const_reverse_iterator rend(
void)
const;
636 static void*
operator new(size_t)
throw();
637 static void operator delete(
void*,size_t);
695 template<
class InputIterator>
706 slice(
int start,
int inc=1,
int n=-1);
715 operator <<(const PrimArgArray<T>&
x);
780 template<
class InputIterator>
781 ArgArray(InputIterator first, InputIterator last);
787 slice(
int start,
int inc=1,
int n=-1);
796 operator <<(const ArgArray<T>&
x);
850 bool operator ()(
const Var&,
const Var&);
867 template<
class InputIterator>
868 VarArgArray(InputIterator first, InputIterator last);
874 slice(
int start,
int inc=1,
int n=-1);
883 operator <<(const VarArgArray<Var>&
x);
924 template<
class Char,
class Traits,
class Var>
925 std::basic_ostream<Char,Traits>&
926 operator <<(std::basic_ostream<Char,Traits>& os,
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--;)
1077 x[
i].update(home, share, a.
x[
i]);
1086 for (
int i =
n;
i--;)
1107 for (
int i=x.
size();
i--;)
1109 for (
int i=y.
size();
i--;)
1118 for (
int i=x.
size();
i--;)
1120 for (
int i=y.
size();
i--;)
1129 for (
int i=x.
size();
i--;)
1131 for (
int i=y.
size();
i--;)
1140 for (
int i=x.
size();
i--;)
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>
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--; )
1392 x[
i].update(home, share, y.x[
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--;)
1436 template<
class View>
1442 template<
class View>
template<
class X>
1448 template<
class View>
1452 Support::quicksort<View,ViewLess<View> >(y,m,
vl);
1455 template<
class X,
class Y>
1460 template<
class X,
class Y>
1466 template<
class View>
1472 View* y = r.
alloc<View>(
n);
1473 for (
int i =
n;
i--; )
1476 for (
int i =
n-1;
i--; )
1485 template<
class View>
1490 for (
int i =
n;
i--; )
1496 template<
class View>
1503 for (
int i = 1;
i<
n;
i++)
1509 template<
class View>
1515 View* y = r.
alloc<View>(
n);
1516 for (
int i =
n;
i--; )
1519 for (
int i =
n-1;
i--; )
1528 template<
class View>
template<
class ViewY>
1533 for (
int i =
n;
i--; )
1539 template<
class View>
template<
class ViewY>
1542 if ((
size() < 1) || (y.
size() < 1))
1546 for (
int i=
size();
i--; )
1549 Support::quicksort<View,ViewLess<View> >(xs,
size(),xvl);
1551 for (
int j=y.
size(); j--; )
1553 ViewLess<ViewY> yvl;
1554 Support::quicksort<ViewY,ViewLess<ViewY> >(ys,y.
size(),yvl);
1557 while ((i <
size()) && (j < y.
size()))
1562 }
else if (
before(
x[i],y[j])) {
1573 template<
class View>
1579 template<
class View>
1593 return (n > onstack_size) ?
1594 heap.
alloc<T>(
static_cast<unsigned int>(
n)) : &onstack[0];
1601 assert(
n+i >= onstack_size);
1603 if (newCapacity <=
n+i)
1605 T* newA = allocate(newCapacity);
1617 :
n(0),
capacity(onstack_size), a(allocate(0)) {}
1622 :
n(n0),
capacity(
n < onstack_size ? onstack_size :
n), a(allocate(
n)) {}
1627 :
n(aa.
n),
capacity(
n < onstack_size ? onstack_size :
n), a(allocate(
n)) {
1634 :
n(static_cast<int>(aa.
size())),
1635 capacity(
n < onstack_size ? onstack_size :
n), a(allocate(
n)) {
1653 capacity = (
n < onstack_size ? onstack_size :
n);
1669 assert((i>=0) && (i <
n));
1676 assert((i>=0) && (i <
n));
1728 template<
class T>
template<
class A>
1731 assert(
n==0 || start <
n);
1738 s = (
n-start)/inc + ((
n-start) % inc == 0 ? 0 : 1);
1740 s = (start+1)/-inc + ((start+1) % -inc == 0 ? 0 : 1);
1742 for (
int i=0;
i<r.
size();
i++, start+=inc)
1743 new (&r[
i]) T(a[start]);
1747 template<
class T>
template<
class A>
1752 return static_cast<A&
>(*this);
1756 template<
class InputIterator>
1759 :
n(0),
capacity(onstack_size), a(allocate(0)) {
1760 while (first != last) {
1767 template<
class T>
template<
class A>
1771 for (
int i=0;
i<x.
size();
i++)
1772 new (&a[
n++]) T(x[
i]);
1773 return static_cast<A&
>(*this);
1776 template<
class T>
template<
class A>
1781 new (&r[
i]) T(a[i]);
1782 for (
int i=x.
n; i--;)
1783 new (&r[
n+
i]) T(x.
a[i]);
1787 template<
class T>
template<
class A>
1792 new (&r[
i]) T(a[i]);
1827 for (
int i = 1;
i <
n;
i++)
1828 a[
i] = va_arg(args,T);
1835 for (
int i=n;
i--; )
1850 template<
class InputIterator>
1882 return x.template concat
1889 return x.template concat
1917 for (
int i=n;
i--; )
1932 template<
class InputIterator>
1964 return x.template concat
1971 return x.template concat
1980 return xa.template concat
2008 template<
class InputIterator>
2017 for (
int i=x.
size();
i--; )
2048 return x.template concat
2055 return x.template concat
2064 return xa.template concat
2071 return a.varimp() < b.varimp();
2077 for (
int i =
n;
i--;)
2090 for (
int i =
n;
i--; )
2093 Support::quicksort<Var,VarLess>(y,
n,
vl);
2094 for (
int i = n-1;
i--; )
2095 if (!y[
i].
assigned() && (y[
i+1].varimp() == y[
i].varimp())) {
2111 for (
int i =
n;
i--; )
2113 for (
int i = y.
n;
i--; )
2116 Support::quicksort<Var,VarLess>(z,m,
vl);
2117 for (
int i = m-1;
i--; )
2118 if (!z[
i].
assigned() && (z[
i+1].varimp() == z[
i].varimp())) {
2131 for (
int i =
n;
i--; )
2132 if (a[
i].varimp() == y.varimp())
2165 template<
class Char,
class Traits,
class Var>
2166 std::basic_ostream<Char,Traits>&
2167 operator <<(std::basic_ostream<Char,Traits>& os,
2169 std::basic_ostringstream<Char,Traits> s;
2170 s.copyfmt(os); s.width(0);
2174 for (
int i=1;
i<x.
size();
i++)
2178 return os << s.str();
2181 template<
class Char,
class Traits,
class View>
2182 std::basic_ostream<Char,Traits>&
2183 operator <<(std::basic_ostream<Char,Traits>& os,
2185 std::basic_ostringstream<Char,Traits> s;
2186 s.copyfmt(os); s.width(0);
2190 for (
int i=1;
i<x.
size();
i++)
2194 return os << s.str();
2197 template<
class Char,
class Traits,
class T>
2198 std::basic_ostream<Char,Traits>&
2199 operator <<(std::basic_ostream<Char,Traits>& os,
2201 std::basic_ostringstream<Char,Traits> s;
2202 s.copyfmt(os); s.width(0);
2206 for (
int i=1;
i<x.
size();
i++)
2210 return os << s.str();
int capacity
Allocated size of the array.
static T * copy(T *d, const T *s, long unsigned int n)
Copy n objects starting at s to d.
const T * const_iterator
Type of the iterator used to iterate read-only through this array's elements.
int size(void) const
Return size of array (number of elements)
int size(void) const
Return size of array (number of elements)
Argument array for primtive types.
bool __shared(const X &x, const Y &y)
void cancel(Space &home, Propagator &p, IntSet &y)
T * alloc(long unsigned int n)
Allocate block of n objects of type T from region.
Var * iterator
Type of the iterator used to iterate through this array's elements.
std::reverse_iterator< const T * > const_reverse_iterator
Type of the iterator used to iterate backwards and read-only through this array's elements...
Var & reference
Type of a reference to the value type.
Base-class for propagators.
Var * pointer
Type of a pointer to the value type.
std::basic_ostream< Char, Traits > & operator<<(std::basic_ostream< Char, Traits > &os, const ArgArrayBase< T > &x)
T * iterator
Type of the iterator used to iterate through this array's elements.
const View & const_reference
Type of a constant reference to the value type.
View * iterator
Type of the iterator used to iterate through this array's elements.
bool shared(const IntSet &, VX)
Heap heap
The single global heap.
T * alloc(long unsigned int n)
Allocate block of n objects of type T from space heap.
View * pointer
Type of a pointer to the value type.
const Var & const_reference
Type of a constant reference to the value type.
void sort(TaskViewArray< TaskView > &t)
Sort task view array t according to sto and inc (increasing or decreasing)
bool same(const ConstView< ViewA > &, const ConstView< ViewB > &)
Test whether two views are the same.
int p
Number of positive literals for node type.
std::reverse_iterator< const Var * > const_reverse_iterator
Type of the iterator used to iterate backwards and read-only through this array's elements...
T * alloc(long unsigned int n)
Allocate block of n objects of type T from heap.
const FloatNum min
Smallest allowed float value.
Gecode::IntArgs i(4, 1, 2, 3, 4)
int n
Number of negative literals for node type.
Argument array for non-primitive types.
Var * x
Array of variables.
const View * const_pointer
Type of a read-only pointer to the value type.
FloatVal operator+(const FloatVal &x)
int PropCond
Type for propagation conditions.
void subscribe(Space &home, Propagator &p, IntSet &y)
ArrayTraits< VarArgArray< Var > >::ArgsType operator+(const Var &x, const VarArgArray< Var > &y)
unsigned int size(I &i)
Size of all ranges of range iterator i.
ViewArray(Region &r, const VarArgArray< Var > &a)
Initialize from variable argument array a (copy elements)
VarArray(void)
Default constructor (array of size 0)
struct Gecode::@519::NNF::@60::@62 a
For atomic nodes.
T & reference
Type of a reference to the value type.
bool __before(const View &x, const View &y)
int n
Number of variables (size)
bool __same(const X &x, const Y &y)
Boolean integer variables.
bool before(const Item &i, const Item &j)
Test whether one item is before another.
struct Gecode::@519::NNF::@60::@61 b
For binary nodes (and, or, eqv)
T * pointer
Type of a pointer to the value type.
View & reference
Type of a reference to the value type.
Base class for variables.
void free(T *b, long unsigned int n)
Delete n objects starting at b.
Node * x
Pointer to corresponding Boolean expression node.
Base-class for argument arrays.
bool assigned(View x, int v)
Whether x is assigned to value v.
bool same(const Item &i, const Item &j)
Whether two items are the same.
void free(T *b, long unsigned int n)
Delete n objects allocated from the region starting at b.
const Var * const_pointer
Type of a read-only pointer to the value type.
Archive & operator<<(Archive &e, FloatNumBranch nl)
bool shared(const ConstView< ViewA > &, const ConstView< ViewB > &)
Test whether views share same variable.
Sort order for variables.
Traits of arrays in Gecode.
const T & const_reference
Type of a constant reference to the value type.
Gecode toplevel namespace
Argument array for variables.
const int capacity[n_warehouses]
Capacity of a single warehouse.
std::reverse_iterator< const View * > const_reverse_iterator
Type of the iterator used to iterate backwards and read-only through this array's elements...
ViewArray(Space &home, const VarArgArray< Var > &a)
Initialize from variable argument array a (copy elements)
std::reverse_iterator< T * > reverse_iterator
Type of the iterator used to iterate backwards through this array's elements.
const Var * const_iterator
Type of the iterator used to iterate read-only through this array's elements.
View value_type
Type of the view stored in this array.
int size(void) const
Return size of array (number of elements)
const View * const_iterator
Type of the iterator used to iterate read-only through this array's elements.
std::reverse_iterator< View * > reverse_iterator
Type of the iterator used to iterate backwards through this array's elements.
const T * const_pointer
Type of a read-only pointer to the value type.
std::reverse_iterator< Var * > reverse_iterator
Type of the iterator used to iterate backwards through this array's elements.