40 template<
unsigned int Dim,
class OP>
48 template<
unsigned int Dim>
82 template<
unsigned int Dim>
94 if (!result && (*LSI)->hasIndex(SO)) {
109 template<
unsigned int Dim>
122 if (result && ! (*LSI)->hasIndex(SO)) {
136 template<
class OP,
unsigned int Dim>
144 int n0 = dom[0].length();
145 int n1 = dom[1].length();
146 int n2 = dom[2].length();
147 if (n0 > 0 && n1 > 0 && n2 > 0) {
149 ERRORMSG(
"changed from cdom to dom, cdom does not make sense! (SindexAssign.cpp)" <<
endl);
153 for (d=3; d <
Dim; ++d)
154 so[d] = dom[d].first();
157 for (
int i2=0; i2<n2; ++i2, ++x2) {
160 for (
int i1=0; i1<n1; ++i1, ++x1) {
163 for (
int i0=0; i0<n0; ++i0, ++x0) {
171 for (d=3; d<
Dim; ++d) {
173 so[d] += dom[d].stride();
175 if ( ! count.
done(d) )
178 so[d] = dom[d].first();
198 int n0 = dom[0].length();
201 for (
int i0 = 0; i0 < n0; ++i0, ++x0) {
220 int n0 = dom[0].length();
221 int n1 = dom[1].length();
222 if (n0 > 0 && n1 > 0) {
224 for (
int i1 = 0; i1 < n1; ++i1, ++x1) {
226 for (
int i0 = 0; i0 < n0; ++i0, ++x0) {
247 int n0 = dom[0].length();
248 int n1 = dom[1].length();
249 int n2 = dom[2].length();
250 if (n0 > 0 && n1 > 0 && n2 > 0) {
252 for (
int i2 = 0; i2 < n2; ++i2, ++x2) {
254 for (
int i1 = 0; i1 < n1; ++i1, ++x1) {
256 for (
int i0 = 0; i0 < n0; ++i0, ++x0) {
277 template<
unsigned Dim,
class T>
280 template<
unsigned Dim>
303 template<
unsigned Dim>
333 template<
unsigned Dim,
class RHS,
class Op,
bool IsExpr>
344 typename RHS::Wrapped& bb = b.PETE_unwrap();
356 for ( ; la != aend; ++la ) {
363 if (!locdomain.
empty()) {
375 (*la)->Compress(result);
390 ERRORMSG(
"All Fields in an expression must be aligned. ");
392 ERRORMSG(
"This error occurred while evaluating an SIndex expression ");
393 ERRORMSG(
"for an LField with domain " << (*la)->getDomain() <<
endl);
void setDomain(const NDIndex< Dim > &ndi)
static void fillgc(RHS &bb, const NDIndex< Dim > &)
bool addIndex(const SOffset< Dim > &)
bool removeIndex(const SOffset< Dim > &)
NDIndex< Dim > intersect(const NDIndex< Dim > &) const
void assign(const BareField< T, Dim > &a, RHS b, OP op, ExprTag< true >)
static void initialize(SIndex< Dim > &)
static void apply(SIndex< Dim > &, typename SIndex< Dim >::iterator_iv &LSI, const SOffset< Dim > &SO, bool result)
container_t::iterator iterator_iv
static void initialize(SIndex< Dim > &s)
c Accompany it with the information you received as to the offer to distribute corresponding source complete source code means all the source code for all modules it plus any associated interface definition plus the scripts used to control compilation and installation of the executable as a special the source code distributed need not include anything that is normally and so on of the operating system on which the executable unless that component itself accompanies the executable If distribution of executable or object code is made by offering access to copy from a designated then offering equivalent access to copy the source code from the same place counts as distribution of the source even though third parties are not compelled to copy the source along with the object code You may not or distribute the Program except as expressly provided under this License Any attempt otherwise to sublicense or distribute the Program is and will automatically terminate your rights under this License parties who have received or from you under this License will not have their licenses terminated so long as such parties remain in full compliance You are not required to accept this since you have not signed it nothing else grants you permission to modify or distribute the Program or its derivative works These actions are prohibited by law if you do not accept this License by modifying or distributing the you indicate your acceptance of this License to do so
static bool plugbase(RHS &bb, const NDIndex< Dim > &)
Inform & endl(Inform &inf)
static void evaluate(SIndex< Dim > &si, typename SIndex< Dim >::iterator_iv &lsi, NDIndex< Dim > &dom, RHS &Rhs)
PETE_Combiner< bool, OpAnd > PETE_AndCombiner
static void evaluate(SIndex< 1U > &si, SIndex< 1U >::iterator_iv &lsi, NDIndex< 1U > &dom, RHS &Rhs)
static void apply(SIndex< Dim > &SI, typename SIndex< Dim >::iterator_iv &LSI, const SOffset< Dim > &SO, bool result)
static void apply(SIndex< Dim > &SI, typename SIndex< Dim >::iterator_iv &LSI, const SOffset< Dim > &SO, bool result)
static void nextLField(RHS &bb)
static void fillgc(RHS &bb, const NDIndex< Dim > &)
static void initialize(SIndex< Dim > &)
static void evaluate(SIndex< 2U > &si, SIndex< 2U >::iterator_iv &lsi, NDIndex< 2U > &dom, RHS &Rhs)
bool done(unsigned d) const
bool for_each(const BareFieldIterator< T, D > &p, SameFieldID s, C)
static void evaluate(SIndex< 3U > &si, SIndex< 3U >::iterator_iv &lsi, NDIndex< 3U > &dom, RHS &Rhs)
static bool plugbase(RHS &bb, const NDIndex< Dim > &domain)
static void abort(const char *=0)
static void nextLField(RHS &)
FillGCIfNecessaryTag< D, T1 > FillGCIfNecessary(const BareField< T1, D > &bf)