Geant4  10.02.p03
G4Allocator< Type > Class Template Reference

#include <G4Allocator.hh>

Inheritance diagram for G4Allocator< Type >:
Collaboration diagram for G4Allocator< 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

 G4Allocator () throw ()
 
 ~G4Allocator () throw ()
 
Type * MallocSingle ()
 
void FreeSingle (Type *anElement)
 
void ResetStorage ()
 
size_t GetAllocatedSize () const
 
int GetNoPages () const
 
size_t GetPageSize () const
 
void IncreasePageSize (unsigned int sz)
 
const char * GetPoolType () const
 
template<class U >
 G4Allocator (const G4Allocator< U > &right) throw ()
 
pointer address (reference r) const
 
const_pointer address (const_reference r) const
 
pointer allocate (size_type n, void *=0)
 
void deallocate (pointer p, size_type n)
 
void construct (pointer p, const Type &val)
 
void destroy (pointer p)
 
size_type max_size () const throw ()
 
- Public Member Functions inherited from G4AllocatorBase
 G4AllocatorBase ()
 
virtual ~G4AllocatorBase ()
 

Public Attributes

G4AllocatorPool mem
 

Private Attributes

const char * tname
 

Detailed Description

template<class Type>
class G4Allocator< Type >

Definition at line 67 of file G4Allocator.hh.

Member Typedef Documentation

◆ const_pointer

template<class Type>
typedef const Type* G4Allocator< Type >::const_pointer

Definition at line 110 of file G4Allocator.hh.

◆ const_reference

template<class Type>
typedef const Type& G4Allocator< Type >::const_reference

Definition at line 112 of file G4Allocator.hh.

◆ difference_type

template<class Type>
typedef ptrdiff_t G4Allocator< Type >::difference_type

Definition at line 108 of file G4Allocator.hh.

◆ pointer

template<class Type>
typedef Type* G4Allocator< Type >::pointer

Definition at line 109 of file G4Allocator.hh.

◆ reference

template<class Type>
typedef Type& G4Allocator< Type >::reference

Definition at line 111 of file G4Allocator.hh.

◆ size_type

template<class Type>
typedef size_t G4Allocator< Type >::size_type

Definition at line 107 of file G4Allocator.hh.

◆ value_type

template<class Type>
typedef Type G4Allocator< Type >::value_type

Definition at line 106 of file G4Allocator.hh.

Constructor & Destructor Documentation

◆ G4Allocator() [1/2]

template<class Type >
G4Allocator< Type >::G4Allocator ( )
throw (
)

Definition at line 182 of file G4Allocator.hh.

183  : mem(sizeof(Type))
184 {
185  tname = typeid(Type).name();
186 }
G4String name
Definition: TRTMaterials.hh:40
G4AllocatorPool mem
Definition: G4Allocator.hh:160
const char * tname
Definition: G4Allocator.hh:165

◆ ~G4Allocator()

template<class Type >
G4Allocator< Type >::~G4Allocator ( )
throw (
)

Definition at line 193 of file G4Allocator.hh.

194 {
195 }

◆ G4Allocator() [2/2]

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

Definition at line 114 of file G4Allocator.hh.

115  : mem(right.mem) {}
G4AllocatorPool mem
Definition: G4Allocator.hh:160

Member Function Documentation

◆ address() [1/2]

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

Definition at line 118 of file G4Allocator.hh.

118 { return &r; }

◆ address() [2/2]

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

Definition at line 119 of file G4Allocator.hh.

119 { return &r; }

◆ allocate()

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

Definition at line 122 of file G4Allocator.hh.

123  {
124  // Allocates space for n elements of type Type, but does not initialise
125  //
126  Type* mem_alloc = 0;
127  if (n == 1)
128  mem_alloc = MallocSingle();
129  else
130  mem_alloc = static_cast<Type*>(::operator new(n*sizeof(Type)));
131  return mem_alloc;
132  }
Type * MallocSingle()
Definition: G4Allocator.hh:202
Char_t n[5]

