1 #ifndef DUNE_ALU3DGRIDMEMORY_HH
2 #define DUNE_ALU3DGRIDMEMORY_HH
11 template<
class T,
int length >
15 template <
class Object>
18 enum { maxStackObjects = 256 };
19 typedef ::ALUGrid::ALUGridFiniteStack< Object *, maxStackObjects >
StackType;
25 StackType &objStack () {
return objStack_; }
44 template <
class FactoryType>
48 template <
class FactoryType,
class EntityImp>
51 if( objStack().empty() )
53 return new ObjectType( EntityImp(factory,level) );
73 return objStack().pop();
83 template <
class Object>
template <
class FactoryType>
86 getObject(
const FactoryType &factory,
int level )
88 if( objStack().empty() )
90 return (
new Object (factory, level) );
98 template <
class Object>
102 if( objStack().empty() )
104 return new Object () ;
108 return stackObject();
112 template <
class Object>
116 while ( ! objStk.empty() )
123 template <
class Object>
134 template <
class ObjectImp>
174 template <
class ObjectImp>
263 operator bool ()
const {
return bool(
ptr_ ); }
#define alugrid_assert(EX)
Definition: alugrid_assert.hh:20
Definition: alu3dinclude.hh:50
organize the memory management for entitys used by the NeighborIterator
Definition: memory.hh:17
ObjectType * getObject(const FactoryType &factory, int level)
i.e. return pointer to Entity
Definition: memory.hh:86
~ALUMemoryProvider()
call deleteEntity
Definition: memory.hh:113
ALUMemoryProvider(const ALUMemoryProvider &org)
copy constructor
Definition: memory.hh:36
void freeObject(ObjectType *obj)
free, move element to stack, returns NULL
Definition: memory.hh:124
ObjectType * stackObject()
Definition: memory.hh:68
Object ObjectType
Definition: memory.hh:28
ObjectType * getEmptyObject()
return object, if created default constructor is used
Definition: memory.hh:100
ALUMemoryProvider()
default constructor
Definition: memory.hh:31
ObjectType * getEntityObject(const FactoryType &factory, int level, EntityImp *)
i.e. return pointer to Entity
Definition: memory.hh:49
Definition: memory.hh:136
void operator++()
increase reference count
Definition: memory.hh:159
const unsigned int & refCount() const
Definition: memory.hh:145
ObjectImp ObjectType
Definition: memory.hh:139
const ObjectType & object() const
Definition: memory.hh:170
ObjectType & object()
Definition: memory.hh:171
unsigned int & refCount()
Definition: memory.hh:144
bool operator!() const
return true if object has no references anymore
Definition: memory.hh:165
void reset()
reset status and reference count
Definition: memory.hh:149
ObjectType object_
Definition: memory.hh:142
bool unique() const
return true if there exists more then on reference
Definition: memory.hh:168
void operator--()
decrease reference count
Definition: memory.hh:162
Definition: memory.hh:176
void removeObject()
Definition: memory.hh:222
void assign(const SharedPointer &other)
Definition: memory.hh:213
ReferenceCountedObjectType * ptr_
Definition: memory.hh:277
SharedPointer & operator=(const SharedPointer &other)
Definition: memory.hh:253
SharedPointer(const SharedPointer &other)
Definition: memory.hh:196
void getObject()
Definition: memory.hh:207
void invalidate()
Definition: memory.hh:237
ObjectType & operator*()
Definition: memory.hh:270
SharedPointer()
Definition: memory.hh:190
const ReferenceCountedObjectType & ptr() const
Definition: memory.hh:275
ObjectImp ObjectType
Definition: memory.hh:178
static MemoryPoolType & memoryPool()
Definition: memory.hh:182
ReferenceCountedObjectType & ptr()
Definition: memory.hh:274
~SharedPointer()
Definition: memory.hh:202
ReferenceCountedObject< ObjectType > ReferenceCountedObjectType
Definition: memory.hh:179
bool unique() const
Definition: memory.hh:267
ALUMemoryProvider< ReferenceCountedObjectType > MemoryPoolType
Definition: memory.hh:180
bool operator==(const SharedPointer &other) const
Definition: memory.hh:265