LayoutBaseView< Dim, Dim2, lvd > Class Template Reference

LayoutBaseView is a base class for all Layout classes that provides a view of an existing LayoutBase object. More...

#include <LayoutBase.h>

Inheritance diagram for LayoutBaseView< Dim, Dim2, lvd >:

Inheritance graph
[legend]
Collaboration diagram for LayoutBaseView< Dim, Dim2, lvd >:

Collaboration graph
[legend]

List of all members.

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_titerator
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_tdomain () const
 Return the global domain in our coordinate system and in that of our original domain.
const Domain_tinnerDomain () const
const BaseDomain_tbaseDomain () const
const Layout_tbaseLayout () const
template<class DT >
BaseDomain_tlocalToBase (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_tpdata_m
 The data is stored in a RefCounted class to simplify memory management.

Friends

class LayoutBaseView
class LayoutBaseViewData


Detailed Description

template<int Dim, int Dim2, class lvd>
class LayoutBaseView< Dim, Dim2, lvd >

LayoutBaseView is a base class for all Layout classes that provides a view of an existing LayoutBase object.

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.


Member Typedef Documentation

template<int Dim, int Dim2, class lvd>
typedef lvd LayoutBaseView< Dim, Dim2, lvd >::LayoutData_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::Domain_t LayoutBaseView< Dim, Dim2, lvd >::Domain_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::BaseDomain_t LayoutBaseView< Dim, Dim2, lvd >::BaseDomain_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::Context_t LayoutBaseView< Dim, Dim2, lvd >::Context_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::ID_t LayoutBaseView< Dim, Dim2, lvd >::ID_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::Layout_t LayoutBaseView< Dim, Dim2, lvd >::Layout_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::AllocatedDomain_t LayoutBaseView< Dim, Dim2, lvd >::AllocatedDomain_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::Value_t LayoutBaseView< Dim, Dim2, lvd >::Value_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::List_t LayoutBaseView< Dim, Dim2, lvd >::List_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::Indexer_t LayoutBaseView< Dim, Dim2, lvd >::Indexer_t

template<int Dim, int Dim2, class lvd>
typedef LayoutData_t::GuardLayers_t LayoutBaseView< Dim, Dim2, lvd >::GuardLayers_t

template<int Dim, int Dim2, class lvd>
typedef LayoutBaseView<Dim, Dim2, lvd> LayoutBaseView< Dim, Dim2, lvd >::This_t

template<int Dim, int Dim2, class lvd>
typedef LayoutBaseView<Dim, Dim2, lvd> LayoutBaseView< Dim, Dim2, lvd >::ViewLayout_t

template<int Dim, int Dim2, class lvd>
typedef DerefIterator<Value_t> LayoutBaseView< Dim, Dim2, lvd >::iterator

template<int Dim, int Dim2, class lvd>
typedef ConstDerefIterator<Value_t> LayoutBaseView< Dim, Dim2, lvd >::const_iterator


Member Enumeration Documentation

template<int Dim, int Dim2, class lvd>
anonymous enum

Enumerator:
dimensions 


Constructor & Destructor Documentation

template<int Dim, int Dim2, class lvd>
LayoutBaseView< Dim, Dim2, lvd >::LayoutBaseView ( LayoutData_t lvdp  )  [inline]

template<int Dim, int Dim2, class lvd>
LayoutBaseView< Dim, Dim2, lvd >::LayoutBaseView ( const RefCountedPtr< LayoutData_t > &  pdata  )  [inline]


Member Function Documentation

template<int Dim, int Dim2, class lvd>
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.

template<int Dim, int Dim2, class lvd>
ID_t LayoutBaseView< Dim, Dim2, lvd >::baseID (  )  const [inline]

template<int Dim, int Dim2, class lvd>
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.

template<int Dim, int Dim2, class lvd>
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().

template<int Dim, int Dim2, class lvd>
const Domain_t& LayoutBaseView< Dim, Dim2, lvd >::innerDomain (  )  const [inline]

template<int Dim, int Dim2, class lvd>
const BaseDomain_t& LayoutBaseView< Dim, Dim2, lvd >::baseDomain (  )  const [inline]

template<int Dim, int Dim2, class lvd>
const Layout_t& LayoutBaseView< Dim, Dim2, lvd >::baseLayout (  )  const [inline]

template<int Dim, int Dim2, class lvd>
template<class DT >
BaseDomain_t& LayoutBaseView< Dim, Dim2, lvd >::localToBase ( const Domain< Dim, DT > &  dlocal,
BaseDomain_t base 
) const [inline]

template<int Dim, int Dim2, class lvd>
template<class DT >
SliceRange<Dim2, Dim>& LayoutBaseView< Dim, Dim2, lvd >::localToBase ( const Domain< Dim, DT > &  dlocal,
SliceRange< Dim2, Dim > &  base 
) const [inline]

template<int Dim, int Dim2, class lvd>
GuardLayers_t LayoutBaseView< Dim, Dim2, lvd >::internalGuards (  )  const [inline]

template<int Dim, int Dim2, class lvd>
GuardLayers_t LayoutBaseView< Dim, Dim2, lvd >::externalGuards (  )  const [inline]

template<int Dim, int Dim2, class lvd>
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.)

