FreePOOMA
2.4.1
|
DomainBaseis the common base class for all Domain<Dim, DT> objects, regardless of the value of Dim. More...
#include <DomainBase.h>
Public Types | |
typedef DT::Domain_t | Domain_t |
typedef DT::AskDomain_t | AskDomain_t |
typedef DT::MultResult_t | MultResult_t |
typedef DT::Storage_t | Storage_t |
typedef DomainIterator< Domain_t > | const_iterator |
typedef DomainIterator< Domain_t > | iterator |
typedef DomainBlockIterator < Domain_t > | const_blockIterator |
typedef DomainBlockIterator < Domain_t > | blockIterator |
Public Member Functions | |
DomainBase () | |
DomainBase (const Pooma::NoInit &) | |
Domain_t & | unwrap () |
const Domain_t & | unwrap () const |
AskDomain_t | firsts () const |
AskDomain_t | lasts () const |
AskDomain_t | strides () const |
AskDomain_t | lengths () const |
AskDomain_t | sizes () const |
AskDomain_t | mins () const |
AskDomain_t | maxes () const |
AskDomain_t | loops () const |
Storage_t & | storage () |
const Storage_t & | storage () const |
MultResult_t | operator- () const |
const_iterator | begin () const |
const_iterator | end () const |
const_blockIterator | beginBlock () const |
const_blockIterator | endBlock () const |
template<class Out > | |
void | print (Out &o) const |
print a domain to a stream, in the format "[" first:last:stride, first:last:stride, ... | |
Protected Attributes | |
Storage_t | domain_m |
is the common base class for all Domain<Dim, DT> objects, regardless of the value of Dim.
Since Domain<Dim,DT> is defined for general Dim and also specialized to Dim==1, then it is useful to collect common code for both cases into this base class. It also provides the standard typedefs and enumerations which all Domain's should have, with values determined by looking at the DomainTraits class. DT should be DomainTraits<Dom>, where Dom is a domain class like Loc<N>, Range<N>, etc. DomainTraits should be specialized for the different domain types which are to be set up.
The following typedefs and enums are defined here, basically just as wrappers around the values from the DomainTraits class:
This base class defines the following common interface methods for all Domain objects regardless of their dimensionality:
This file also defines binary arithmetic operations +, -, *, /, and general comparison operations <=, >=, !=, > (these use the < and == operators defined in Domain<DT,Dim>, just like the +,-,*,/ operators used the +=, -=, etc. operators in Domain<DT,Dim>).
When a DomainBase is created, it will initialize its storage if the default constructor is used. However, if you wish to avoid the work of initialization, you can use the constructor which takes a Pooma::NoInit object. In that case, storage space for the domain will be maintained, but it will not be initialized. This is useful if you know you will be changing the values later, and do not want to spend the extra time filling in zeros or something into the storage.
Finally, this file defines the operations to print a Domain to an ostream; the format for printing a domain is "[" followed by first():last():stride() for each dimension, followed by "]". For example, a 2D Range with the same sequence 1 ... 9 step 2 would be "[1:9:2,1:9:2]"
typedef DT::Domain_t DomainBase< DT >::Domain_t |
Reimplemented in Loc< 1 >, Domain< 1, DT >, Loc< Dim >, Loc< Dim2 >, Grid< 1 >, Region< 1, T >, Range< 1 >, Interval< 1 >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, Interval< D >, Domain< Dim, DT >, Domain< 1, DomainTraits< Region< 1, T > > >, Domain< Dim, DomainTraits< Loc< Dim > > >, Domain< 1, DomainTraits< Interval< 1 > > >, Domain< Dim, DomainTraits< Range< Dim > > >, Domain< 1, DomainTraits< Grid< 1 > > >, Domain< Dim, DomainTraits< Grid< Dim > > >, Domain< Dim, DomainTraits< Interval< Dim > > >, Domain< Dim, DomainTraits< Region< Dim, T > > >, Domain< 1, DomainTraits< Range< 1 > > >, and Domain< 1, DomainTraits< Loc< 1 > > >.
typedef DT::AskDomain_t DomainBase< DT >::AskDomain_t |
Reimplemented in Loc< 1 >, Loc< Dim >, Loc< Dim2 >, Grid< 1 >, Region< 1, T >, Range< 1 >, Interval< 1 >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, and Interval< D >.
typedef DT::MultResult_t DomainBase< DT >::MultResult_t |
Reimplemented in Loc< 1 >, Loc< Dim >, Loc< Dim2 >, Grid< 1 >, Region< 1, T >, Range< 1 >, Interval< 1 >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, and Interval< D >.
typedef DT::Storage_t DomainBase< DT >::Storage_t |
Reimplemented in Loc< 1 >, Domain< 1, DT >, Loc< Dim >, Loc< Dim2 >, Grid< 1 >, Region< 1, T >, Range< 1 >, Interval< 1 >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, and Interval< D >.
typedef DomainIterator<Domain_t> DomainBase< DT >::const_iterator |
Reimplemented in Domain< 1, DT >, Loc< Dim >, Loc< Dim2 >, Region< 1, T >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, Interval< D >, Domain< Dim, DT >, Domain< 1, DomainTraits< Region< 1, T > > >, Domain< Dim, DomainTraits< Loc< Dim > > >, Domain< 1, DomainTraits< Interval< 1 > > >, Domain< Dim, DomainTraits< Range< Dim > > >, Domain< 1, DomainTraits< Grid< 1 > > >, Domain< Dim, DomainTraits< Grid< Dim > > >, Domain< Dim, DomainTraits< Interval< Dim > > >, Domain< Dim, DomainTraits< Region< Dim, T > > >, Domain< 1, DomainTraits< Range< 1 > > >, and Domain< 1, DomainTraits< Loc< 1 > > >.
typedef DomainIterator<Domain_t> DomainBase< DT >::iterator |
Reimplemented in Domain< 1, DT >, Loc< Dim >, Loc< Dim2 >, Region< 1, T >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, Interval< D >, Domain< Dim, DT >, Domain< 1, DomainTraits< Region< 1, T > > >, Domain< Dim, DomainTraits< Loc< Dim > > >, Domain< 1, DomainTraits< Interval< 1 > > >, Domain< Dim, DomainTraits< Range< Dim > > >, Domain< 1, DomainTraits< Grid< 1 > > >, Domain< Dim, DomainTraits< Grid< Dim > > >, Domain< Dim, DomainTraits< Interval< Dim > > >, Domain< Dim, DomainTraits< Region< Dim, T > > >, Domain< 1, DomainTraits< Range< 1 > > >, and Domain< 1, DomainTraits< Loc< 1 > > >.
typedef DomainBlockIterator<Domain_t> DomainBase< DT >::const_blockIterator |
Reimplemented in Domain< 1, DT >, Loc< Dim >, Loc< Dim2 >, Region< 1, T >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Interval< Dim >, Interval< D >, Domain< Dim, DT >, Domain< 1, DomainTraits< Region< 1, T > > >, Domain< Dim, DomainTraits< Loc< Dim > > >, Domain< 1, DomainTraits< Interval< 1 > > >, Domain< Dim, DomainTraits< Range< Dim > > >, Domain< 1, DomainTraits< Grid< 1 > > >, Domain< Dim, DomainTraits< Grid< Dim > > >, Domain< Dim, DomainTraits< Interval< Dim > > >, Domain< Dim, DomainTraits< Region< Dim, T > > >, Domain< 1, DomainTraits< Range< 1 > > >, and Domain< 1, DomainTraits< Loc< 1 > > >.
typedef DomainBlockIterator<Domain_t> DomainBase< DT >::blockIterator |
Reimplemented in Domain< 1, DT >, Loc< Dim >, Loc< Dim2 >, Region< 1, T >, Region< Dim, T >, Grid< Dim >, Range< Dim >, Range< Dim2 >, Domain< Dim, DT >, Interval< Dim >, Domain< 1, DomainTraits< Region< 1, T > > >, Domain< Dim, DomainTraits< Loc< Dim > > >, Domain< 1, DomainTraits< Interval< 1 > > >, Domain< Dim, DomainTraits< Range< Dim > > >, Domain< 1, DomainTraits< Grid< 1 > > >, Domain< Dim, DomainTraits< Grid< Dim > > >, Domain< Dim, DomainTraits< Interval< Dim > > >, Domain< Dim, DomainTraits< Region< Dim, T > > >, Domain< 1, DomainTraits< Range< 1 > > >, Domain< 1, DomainTraits< Loc< 1 > > >, and Interval< D >.
DomainBase< DT >::DomainBase | ( | ) | [inline] |
DomainBase< DT >::DomainBase | ( | const Pooma::NoInit & | ) | [inline] |
Domain_t& DomainBase< DT >::unwrap | ( | ) | [inline] |
Referenced by DomPair< T1, T2, SV >::add(), DomPair< T1, T2, false >::add(), DomainBase< DomainTraits< Loc< 1 > > >::begin(), DomainBase< DomainTraits< Loc< 1 > > >::beginBlock(), DomPair< T1, T2, SV >::div(), DynamicLayoutViewData::DynamicLayoutViewData(), DomainBase< DomainTraits< Loc< 1 > > >::end(), Engine< Dim, T, ConstantFunction >::Engine(), DomainBase< DomainTraits< Loc< 1 > > >::firsts(), DomainBase< DomainTraits< Loc< 1 > > >::lasts(), LayoutBaseViewData< Dim, Dim2, GridLayout< Dim2 > >::LayoutBaseViewData(), DomainBase< DomainTraits< Loc< 1 > > >::lengths(), ViewIndexer< Dim, OriginalDim >::localToBase(), ViewIndexer< Dim, Dim >::localToBase(), DomainBase< DomainTraits< Loc< 1 > > >::loops(), DomainBase< DomainTraits< Loc< 1 > > >::maxes(), DomainBase< DomainTraits< Loc< 1 > > >::mins(), DomPair< T1, T2, SV >::mult(), DomPair< T1, T2, false >::mult(), Domain< 1, DomainTraits< Loc< 1 > > >::operator*=(), Domain< 1, DT >::operator*=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator++(), Domain< 1, DT >::operator++(), Domain< 1, DomainTraits< Loc< 1 > > >::operator+=(), Domain< 1, DT >::operator+=(), DomainBase< DomainTraits< Loc< 1 > > >::operator-(), Domain< 1, DomainTraits< Loc< 1 > > >::operator--(), Domain< 1, DT >::operator--(), Domain< 1, DomainTraits< Loc< 1 > > >::operator-=(), Domain< 1, DT >::operator-=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator/=(), Domain< 1, DT >::operator/=(), Domain< 1, DT >::operator[](), DomainBase< DomainTraits< Loc< 1 > > >::sizes(), SparseTileLayoutViewData< Dim, Dim2 >::SparseTileLayoutViewData(), DomainBase< DomainTraits< Loc< 1 > > >::strides(), DomPair< T1, T2, SV >::sub(), DomPair< T1, T2, false >::sub(), ViewIndexer< Dim, OriginalDim >::ViewIndexer(), and ViewIndexer< Dim, Dim >::ViewIndexer().
const Domain_t& DomainBase< DT >::unwrap | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::firsts | ( | ) | const [inline] |
Referenced by FieldEngine< Mesh, T, EngineTag >::FieldEngine().
AskDomain_t DomainBase< DT >::lasts | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::strides | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::lengths | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::sizes | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::mins | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::maxes | ( | ) | const [inline] |
AskDomain_t DomainBase< DT >::loops | ( | ) | const [inline] |
Storage_t& DomainBase< DT >::storage | ( | ) | [inline] |
const Storage_t& DomainBase< DT >::storage | ( | ) | const [inline] |
MultResult_t DomainBase< DT >::operator- | ( | ) | const [inline] |
const_iterator DomainBase< DT >::begin | ( | ) | const [inline] |
Referenced by DomainRemoveOverlap(), and BisectionMapper< Dim >::map().
const_iterator DomainBase< DT >::end | ( | ) | const [inline] |
const_blockIterator DomainBase< DT >::beginBlock | ( | ) | const [inline] |
const_blockIterator DomainBase< DT >::endBlock | ( | ) | const [inline] |
print a domain to a stream, in the format "[" first:last:stride, first:last:stride, ...
first:last:stride "]"
Reimplemented in Loc< 1 >, Loc< Dim >, Loc< Dim2 >, Grid< 1 >, and Grid< Dim >.
Storage_t DomainBase< DT >::domain_m [protected] |
Referenced by DomainBase< DomainTraits< Loc< 1 > > >::DomainBase(), Domain< 1, DT >::elem(), Domain< 1, DomainTraits< Loc< 1 > > >::empty(), Domain< 1, DT >::empty(), Domain< 1, DT >::first(), Domain< 1, DT >::last(), Domain< 1, DT >::length(), Domain< 1, DT >::loop(), Domain< 1, DT >::max(), Domain< 1, DT >::min(), Domain< 1, DomainTraits< Loc< 1 > > >::operator!=(), Domain< 1, DT >::operator()(), Domain< 1, DomainTraits< Loc< 1 > > >::operator*=(), Domain< 1, DT >::operator*=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator++(), Domain< 1, DT >::operator++(), Domain< 1, DomainTraits< Loc< 1 > > >::operator+=(), Domain< 1, DT >::operator+=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator--(), Domain< 1, DT >::operator--(), Domain< 1, DomainTraits< Loc< 1 > > >::operator-=(), Domain< 1, DT >::operator-=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator/=(), Domain< 1, DT >::operator/=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator<(), Domain< 1, DT >::operator<(), Domain< 1, DomainTraits< Loc< 1 > > >::operator<=(), Engine< 1, T, Remote< Dynamic > >::operator=(), Engine< Dim, T, Remote< Tag > >::operator=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator==(), Domain< 1, DT >::operator==(), Domain< 1, DomainTraits< Loc< 1 > > >::operator>(), Domain< 1, DomainTraits< Loc< 1 > > >::operator>=(), Domain< 1, DomainTraits< Loc< 1 > > >::operator[](), Domain< 1, DT >::setDomain(), Domain< 1, DT >::setLoop(), Domain< 1, DT >::setWildcardDomain(), Domain< 1, DomainTraits< Loc< 1 > > >::size(), DomainBase< DomainTraits< Loc< 1 > > >::storage(), and Domain< 1, DT >::stride().