45template<
int N_dimensions>
49 typedef TinyVector<int, N_dimensions> T_coord;
50 typedef Vector<T_coord> T_traversal;
57 TraversalOrder(
const T_coord& size, T_traversal& order)
58 : size_(size), order_(order)
61 TraversalOrder(
const T_coord& size)
65 T_coord operator[](
int i)
const
68 T_coord& operator[](
int i)
72 {
return order_.length(); }
74 bool operator<(
const TraversalOrder<N_dimensions>& x)
const
76 for (
int i=0;
i < N_dimensions; ++
i)
78 if (size_[i] < x.size_[i])
80 else if (size_[i] > x.size_[i])
86 bool operator==(
const TraversalOrder<N_dimensions>& x)
const
88 for (
int i=0;
i < N_dimensions; ++
i)
90 if (size_[i] != x.size_[i])
107class TraversalOrder<0> {
112template<
int N_dimensions>
113class TraversalOrderCollection {
115 typedef TraversalOrder<N_dimensions> T_traversal;
117 typedef set<T_traversal> T_set;
118 typedef _bz_typename set<T_traversal>::const_iterator T_iterator;
120 const T_traversal*
find(
const T_coord& size)
122 T_iterator iter = traversals_.find(T_traversal(size));
123 if (iter != traversals_.end())
128 void insert(T_traversal x)
130 traversals_.insert(x);
134 static T_set traversals_;
137template<
int N_dimensions>
138_bz_typename TraversalOrderCollection<N_dimensions>::T_set
139 TraversalOrderCollection<N_dimensions>::traversals_;
147class TraversalOrderCollection<0> {
149 typedef int T_traversal;
152 typedef int T_iterator;
154 const T_traversal*
find(
const T_coord& size)
160#include <blitz/traversal.cc>
#define _bz_typename
Definition: compiler.h:80
_bz_global blitz::IndexPlaceholder< 0 > i
Definition: indexexpr.h:256
Definition: array-impl.h:66
void find(Array< TinyVector< int, N_rank >, 1 > &, const Array< P_numtype, N_rank > &)
Definition: array-impl.h:2537