template<int Dim, int Dim2, class lvd>
template<class L >
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.

template<int Dim, int Dim2, class lvd>
template<class L >
bool LayoutBaseView< Dim, Dim2, lvd >::operator!= ( const L &  layout  )  const [inline]

Compare for inequality.

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( const Loc< Dim > &  loc,
Loc< Dim2 > &  oloc 
) const [inline]

Return the globalID to the given element, expressed either as a single Loc or as a set of int's.

These simply call the indexer's translate function and then pass the resulting Loc to the original layout to get the patch ID.

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( int  i0,
Loc< Dim2 > &  loc 
) const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( int  i0,
int  i1,
Loc< Dim2 > &  loc 
) const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( int  i0,
int  i1,
int  i2,
Loc< Dim2 > &  loc 
) const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( int  i0,
int  i1,
int  i2,
int  i3,
Loc< Dim2 > &  loc 
) const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4,
Loc< Dim2 > &  loc 
) const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::globalID ( int  i0,
int  i1,
int  i2,
int  i3,
int  i4,
int  i5,
Loc< Dim2 > &  loc 
) const [inline]

template<int Dim, int Dim2, class lvd>
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]

template<int Dim, int Dim2, class lvd>
template<class OtherDomain , class OutIter , class ConstructTag >
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().

template<int Dim, int Dim2, class lvd>
template<class OtherDomain , class OutIter , class ConstructTag >
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().

template<int Dim, int Dim2, class lvd>
template<class OtherDomain , class OutIter , class ConstructTag >
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().

template<int Dim, int Dim2, class lvd>
template<class OtherDomain , class OutIter >
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.

template<int Dim, int Dim2, class lvd>
template<class OtherDomain , class OutIter >
int LayoutBaseView< Dim, Dim2, lvd >::touchesLocal ( const OtherDomain &  d,
OutIter  o 
) const [inline]

template<int Dim, int Dim2, class lvd>
template<class OtherDomain , class OutIter >
int LayoutBaseView< Dim, Dim2, lvd >::touchesRemote ( const OtherDomain &  d,
OutIter  o 
) const [inline]

template<int Dim, int Dim2, class lvd>
iterator LayoutBaseView< Dim, Dim2, lvd >::beginGlobal (  )  [inline]

Return begin and end iterators for the list of all subdomains; take care to compute subdomains first.

template<int Dim, int Dim2, class lvd>
iterator LayoutBaseView< Dim, Dim2, lvd >::endGlobal (  )  [inline]

template<int Dim, int Dim2, class lvd>
const_iterator LayoutBaseView< Dim, Dim2, lvd >::beginGlobal (  )  const [inline]

template<int Dim, int Dim2, class lvd>
const_iterator LayoutBaseView< Dim, Dim2, lvd >::endGlobal (  )  const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::sizeGlobal (  )  const [inline]

template<int Dim, int Dim2, class lvd>
iterator LayoutBaseView< Dim, Dim2, lvd >::beginLocal (  )  [inline]

Return begin and end iterators for the list of all subdomains; take care to compute subdomains first.

template<int Dim, int Dim2, class lvd>
iterator LayoutBaseView< Dim, Dim2, lvd >::endLocal (  )  [inline]

template<int Dim, int Dim2, class lvd>
const_iterator LayoutBaseView< Dim, Dim2, lvd >::beginLocal (  )  const [inline]

template<int Dim, int Dim2, class lvd>
const_iterator LayoutBaseView< Dim, Dim2, lvd >::endLocal (  )  const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::sizeLocal (  )  const [inline]

template<int Dim, int Dim2, class lvd>
iterator LayoutBaseView< Dim, Dim2, lvd >::beginRemote (  )  [inline]

Return begin and end iterators for the list of all subdomains; take care to compute subdomains first.

template<int Dim, int Dim2, class lvd>
iterator LayoutBaseView< Dim, Dim2, lvd >::endRemote (  )  [inline]

template<int Dim, int Dim2, class lvd>
const_iterator LayoutBaseView< Dim, Dim2, lvd >::beginRemote (  )  const [inline]

template<int Dim, int Dim2, class lvd>
const_iterator LayoutBaseView< Dim, Dim2, lvd >::endRemote (  )  const [inline]

template<int Dim, int Dim2, class lvd>
int LayoutBaseView< Dim, Dim2, lvd >::sizeRemote (  )  const [inline]

template<int Dim, int Dim2, class lvd>
void LayoutBaseView< Dim, Dim2, lvd >::computeSubdomains (  )  const [inline]


Friends And Related Function Documentation

template<int Dim, int Dim2, class lvd>
friend class LayoutBaseView [friend]

template<int Dim, int Dim2, class lvd>
friend class LayoutBaseViewData [friend]


Member Data Documentation

template<int Dim, int Dim2, class lvd>
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().


The documentation for this class was generated from the following file:

Generated on Wed Mar 16 06:20:17 2011 for FreePOOMA by  doxygen 1.5.9