132 int size(
void)
const;
147 slice(
int start,
int inc=1,
int n=-1);
185 static void*
operator new(size_t);
186 static void operator delete(
void*,size_t);
243 bool operator ()(
const X&,
const X&);
246 static void sort(View* x,
int n);
297 x = home.
alloc<View>(n);
315 x = r.
alloc<View>(n);
327 int size(
void)
const;
472 bool same(
const Space& home,
const View& y)
const;
490 template<
class ViewY>
491 bool shared(
const Space& home,
const ViewY& y)
const;
497 template<
class ViewY>
502 static void*
operator new(size_t);
503 static void operator delete(
void*,size_t);
541 A
concat(
const T& x)
const;
554 A
slice(
int start,
int inc=1,
int n=-1);
593 int size(
void)
const;
630 static void*
operator new(size_t);
631 static void operator delete(
void*,size_t);
695 slice(
int start,
int inc=1,
int n=-1);
704 operator <<(const PrimArgArray<T>& x);
771 slice(
int start,
int inc=1,
int n=-1);
780 operator <<(const ArgArray<T>& x);
853 slice(
int start,
int inc=1,
int n=-1);
862 operator <<(const VarArgArray<Var>& x);
903 template<
class Char,
class Traits,
class Var>
904 std::basic_ostream<Char,Traits>&
905 operator <<(std::basic_ostream<Char,Traits>& os,
912 template<
class Char,
class Traits,
class View>
913 std::basic_ostream<Char,Traits>&
914 operator <<(std::basic_ostream<Char,Traits>& os,
const ViewArray<View>& x);
920 template<
class Char,
class Traits,
class T>
921 std::basic_ostream<Char,Traits>&
922 operator <<(std::basic_ostream<Char,Traits>& os,
const ArgArrayBase<T>& x);
974 assert((i >= 0) && (i <
size()));
981 assert((i >= 0) && (i <
size()));
988 assert(n==0 || start < n);
995 s = (n-start)/inc + ((n-start) % inc == 0 ? 0 : 1);
997 s = (start+1)/-inc + ((start+1) % -inc == 0 ? 0 : 1);
999 for (
int i=0;
i<r.size();
i++, start+=inc)
1058 for (
int i = n;
i--;)
1059 x[
i].update(home, share, a.
x[
i]);
1068 for (
int i = n;
i--;)
1082 VarArray<Var>::operator
delete(
void*,size_t) {
1086 typename ArrayTraits<VarArray<Var> >::ArgsType
1089 for (
int i=x.
size();
i--;)
1091 for (
int i=y.
size();
i--;)
1097 typename ArrayTraits<VarArray<Var> >::ArgsType
1100 for (
int i=x.
size();
i--;)
1102 for (
int i=y.
size();
i--;)
1108 typename ArrayTraits<VarArray<Var> >::ArgsType
1111 for (
int i=x.
size();
i--;)
1113 for (
int i=y.
size();
i--;)
1119 typename ArrayTraits<VarArray<Var> >::ArgsType
1122 for (
int i=x.
size();
i--;)
1129 typename ArrayTraits<VarArray<Var> >::ArgsType
1133 for (
int i=y.
size();
i--;)
1143 template<
class View>
1147 template<
class View>
1151 x = (n>0) ? home.
alloc<View>(n) : NULL;
1153 template<
class View>
1157 x = (n>0) ? r.
alloc<View>(n) : NULL;
1160 template<
class View>
1164 x = home.
alloc<View>(n);
1165 for (
int i = n;
i--; )
1171 template<
class View>
1175 x = r.
alloc<View>(n);
1176 for (
int i = n;
i--; )
1183 template<
class View>
1188 template<
class View>
1195 template<
class View>
1201 template<
class View>
1207 template<
class View>
1210 assert((i >= 0) && (i <
size()));
1214 template<
class View>
1217 assert((i >= 0) && (i <
size()));
1221 template<
class View>
1227 template<
class View>
1233 template<
class View>
1239 template<
class View>
1245 template<
class View>
1251 template<
class View>
1257 template<
class View>
1263 template<
class View>
1269 template<
class View>
1272 x[
i]=x[0]; x++; n--;
1275 template<
class View>
1281 template<
class View>
1288 template<
class View>
1295 template<
class View>
1299 x[
i].cancel(home,p,pc);
1300 x[
i]=x[0]; x++; n--;
1303 template<
class View>
1307 x[
i].cancel(home,p,pc);
1311 template<
class View>
1316 for (
int j=i; j--; )
1321 template<
class View>
1326 for (
int j=i+1; j<n; j++)
1331 template<
class View>
1335 x[
i].cancel(home,a);
1336 x[
i]=x[0]; x++; n--;
1339 template<
class View>
1343 x[
i].cancel(home,a);
1347 template<
class View>
1352 for (
int j=i; j--; )
1357 template<
class View>
1362 for (
int j=i+1; j<n; j++)
1367 template<
class View>
1372 x = home.
alloc<View>(n);
1373 for (
int i = n;
i--; )
1374 x[
i].update(home, share, y.x[
i]);
1380 template<
class View>
1384 for (
int i = n;
i--; )
1388 template<
class View>
1391 for (
int i = n;
i--; )
1395 template<
class View>
1398 for (
int i = n;
i--; )
1402 template<
class View>
1405 for (
int i = n;
i--; )
1409 template<
class View>
1412 for (
int i = n;
i--;)
1418 template<
class View>
1424 template<
class View>
template<
class X>
1426 ViewArray<View>::ViewLess<X>::operator ()(
const X&
a,
const X&
b) {
1430 template<
class View>
1434 Support::quicksort<View,ViewLess<View> >(y,
m,vl);
1437 template<
class X,
class Y>
1442 template<
class X,
class Y>
1448 template<
class View>
1454 View* y = r.
alloc<View>(n);
1455 for (
int i = n;
i--; )
1458 for (
int i = n-1;
i--; )
1467 template<
class View>
1472 for (
int i = n;
i--; )
1478 template<
class View>
1485 for (
int i = 1;
i<n;
i++)
1491 template<
class View>
1497 View* y = r.
alloc<View>(n);
1498 for (
int i = n;
i--; )
1501 for (
int i = n-1;
i--; )
1510 template<
class View>
template<
class ViewY>
1515 for (
int i = n;
i--; )
1521 template<
class View>
template<
class ViewY>
1524 if ((
size() < 1) || (y.
size() < 1))
1528 for (
int i=
size();
i--; )
1531 Support::quicksort<View,ViewLess<View> >(xs,
size(),xvl);
1533 for (
int j=y.
size(); j--; )
1535 ViewLess<ViewY> yvl;
1536 Support::quicksort<ViewY,ViewLess<ViewY> >(ys,y.
size(),yvl);
1539 while ((i <
size()) && (j < y.
size()))
1544 }
else if (
before(x[i],y[j])) {
1555 template<
class View>
1561 template<
class View>
1563 ViewArray<View>::operator
delete(
void*,size_t) {
1575 return (n > onstack_size) ?
1576 heap.
alloc<T>(
static_cast<unsigned int>(n)) : &onstack[0];
1583 assert(n+i >= onstack_size);
1585 if (newCapacity <= n+i)
1587 T* newA = allocate(newCapacity);
1599 : n(0),
capacity(onstack_size),
a(allocate(0)) {}
1604 : n(n0),
capacity(n < onstack_size ? onstack_size : n),
a(allocate(n)) {}
1609 : n(aa.n),
capacity(n < onstack_size ? onstack_size : n),
a(allocate(n)) {
1627 capacity = (n < onstack_size ? onstack_size : n);
1643 assert((i>=0) && (i < n));
1650 assert((i>=0) && (i < n));
1702 template<
class T>
template<
class A>
1705 assert(n==0 || start < n);
1712 s = (n-start)/inc + ((n-start) % inc == 0 ? 0 : 1);
1714 s = (start+1)/-inc + ((start+1) % -inc == 0 ? 0 : 1);
1716 for (
int i=0;
i<r.
size();
i++, start+=inc)
1717 new (&r[
i]) T(
a[start]);
1721 template<
class T>
template<
class A>
1726 return static_cast<A&
>(*this);
1729 template<
class T>
template<
class A>
1733 for (
int i=0;
i<x.
size();
i++)
1734 new (&
a[n++]) T(x[
i]);
1735 return static_cast<A&
>(*this);
1738 template<
class T>
template<
class A>
1743 new (&r[
i]) T(
a[i]);
1744 for (
int i=x.
n; i--;)
1745 new (&r[n+
i]) T(x.
a[i]);
1749 template<
class T>
template<
class A>
1754 new (&r[
i]) T(
a[i]);
1778 for (
int i = 1;
i <
n;
i++)
1779 a[
i] = va_arg(args,T);
1786 for (
int i=n;
i--; )
1822 return x.template concat
1827 typename ArrayTraits<PrimArgArray<T> >::ArgsType
1829 return x.template concat
1834 typename ArrayTraits<PrimArgArray<T> >::ArgsType
1857 for (
int i=n;
i--; )
1893 return x.template concat
1898 typename ArrayTraits<ArgArray<T> >::ArgsType
1900 return x.template concat
1905 typename ArrayTraits<ArgArray<T> >::ArgsType
1909 return xa.template concat
1935 for (
int i=x.
size();
i--; )
1966 return x.template concat
1971 typename ArrayTraits<VarArgArray<Var> >::ArgsType
1973 return x.template concat
1978 typename ArrayTraits<VarArgArray<Var> >::ArgsType
1982 return xa.template concat
1989 return a.varimp() < b.varimp();
1995 for (
int i =
n;
i--;)
2008 for (
int i =
n;
i--; )
2011 Support::quicksort<Var,VarLess>(y,
n,vl);
2012 for (
int i = n-1;
i--; )
2013 if (!y[
i].
assigned() && (y[
i+1].varimp() == y[
i].varimp())) {
2029 for (
int i =
n;
i--; )
2031 for (
int i = y.
n;
i--; )
2034 Support::quicksort<Var,VarLess>(z,
m,vl);
2035 for (
int i = m-1;
i--; )
2036 if (!z[
i].
assigned() && (z[
i+1].varimp() == z[
i].varimp())) {
2049 for (
int i =
n;
i--; )
2050 if (
a[
i].varimp() == y.varimp())
2083 template<
class Char,
class Traits,
class Var>
2084 std::basic_ostream<Char,Traits>&
2085 operator <<(std::basic_ostream<Char,Traits>& os,
2087 std::basic_ostringstream<Char,Traits> s;
2088 s.copyfmt(os); s.width(0);
2092 for (
int i=1;
i<x.
size();
i++)
2096 return os << s.str();
2099 template<
class Char,
class Traits,
class View>
2100 std::basic_ostream<Char,Traits>&
2101 operator <<(std::basic_ostream<Char,Traits>& os,
2103 std::basic_ostringstream<Char,Traits> s;
2104 s.copyfmt(os); s.width(0);
2108 for (
int i=1;
i<x.
size();
i++)
2112 return os << s.str();
2115 template<
class Char,
class Traits,
class T>
2116 std::basic_ostream<Char,Traits>&
2117 operator <<(std::basic_ostream<Char,Traits>& os,
2119 std::basic_ostringstream<Char,Traits> s;
2120 s.copyfmt(os); s.width(0);
2124 for (
int i=1;
i<x.
size();
i++)
2128 return os << s.str();