The Gaudi Framework  master (594c33fa)
GaudiUtils::Allocator< Type > Class Template Reference

#include <GaudiKernel/Allocator.h>

Collaboration diagram for GaudiUtils::Allocator< Type >:

Classes

struct  rebind
 

Public Types

typedef Type value_type
 
typedef size_t size_type
 
typedef ptrdiff_t difference_type
 
typedef Type * pointer
 
typedef const Type * const_pointer
 
typedef Type & reference
 
typedef const Type & const_reference
 

Public Member Functions

 Allocator () throw ()
 Constructor. More...
 
 ~Allocator () throw ()
 destructor More...
 
Type * MallocSingle ()
 Malloc and Free methods to be used when overloading new and delete operators in the client <Type> object. More...
 
void FreeSingle (Type *anElement)
 
void ResetStorage ()
 Returns allocated storage to the free store, resets allocator and page sizes. More...
 
size_t GetAllocatedSize () const
 Returns the size of the total memory allocated. More...
 
template<class U >
 Allocator (const Allocator< U > &right) throw ()
 Copy constructor. More...
 
pointer address (reference r) const
 Returns the address of values. More...
 
const_pointer address (const_reference r) const
 
pointer allocate (size_type n, void *=0)
 Allocates space for n elements of type Type, but does not initialise. More...
 
void deallocate (pointer p, size_type n)
 Deallocates n elements of type Type, but doesn't destroy. More...
 
void construct (pointer p, const Type &val)
 Initialises *p by val. More...
 
void destroy (pointer p)
 Destroy *p but doesn't deallocate. More...
 
size_type max_size () const throw ()
 Returns the maximum number of elements that can be allocated. More...
 

Private Attributes

GaudiUtils::AllocatorPool mem
 

Detailed Description

template<class Type>
class GaudiUtils::Allocator< Type >

Allocator. The class is imported from Geant4 project

Date
2006-02-10

Definition at line 79 of file Allocator.h.

Member Typedef Documentation

◆ const_pointer

template<class Type >
typedef const Type* GaudiUtils::Allocator< Type >::const_pointer

Definition at line 114 of file Allocator.h.

◆ const_reference

template<class Type >
typedef const Type& GaudiUtils::Allocator< Type >::const_reference

Definition at line 116 of file Allocator.h.

◆ difference_type

template<class Type >
typedef ptrdiff_t GaudiUtils::Allocator< Type >::difference_type

Definition at line 112 of file Allocator.h.

◆ pointer

template<class Type >
typedef Type* GaudiUtils::Allocator< Type >::pointer

Definition at line 113 of file Allocator.h.

◆ reference

template<class Type >
typedef Type& GaudiUtils::Allocator< Type >::reference

Definition at line 115 of file Allocator.h.

◆ size_type

template<class Type >
typedef size_t GaudiUtils::Allocator< Type >::size_type

Definition at line 111 of file Allocator.h.

◆ value_type

template<class Type >
typedef Type GaudiUtils::Allocator< Type >::value_type

Definition at line 110 of file Allocator.h.

Constructor & Destructor Documentation

◆ Allocator() [1/2]

template<class Type >
GaudiUtils::Allocator< Type >::Allocator
throw (
)

Constructor.

Definition at line 187 of file Allocator.h.

187 : mem( sizeof( Type ) ) {}

◆ ~Allocator()

template<class Type >
GaudiUtils::Allocator< Type >::~Allocator ( )
throw (
)
inline

destructor

Definition at line 84 of file Allocator.h.

84 {}

◆ Allocator() [2/2]

template<class Type >
template<class U >
GaudiUtils::Allocator< Type >::Allocator ( const Allocator< U > &  right)
throw (
)
inline

Copy constructor.

Definition at line 120 of file Allocator.h.

120 : mem( right.mem ) {}

Member Function Documentation

◆ address() [1/2]

template<class Type >
const_pointer GaudiUtils::Allocator< Type >::address ( const_reference  r) const
inline

Definition at line 124 of file Allocator.h.

124 { return &r; }

◆ address() [2/2]

template<class Type >
pointer GaudiUtils::Allocator< Type >::address ( reference  r) const
inline

Returns the address of values.

Definition at line 123 of file Allocator.h.

123 { return &r; }

◆ allocate()

template<class Type >
pointer GaudiUtils::Allocator< Type >::allocate ( size_type  n,
void *  = 0 
)
inline

