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
00035 enum {CodimInHostGrid = GridImp::HostGridType::dimension - GridImp::dimension + codim};
00036
00037
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
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 }
00088
00089 #endif