11#ifndef SUB_FIELD_TRAITS_H
12#define SUB_FIELD_TRAITS_H
52template<
class T,
unsigned int Dim,
class S1,
class S2>
56 PInsist(
false,
"Unsupported indexing attempted.");
68 static void combine(
const S1&,
const S2&, S3&,
70 PInsist(
false,
"Unsupported indexing attempted.");
80template<
class T,
unsigned int Dim,
unsigned int Dim2>
85 for (
unsigned int d=0; d < Dim2; ++d)
97 for (d=0; d < Dim2; ++d)
105template<
class T,
unsigned int Dim>
117 for (d=0; d < B; ++d)
126template<
class T,
unsigned int Dim>
138 for (d=0; d < B; ++d)
140 out[d] =
Index(s2, s2);
147template<
class T,
unsigned int Dim,
unsigned int Dim2>
152 for (
unsigned int d=0; d < Dim2; ++d)
153 out[d] =
Index(s[d], s[d]);
162 for (d=0; d < B; ++d)
164 for (d=0; d < Dim2; ++d)
165 out[d+B] =
Index(s2[d], s2[d]);
175template<
class T,
unsigned int Dim>
195template<
class T,
unsigned int Dim>
216template<
class T,
unsigned int Dim>
240template<
class T,
unsigned int Dim,
unsigned int Dim2>
245 for (
unsigned int d=0; d < Dim2; ++d)
255 for (d=0; d < B; ++d)
257 for (d=0; d < Dim2; ++d)
265template<
class T,
unsigned int Dim>
277 for (d=0; d < B; ++d)
285template<
class T,
unsigned int Dim>
292 for (d=0; d < B; ++d)
293 out[d] =
Index(s1[d], s1[d]);
300template<
class T,
unsigned int Dim,
unsigned int Dim2>
308 for (d=0; d < B; ++d)
309 out[d] =
Index(s1[d], s1[d]);
310 for (d=0; d < Dim2; ++d)
Layout_t & getLayout() const
void initialize(FieldLayout< Dim > &)
bool needInitialize() const
static int construct(S1 &, const S2 &, BareField< T, Dim > &)
static void combine(const S1 &, const S2 &, S3 &, unsigned int &, BareField< T, Dim > &)
static int construct(NDIndex< Dim > &out, const NDIndex< Dim2 > &s, BareField< T, Dim > &)
static void combine(const NDIndex< Dim > &s1, const NDIndex< Dim2 > &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static void combine(const NDIndex< Dim > &s1, const Index &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static int construct(NDIndex< Dim > &out, const Index &s, BareField< T, Dim > &)
static int construct(NDIndex< Dim > &out, const int &s, BareField< T, Dim > &)
static void combine(const NDIndex< Dim > &s1, const int &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static int construct(NDIndex< Dim > &out, const SOffset< Dim2 > &s, BareField< T, Dim > &)
static void combine(const NDIndex< Dim > &s1, const SOffset< Dim2 > &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static void combine(const SIndex< Dim > &s1, const SIndex< Dim > &s2, Return_t &out, unsigned int, BareField< T, Dim > &)
static int construct(SIndex< Dim > &out, const SIndex< Dim > &s, BareField< T, Dim > &)
static int construct(SIndex< Dim > &out, const NDIndex< Dim > &s, BareField< T, Dim > &A)
static void combine(const SIndex< Dim > &s1, const NDIndex< Dim > &s2, Return_t &out, unsigned int, BareField< T, Dim > &)
static void combine(const SIndex< Dim > &s1, const SOffset< Dim > &s2, Return_t &out, unsigned int, BareField< T, Dim > &)
static int construct(SIndex< Dim > &out, const SOffset< Dim > &s, BareField< T, Dim > &A)
static int construct(SOffset< Dim > &out, const SOffset< Dim2 > &s, BareField< T, Dim > &)
static void combine(const SOffset< Dim > &s1, const SOffset< Dim2 > &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static int construct(SOffset< Dim > &out, const int &s, BareField< T, Dim > &)
static void combine(const SOffset< Dim > &s1, const int &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static void combine(const SOffset< Dim > &s1, const Index &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)
static void combine(const SOffset< Dim > &s1, const NDIndex< Dim2 > &s2, Return_t &out, unsigned int B, BareField< T, Dim > &)