18#ifndef SUB_FIELD_ITER_H
19#define SUB_FIELD_ITER_H
121template<
class T,
unsigned int Dim,
class S,
unsigned int ExprDim>
139 LFPtr = (*CurrentLField).second.get();
174 throw IpplException(
"SubFieldIterBase::nextLField()",
"Reached the container end, no next LField!");
177 LFPtr = (*CurrentLField).second.get();
250template<
class T,
unsigned int Dim,
class S>
259template<
class T,
unsigned int Dim>
262 public PETE_Expr<SubFieldIter<T, Dim, NDIndex<Dim> > >
306 inter = this->
getDomain().intersect(loc);
307 return ( ! inter.
empty() );
328 for ( ; lf_i != lf_e; ++lf_i) {
330 if ((*lf_i).second->getAllocated().contains(plugged)) {
345 void step(
unsigned int d) {
P.step(d); }
346 void step(
unsigned int d,
int n) {
P.step(d, n); }
349 int size(
unsigned d)
const {
return P.size(d); }
355 T&
offset(
int i,
int j) {
return P.offset(i, j); }
356 T&
offset(
int i,
int j,
int k) {
return P.offset(i, j, k); }
360 int Stride(
int d)
const {
return P.Stride(d); }
369 return this->
getLField()->IsCompressed();
393template<
class T,
unsigned int Dim>
396 public PETE_Expr<SubFieldIter<T, Dim, SIndex<Dim> > >
447 if ((*ComponentLF)->size() > 0) {
469 void step(
unsigned int,
int) { }
472 int size(
unsigned d)
const {
return (d == 0 ? (*ComponentLF)->size() : 0); }
514 for (
unsigned int d=0; d <
Dim; ++d)
526template<
class T,
unsigned int Dim>
529 public PETE_Expr<SubFieldIter<T, Dim, SOffset<Dim> > >
562 for (
unsigned int d=0; d <
Dim; ++d)
563 s[d] -= owned[d].first();
587 return ( ! inter.
empty() );
592 for (
unsigned int d=0; d <
Dim; ++d)
593 i[d] =
Index(s[d], s[d]);
605 void step(
unsigned int,
int) { }
608 int size(
unsigned int d)
const {
return (d == 0 ? 1 : 0); }
ac_id_larray::iterator iterator_if
const NDIndex< Dim > & getOwned() const
CompressedBrickIterator< T, Dim > iterator
const iterator & begin() const
container_t::iterator iterator_iv
const NDIndex< Dim > & getDomain() const
unsigned int getBrackets() const
BareField< T, Dim > & getBareField()
BareField< T, Dim >::iterator_if nextLField()
const LField< T, Dim > * getLField() const
void setLFieldData(LField< T, Dim > *p, NDIndex< Dim > &)
BareField< T, Dim > * MyBareField
BareField< T, Dim >::iterator_if CurrentLField
BareField< T, Dim >::iterator_if getLFieldIter() const
void FillGCIfNecessary() const
LField< T, Dim > * getLField()
const S & getDomain() const
SubFieldIterBase(const BareField< T, Dim > &df, const typename BareField< T, Dim >::iterator_if &ldf, const S &s, unsigned int B)
void setLField(LField< T, Dim > *p)
const BareField< T, Dim > & getBareField() const
bool checkBrackets() const
void step(unsigned int d)
PETE_Expr_t MakeExpression() const
T & unit_offset(int i, int j)
bool DomainCompressed() const
bool findIntersection(const NDIndex< Dim > &loc, NDIndex< Dim > &inter)
bool IsCompressed() const
static int getSubsetType()
T & unit_offset(int i, int j, int k)
static void makeNDIndex(const Subset_t &s, NDIndex< Dim > &i)
int size(unsigned d) const
bool plugBase(const NDIndex< Dim > &i)
void step(unsigned int d, int n)
void setLFieldData(LField< T, Dim > *p, NDIndex< Dim > &n)
static bool matchType(int t)
SubFieldIter< T, Dim, Subset_t > SFI
T & offset(int i, int j, int k)
SubFieldIter(const BareField< T, Dim > &df, const typename BareField< T, Dim >::iterator_if &ldf, const NDIndex< Dim > &s, unsigned int B)
LField< T, Dim >::iterator P
static int getSubsetType()
SubFieldIter(const BareField< T, Dim > &df, const typename BareField< T, Dim >::iterator_if &ldf, const SIndex< Dim > &s, unsigned int B)
Subset_t::iterator_iv ComponentLF
BareField< T, Dim >::iterator_if nextLField()
PETE_Expr_t MakeExpression() const
bool plugBase(const NDIndex< Dim > &)
int size(unsigned d) const
bool findIntersection(const NDIndex< Dim > &, NDIndex< Dim > &inter)
bool IsCompressed() const
bool DomainCompressed() const
SubFieldIter< T, Dim, Subset_t > SFI
static bool matchType(int t)
void step(unsigned int, int)
static void makeNDIndex(const Subset_t &s, NDIndex< Dim > &i)
static bool matchType(int)
static void makeNDIndex(const Subset_t &s, NDIndex< Dim > &i)
void setLFieldData(LField< T, Dim > *p, NDIndex< Dim > &n)
bool plugBase(const NDIndex< Dim > &)
void step(unsigned int, int)
SubFieldIter(const BareField< T, Dim > &df, const typename BareField< T, Dim >::iterator_if &ldf, const SOffset< Dim > &s, unsigned int B)
bool findIntersection(const NDIndex< Dim > &loc, NDIndex< Dim > &inter)
PETE_Expr_t MakeExpression() const
int size(unsigned int d) const
static int getSubsetType()
SubFieldIter< T, Dim, Subset_t > SFI
bool DomainCompressed() const
bool IsCompressed() const