identitygridentitypointer.hh

Go to the documentation of this file.
00001 #ifndef DUNE_IDENTITYGRID_ENTITY_POINTER_HH
00002 #define DUNE_IDENTITYGRID_ENTITY_POINTER_HH
00003 
00008 namespace Dune {
00009 
00010 
00013 template<int codim, class GridImp>
00014 class IdentityGridEntityPointer
00015 {
00016     private:
00017     
00018         enum { dim = GridImp::dimension };
00019 
00020     
00021     public:
00022     
00025     typedef IdentityGridEntityPointer EntityPointerImp;
00026 
00028     enum { codimension = codim };
00029 
00030         typedef typename GridImp::template Codim<codim>::Entity Entity;
00031         
00032         typedef IdentityGridEntityPointer<codim,GridImp> Base;
00033     
00034         // The codimension of this entitypointer wrt the host grid
00035         enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
00036     
00037         // EntityPointer to the equivalent entity in the host grid
00038         typedef typename GridImp::HostGridType::Traits::template Codim<CodimInHostGrid>::EntityPointer HostGridEntityPointer;
00039         
00040         
00042         IdentityGridEntityPointer (const GridImp* identityGrid, const HostGridEntityPointer& hostEntity_) :
00043             identityGrid_(identityGrid),
00044             virtualEntity_(identityGrid, hostEntity_)
00045         {
00046         }
00047 
00049     IdentityGridEntityPointer (const IdentityGridEntity<codim,dim,GridImp>& entity)
00050         : identityGrid_(entity.identityGrid_),
00051           virtualEntity_(entity.identityGrid_, entity.hostEntity_) 
00052     {}
00053         
00055         bool equals(const IdentityGridEntityPointer<codim,GridImp>& i) const {
00056             return virtualEntity_.getTarget() == i.virtualEntity_.getTarget();
00057         }
00058     
00059         
00061         Entity& dereference() const {
00062             return virtualEntity_;
00063         }
00064 
00066     void compactify () {
00067         //virtualEntity_.getTarget().compactify();
00068     }
00069         
00071         int level () const {
00072             return virtualEntity_.level();
00073         }
00074     
00075         
00076     protected:
00077     
00078         const GridImp* identityGrid_;
00079         
00081         mutable IdentityGridMakeableEntity<codim,dim,GridImp> virtualEntity_;
00082     
00083         
00084 };
00085 
00086 
00087 } // end namespace Dune
00088 
00089 #endif

Generated on 29 Jul 2009 with Doxygen (ver 1.5.6)