Allocates space for n elements of type Type, but does not initialise.

Definition at line 127 of file Allocator.h.

127  {
128  // Allocates space for n elements of type Type, but does not initialise
129  //
130  Type* mem_alloc = 0;
131  if ( n == 1 )
132  mem_alloc = MallocSingle();
133  else
134  mem_alloc = static_cast<Type*>( ::operator new( n * sizeof( Type ) ) );
135  return mem_alloc;
136  }

◆ construct()

template<class Type >
void GaudiUtils::Allocator< Type >::construct ( pointer  p,
const Type &  val 
)
inline

Initialises *p by val.

Definition at line 150 of file Allocator.h.

150 { new ( (void*)p ) Type( val ); }

◆ deallocate()

template<class Type >
void GaudiUtils::Allocator< Type >::deallocate ( pointer  p,
size_type  n 
)
inline

Deallocates n elements of type Type, but doesn't destroy.

Definition at line 139 of file Allocator.h.

139  {
140  // Deallocates n elements of type Type, but doesn't destroy
141  //
142  if ( n == 1 )
143  FreeSingle( p );
144  else
145  ::operator delete( (void*)p );
146  return;
147  }

◆ destroy()

template<class Type >
void GaudiUtils::Allocator< Type >::destroy ( pointer  p)
inline

Destroy *p but doesn't deallocate.

Definition at line 152 of file Allocator.h.

152 { p->~Type(); }

◆ FreeSingle()

template<class Type >
void GaudiUtils::Allocator< Type >::FreeSingle ( Type *  anElement)
inline

Definition at line 203 of file Allocator.h.

203  {
204  mem.Free( anElement );
205  return;
206 }

◆ GetAllocatedSize()

template<class Type >
size_t GaudiUtils::Allocator< Type >::GetAllocatedSize
inline

Returns the size of the total memory allocated.

Definition at line 225 of file Allocator.h.

225  {
226  return mem.Size();
227 }

◆ MallocSingle()

template<class Type >
Type * GaudiUtils::Allocator< Type >::MallocSingle
inline

Malloc and Free methods to be used when overloading new and delete operators in the client <Type> object.

Definition at line 194 of file Allocator.h.

194  {
195  return static_cast<Type*>( mem.Alloc() );
196 }

◆ max_size()

template<class Type >
size_type GaudiUtils::Allocator< Type >::max_size ( ) const
throw (
)
inline

Returns the maximum number of elements that can be allocated.

Definition at line 155 of file Allocator.h.

155  {
156  // Returns the maximum number of elements that can be allocated
157  //
158  return 2147483647 / sizeof( Type );
159  }

◆ ResetStorage()

template<class Type >
void GaudiUtils::Allocator< Type >::ResetStorage
inline

Returns allocated storage to the free store, resets allocator and page sizes.

Note: contents in memory are lost using this call !

Definition at line 213 of file Allocator.h.

213  {
214  // Clear all allocated storage and return it to the free store
215  //
216  mem.Reset();
217  return;
218 }

Member Data Documentation

◆ mem

template<class Type >
GaudiUtils::AllocatorPool GaudiUtils::Allocator< Type >::mem
private

Definition at line 168 of file Allocator.h.


The documentation for this class was generated from the following file:
GaudiUtils::Allocator::MallocSingle
Type * MallocSingle()
Malloc and Free methods to be used when overloading new and delete operators in the client <Type> obj...
Definition: Allocator.h:194
GaudiUtils::AllocatorPool::Size
unsigned int Size() const
Return storage size.
Definition: AllocatorPool.h:143
GaudiUtils::AllocatorPool::Free
void Free(void *b)
Return an element back to the pool.
Definition: AllocatorPool.h:133
GaudiUtils::Allocator::mem
GaudiUtils::AllocatorPool mem
Definition: Allocator.h:168
GaudiPluginService.cpluginsvc.n
n
Definition: cpluginsvc.py:234
std::right
T right(T... args)
Tuples::Type
Type
Definition: TupleObj.h:91
GaudiUtils::AllocatorPool::Alloc
void * Alloc()
Allocate one element.
Definition: AllocatorPool.h:122
GaudiUtils::AllocatorPool::Reset
void Reset()
Return storage to the free store.
Definition: AllocatorPool.cpp:93
GaudiUtils::Allocator::FreeSingle
void FreeSingle(Type *anElement)
Definition: Allocator.h:203