◆ construct()

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

Definition at line 144 of file G4Allocator.hh.

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

◆ deallocate()

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

Definition at line 133 of file G4Allocator.hh.

134  {
135  // Deallocates n elements of type Type, but doesn't destroy
136  //
137  if (n == 1)
138  FreeSingle(p);
139  else
140  ::operator delete((void*)p);
141  return;
142  }
void FreeSingle(Type *anElement)
Definition: G4Allocator.hh:212
Char_t n[5]

◆ destroy()

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

Definition at line 146 of file G4Allocator.hh.

146 { p->~Type(); }

◆ FreeSingle()

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

Definition at line 212 of file G4Allocator.hh.

213 {
214  mem.Free(anElement);
215  return;
216 }
G4AllocatorPool mem
Definition: G4Allocator.hh:160
void Free(void *b)
Here is the caller graph for this function:

◆ GetAllocatedSize()

template<class Type >
size_t G4Allocator< Type >::GetAllocatedSize ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 236 of file G4Allocator.hh.

237 {
238  return mem.Size();
239 }
G4AllocatorPool mem
Definition: G4Allocator.hh:160
unsigned int Size() const

◆ GetNoPages()

template<class Type >
int G4Allocator< Type >::GetNoPages ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 246 of file G4Allocator.hh.

247 {
248  return mem.GetNoPages();
249 }
G4AllocatorPool mem
Definition: G4Allocator.hh:160
int GetNoPages() const

◆ GetPageSize()

template<class Type >
size_t G4Allocator< Type >::GetPageSize ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 256 of file G4Allocator.hh.

257 {
258  return mem.GetPageSize();
259 }
G4AllocatorPool mem
Definition: G4Allocator.hh:160
unsigned int GetPageSize() const

◆ GetPoolType()

template<class Type >
const char * G4Allocator< Type >::GetPoolType ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 277 of file G4Allocator.hh.

278 {
279  return tname;
280 }
const char * tname
Definition: G4Allocator.hh:165

◆ IncreasePageSize()

template<class Type >
void G4Allocator< Type >::IncreasePageSize ( unsigned int  sz)
inlinevirtual

Implements G4AllocatorBase.

Definition at line 266 of file G4Allocator.hh.

267 {
268  ResetStorage();
269  mem.GrowPageSize(sz);
270 }
void GrowPageSize(unsigned int factor)
G4AllocatorPool mem
Definition: G4Allocator.hh:160
void ResetStorage()
Definition: G4Allocator.hh:223

◆ MallocSingle()

template<class Type >
Type * G4Allocator< Type >::MallocSingle ( )
inline

Definition at line 202 of file G4Allocator.hh.

203 {
204  return static_cast<Type*>(mem.Alloc());
205 }
G4AllocatorPool mem
Definition: G4Allocator.hh:160
Here is the caller graph for this function:

◆ max_size()

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

Definition at line 149 of file G4Allocator.hh.

150  {
151  // Returns the maximum number of elements that can be allocated
152  //
153  return 2147483647/sizeof(Type);
154  }

◆ ResetStorage()

template<class Type >
void G4Allocator< Type >::ResetStorage ( )
inlinevirtual

Implements G4AllocatorBase.

Definition at line 223 of file G4Allocator.hh.

224 {
225  // Clear all allocated storage and return it to the free store
226  //
227  mem.Reset();
228  return;
229 }
G4AllocatorPool mem
Definition: G4Allocator.hh:160

Member Data Documentation

◆ mem

template<class Type>
G4AllocatorPool G4Allocator< Type >::mem

Definition at line 160 of file G4Allocator.hh.

◆ tname

template<class Type>
const char* G4Allocator< Type >::tname
private

Definition at line 165 of file G4Allocator.hh.


The documentation for this class was generated from the following file: