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
00037 enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
00038
00039
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
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 }
00090
00091 #endif