3 #ifndef DUNE_ALU3DGRIDMEMORY_HH 4 #define DUNE_ALU3DGRIDMEMORY_HH 12 template<
class T,
int length>
19 template <
class Object>
20 class ALUMemoryProvider
22 enum { maxStackObjects = 256 };
26 typedef ALUMemoryProvider < Object > MyType;
28 StackType& objStack() {
return objStack_ ; }
38 : objStack_( org.objStack_ )
45 template <
class FactoryType>
46 ObjectType * getObject(
const FactoryType &factory,
int level);
49 template <
class FactoryType,
class EntityImp>
50 inline ObjectType *
getEntityObject(
const FactoryType& factory,
int level , EntityImp * fakePtr )
52 if( objStack().empty() )
54 return (
new ObjectType(EntityImp(factory,level) ));
63 ObjectType * getEmptyObject ();
66 ObjectType * getObjectCopy(
const ObjectType & org);
69 void freeObject (ObjectType * obj);
74 assert( ! objStack().empty() );
76 return objStack().pop();
87 template <
class Object>
template <
class FactoryType>
90 (
const FactoryType &factory,
int level )
92 if( objStack().empty() )
94 return (
new Object (factory, level) );
102 template <
class Object>
107 if( objStack().empty() )
109 return (
new Object (org) );
113 return stackObject();
117 template <
class Object>
121 if( objStack().empty() )
123 return new Object () ;
127 return stackObject();
131 template <
class Object>
135 while ( ! objStk.empty() )
142 template <
class Object>
152 #undef USE_FINITE_STACK Definition: alu3dinclude.hh:43
ALUMemoryProvider(const ALUMemoryProvider< Object > &org)
do not copy pointers
Definition: memory.hh:37
organize the memory management for entitys used by the NeighborIterator
Definition: alugrid/2d/grid.hh:68
Object ObjectType
Definition: memory.hh:31
ALUMemoryProvider()
default constructor
Definition: memory.hh:34
ObjectType * getEntityObject(const FactoryType &factory, int level, EntityImp *fakePtr)
i.e. return pointer to Entity
Definition: memory.hh:50
Include standard header files.
Definition: agrid.hh:59
ObjectType * stackObject()
Definition: memory.hh:72