#include <LayoutBase.h>
Public Types | |
enum | { dimensions = Dim } |
typedef lvd | LayoutData_t |
typedef LayoutData_t::Domain_t | Domain_t |
typedef LayoutData_t::BaseDomain_t | BaseDomain_t |
typedef LayoutData_t::Context_t | Context_t |
typedef LayoutData_t::ID_t | ID_t |
typedef LayoutData_t::Layout_t | Layout_t |
typedef LayoutData_t::AllocatedDomain_t | AllocatedDomain_t |
typedef LayoutData_t::Value_t | Value_t |
typedef LayoutData_t::List_t | List_t |
typedef LayoutData_t::Indexer_t | Indexer_t |
typedef LayoutData_t::GuardLayers_t | GuardLayers_t |
typedef LayoutBaseView< Dim, Dim2, lvd > | This_t |
typedef LayoutBaseView< Dim, Dim2, lvd > | ViewLayout_t |
typedef DerefIterator< Value_t > | iterator |
typedef ConstDerefIterator < Value_t > | const_iterator |
Public Member Functions | |
LayoutBaseView (LayoutData_t *lvdp) | |
LayoutBaseView (const RefCountedPtr< LayoutData_t > &pdata) | |
bool | initialized () const |
Return that this layout has been initialized. | |
const Domain_t & | domain () const |
Return the global domain in our coordinate system and in that of our original domain. | |
const Domain_t & | innerDomain () const |
const BaseDomain_t & | baseDomain () const |
const Layout_t & | baseLayout () const |
template<class DT > | |
BaseDomain_t & | localToBase (const Domain< Dim, DT > &dlocal, BaseDomain_t &base) const |
template<class DT > | |
SliceRange< Dim2, Dim > & | localToBase (const Domain< Dim, DT > &dlocal, SliceRange< Dim2, Dim > &base) const |
GuardLayers_t | internalGuards () const |
GuardLayers_t | externalGuards () const |
int | first (int) const |
Return the first index in the specified direction. | |
template<class L > | |
bool | operator== (const L &layout) const |
Compare to another Layout. | |
template<class L > | |
bool | operator!= (const L &layout) const |
Compare for inequality. | |
template<class OtherDomain , class OutIter , class ConstructTag > | |
int | touches (const OtherDomain &d, OutIter o, const ConstructTag &ctag) const |
Find all subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator. | |
template<class OtherDomain , class OutIter , class ConstructTag > | |
int | touchesLocal (const OtherDomain &d, OutIter o, const ConstructTag &ctag) const |
Find local subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator. | |
template<class OtherDomain , class OutIter , class ConstructTag > | |
int | touchesRemote (const OtherDomain &, OutIter, const ConstructTag &) const |
Find remote subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator. | |
void | computeSubdomains () const |
Fill our subdomain lists. | |
ID_t | ID () const |
Return ID value. | |
ID_t | baseID () const |
int | globalID (const Loc< Dim > &loc, Loc< Dim2 > &oloc) const |
Return the globalID to the given element, expressed either as a single Loc or as a set of int's. | |
int | globalID (int i0, Loc< Dim2 > &loc) const |
int | globalID (int i0, int i1, Loc< Dim2 > &loc) const |
int | globalID (int i0, int i1, int i2, Loc< Dim2 > &loc) const |
int | globalID (int i0, int i1, int i2, int i3, Loc< Dim2 > &loc) const |
int | globalID (int i0, int i1, int i2, int i3, int i4, Loc< Dim2 > &loc) const |
int | globalID (int i0, int i1, int i2, int i3, int i4, int i5, Loc< Dim2 > &loc) const |
int | globalID (int i0, int i1, int i2, int i3, int i4, int i5, int i6, Loc< Dim2 > &loc) const |
template<class OtherDomain , class OutIter > | |
int | touches (const OtherDomain &d, OutIter o) const |
Find all/local/remote subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator. | |
template<class OtherDomain , class OutIter > | |
int | touchesLocal (const OtherDomain &d, OutIter o) const |
template<class OtherDomain , class OutIter > | |
int | touchesRemote (const OtherDomain &d, OutIter o) const |
iterator | beginGlobal () |
Return begin and end iterators for the list of all subdomains; take care to compute subdomains first. | |
iterator | endGlobal () |
const_iterator | beginGlobal () const |
const_iterator | endGlobal () const |
int | sizeGlobal () const |
iterator | beginLocal () |
Return begin and end iterators for the list of all subdomains; take care to compute subdomains first. | |
iterator | endLocal () |
const_iterator | beginLocal () const |
const_iterator | endLocal () const |
int | sizeLocal () const |
iterator | beginRemote () |
Return begin and end iterators for the list of all subdomains; take care to compute subdomains first. | |
iterator | endRemote () |
const_iterator | beginRemote () const |
const_iterator | endRemote () const |
int | sizeRemote () const |
Public Attributes | |
RefCountedPtr< LayoutData_t > | pdata_m |
The data is stored in a RefCounted class to simplify memory management. | |
Friends | |
class | LayoutBaseView |
class | LayoutBaseViewData |
Dim is the logical dimension of the layout. Dim2 is the dimension of the LayoutBase contained within.
To construct a LayoutBaseView, you need an existing Layout or a LayoutView and the subdomain that is being viewed. This class does not have a useful default constructor since it is based on an existing LayoutBase.
int globalID(const Loc<Dim> &pos) : return the globalID of the node that contains the point.
typedef lvd LayoutBaseView< Dim, Dim2, lvd >::LayoutData_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::Domain_t LayoutBaseView< Dim, Dim2, lvd >::Domain_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::BaseDomain_t LayoutBaseView< Dim, Dim2, lvd >::BaseDomain_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::Context_t LayoutBaseView< Dim, Dim2, lvd >::Context_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::ID_t LayoutBaseView< Dim, Dim2, lvd >::ID_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::Layout_t LayoutBaseView< Dim, Dim2, lvd >::Layout_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::AllocatedDomain_t LayoutBaseView< Dim, Dim2, lvd >::AllocatedDomain_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::Value_t LayoutBaseView< Dim, Dim2, lvd >::Value_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::List_t LayoutBaseView< Dim, Dim2, lvd >::List_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::Indexer_t LayoutBaseView< Dim, Dim2, lvd >::Indexer_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutData_t::GuardLayers_t LayoutBaseView< Dim, Dim2, lvd >::GuardLayers_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutBaseView<Dim, Dim2, lvd> LayoutBaseView< Dim, Dim2, lvd >::This_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef LayoutBaseView<Dim, Dim2, lvd> LayoutBaseView< Dim, Dim2, lvd >::ViewLayout_t |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef DerefIterator<Value_t> LayoutBaseView< Dim, Dim2, lvd >::iterator |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
typedef ConstDerefIterator<Value_t> LayoutBaseView< Dim, Dim2, lvd >::const_iterator |
Reimplemented in GridLayoutView< Dim, Dim2 >, SparseTileLayoutView< Dim, Dim2 >, and UniformGridLayoutView< Dim, Dim2 >.
LayoutBaseView< Dim, Dim2, lvd >::LayoutBaseView | ( | LayoutData_t * | lvdp | ) | [inline] |
LayoutBaseView< Dim, Dim2, lvd >::LayoutBaseView | ( | const RefCountedPtr< LayoutData_t > & | pdata | ) | [inline] |
ID_t LayoutBaseView< Dim, Dim2, lvd >::ID | ( | ) | const [inline] |
Return ID value.
Our ID is unique. However, use the one from the layout we're viewing as the baseID.
ID_t LayoutBaseView< Dim, Dim2, lvd >::baseID | ( | ) | const [inline] |
bool LayoutBaseView< Dim, Dim2, lvd >::initialized | ( | ) | const [inline] |
Return that this layout has been initialized.
There is no other way to legally construct an object of this type.
const Domain_t& LayoutBaseView< Dim, Dim2, lvd >::domain | ( | ) | const [inline] |
Return the global domain in our coordinate system and in that of our original domain.
Referenced by SparseTileLayoutViewData< Dim, Dim2 >::SparseTileLayoutViewData().
const Domain_t& LayoutBaseView< Dim, Dim2, lvd >::innerDomain | ( | ) | const [inline] |
const BaseDomain_t& LayoutBaseView< Dim, Dim2, lvd >::baseDomain | ( | ) | const [inline] |
const Layout_t& LayoutBaseView< Dim, Dim2, lvd >::baseLayout | ( | ) | const [inline] |
BaseDomain_t& LayoutBaseView< Dim, Dim2, lvd >::localToBase | ( | const Domain< Dim, DT > & | dlocal, | |
BaseDomain_t & | base | |||
) | const [inline] |
SliceRange<Dim2, Dim>& LayoutBaseView< Dim, Dim2, lvd >::localToBase | ( | const Domain< Dim, DT > & | dlocal, | |
SliceRange< Dim2, Dim > & | base | |||
) | const [inline] |
GuardLayers_t LayoutBaseView< Dim, Dim2, lvd >::internalGuards | ( | ) | const [inline] |
GuardLayers_t LayoutBaseView< Dim, Dim2, lvd >::externalGuards | ( | ) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::first | ( | int | ) | const [inline] |
Return the first index in the specified direction.
(Always zero since this is a zero-based layout.)
bool LayoutBaseView< Dim, Dim2, lvd >::operator== | ( | const L & | layout | ) | const [inline] |
Compare to another Layout.
The layouts are the same if: 1. They have the same base ID value. 2. They have the same base domain.
bool LayoutBaseView< Dim, Dim2, lvd >::operator!= | ( | const L & | layout | ) | const [inline] |
Compare for inequality.
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | const Loc< Dim > & | loc, | |
Loc< Dim2 > & | oloc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
int | i1, | |||
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
int | i1, | |||
int | i2, | |||
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
int | i1, | |||
int | i2, | |||
int | i3, | |||
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
int | i1, | |||
int | i2, | |||
int | i3, | |||
int | i4, | |||
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
int | i1, | |||
int | i2, | |||
int | i3, | |||
int | i4, | |||
int | i5, | |||
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::globalID | ( | int | i0, | |
int | i1, | |||
int | i2, | |||
int | i3, | |||
int | i4, | |||
int | i5, | |||
int | i6, | |||
Loc< Dim2 > & | loc | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::touches | ( | const OtherDomain & | d, | |
OutIter | o, | |||
const ConstructTag & | ctag | |||
) | const [inline] |
Find all subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator.
Return the number of touching elements. This version of touches can build either pointers or objects.
Referenced by LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::touches().
int LayoutBaseView< Dim, Dim2, lvd >::touchesLocal | ( | const OtherDomain & | d, | |
OutIter | o, | |||
const ConstructTag & | ctag | |||
) | const [inline] |
Find local subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator.
Return the number of touching elements. This version of touches can build either pointers or objects.
Referenced by LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::touchesLocal().
int LayoutBaseView< Dim, Dim2, lvd >::touchesRemote | ( | const OtherDomain & | , | |
OutIter | , | |||
const ConstructTag & | ||||
) | const [inline] |
Find remote subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator.
Return the number of touching elements. This version of touches can build either pointers or objects.
Referenced by LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::touchesRemote().
int LayoutBaseView< Dim, Dim2, lvd >::touches | ( | const OtherDomain & | d, | |
OutIter | o | |||
) | const [inline] |
Find all/local/remote subdomains that touch on a given domain, and insert the intersection of these subdomains into the given output iterator.
Return the number of touching elements. These versions of touches can build only objects objects.
int LayoutBaseView< Dim, Dim2, lvd >::touchesLocal | ( | const OtherDomain & | d, | |
OutIter | o | |||
) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::touchesRemote | ( | const OtherDomain & | d, | |
OutIter | o | |||
) | const [inline] |
iterator LayoutBaseView< Dim, Dim2, lvd >::beginGlobal | ( | ) | [inline] |
Return begin and end iterators for the list of all subdomains; take care to compute subdomains first.
iterator LayoutBaseView< Dim, Dim2, lvd >::endGlobal | ( | ) | [inline] |
const_iterator LayoutBaseView< Dim, Dim2, lvd >::beginGlobal | ( | ) | const [inline] |
const_iterator LayoutBaseView< Dim, Dim2, lvd >::endGlobal | ( | ) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::sizeGlobal | ( | ) | const [inline] |
iterator LayoutBaseView< Dim, Dim2, lvd >::beginLocal | ( | ) | [inline] |
Return begin and end iterators for the list of all subdomains; take care to compute subdomains first.
iterator LayoutBaseView< Dim, Dim2, lvd >::endLocal | ( | ) | [inline] |
const_iterator LayoutBaseView< Dim, Dim2, lvd >::beginLocal | ( | ) | const [inline] |
const_iterator LayoutBaseView< Dim, Dim2, lvd >::endLocal | ( | ) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::sizeLocal | ( | ) | const [inline] |
iterator LayoutBaseView< Dim, Dim2, lvd >::beginRemote | ( | ) | [inline] |
Return begin and end iterators for the list of all subdomains; take care to compute subdomains first.
iterator LayoutBaseView< Dim, Dim2, lvd >::endRemote | ( | ) | [inline] |
const_iterator LayoutBaseView< Dim, Dim2, lvd >::beginRemote | ( | ) | const [inline] |
const_iterator LayoutBaseView< Dim, Dim2, lvd >::endRemote | ( | ) | const [inline] |
int LayoutBaseView< Dim, Dim2, lvd >::sizeRemote | ( | ) | const [inline] |
void LayoutBaseView< Dim, Dim2, lvd >::computeSubdomains | ( | ) | const [inline] |
Fill our subdomain lists.
Reimplemented in GridLayoutView< Dim, Dim2 >, and SparseTileLayoutView< Dim, Dim2 >.
Referenced by LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::beginGlobal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::beginLocal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::beginRemote(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::endGlobal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::endLocal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::endRemote(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::sizeGlobal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::sizeLocal(), and LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::sizeRemote().
friend class LayoutBaseView [friend] |
friend class LayoutBaseViewData [friend] |
RefCountedPtr<LayoutData_t> LayoutBaseView< Dim, Dim2, lvd >::pdata_m |
The data is stored in a RefCounted class to simplify memory management.
This is probably not as important for ViewLayout classes as for Layout classes, but we do it for consistency. Currently ViewLayouts are not observed directly by anyone. Of course, the Layout that we have a copy of is observed.
Referenced by LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::baseDomain(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::baseID(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::baseLayout(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::beginGlobal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::beginLocal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::beginRemote(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::computeSubdomains(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::domain(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::endGlobal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::endLocal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::endRemote(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::externalGuards(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::globalID(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::ID(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::innerDomain(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::internalGuards(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::localToBase(), UniformGridLayoutView< Dim, Dim2 >::operator=(), SparseTileLayoutView< Dim, Dim2 >::operator=(), GridLayoutView< Dim, Dim2 >::operator=(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::sizeGlobal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::sizeLocal(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::sizeRemote(), LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::touches(), and LayoutBaseView< Dim, Dim2, UniformGridLayoutViewData< Dim, Dim2 > >::touchesLocal().