identitygridentitypointer.hh

Go to the documentation of this file.
00001 #ifndef DUNE_IDENTITYGRID_ENTITY_POINTER_HH
00002 #define DUNE_IDENTITYGRID_ENTITY_POINTER_HH
00003 
00004 #include "identitygridentity.hh"
00005 
00010 namespace Dune {
00011 
00012 
00015 template<int codim, class GridImp>
00016 class IdentityGridEntityPointer
00017 {
00018     private:
00019     
00020         enum { dim = GridImp::dimension };
00021 
00022     
00023     public:
00024     
00027     typedef IdentityGridEntityPointer EntityPointerImp;
00028 
00030     enum { codimension = codim };
00031 
00032         typedef typename GridImp::template Codim<codim>::Entity Entity;
00033         
00034         typedef IdentityGridEntityPointer<codim,GridImp> Base;
00035     
00036         // The codimension of this entitypointer wrt the host grid
00037         enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
00038     
00039         // EntityPointer to the equivalent entity in the host grid
00040         typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer HostGridEntityPointer;
00041         
00042         
00044         IdentityGridEntityPointer (const GridImp* identityGrid, const HostGridEntityPointer& hostEntity_) :
00045             identityGrid_(identityGrid),
00046             virtualEntity_(identityGrid, hostEntity_)
00047         {
00048         }
00049 
00051     IdentityGridEntityPointer (const IdentityGridEntity<codim,dim,GridImp>& entity)
00052         : identityGrid_(entity.identityGrid_),
00053           virtualEntity_(entity.identityGrid_, entity.hostEntity_) 
00054     {}
00055         
00057         bool equals(const IdentityGridEntityPointer<codim,GridImp>& i) const {
00058             return virtualEntity_.getTarget() == i.virtualEntity_.getTarget();
00059         }
00060     
00061         
00063         Entity& dereference() const {
00064             return virtualEntity_;
00065         }
00066 
00068     void compactify () {
00069         //virtualEntity_.getTarget().compactify();
00070     }
00071         
00073         int level () const {
00074             return virtualEntity_.level();
00075         }
00076     
00077         
00078     protected:
00079     
00080         const GridImp* identityGrid_;
00081         
00083         mutable IdentityGridMakeableEntity<codim,dim,GridImp> virtualEntity_;
00084     
00085         
00086 };
00087 
00088 
00089 } // end namespace Dune
00090 
00091 #endif
Generated on Sat Apr 24 11:13:38 2010 for dune-grid-dev-howto by  doxygen 1.6.3