Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Data Structures | Public Types | Public Member Functions | Data Fields
G4Allocator< Type > Class Template Reference

#include <G4Allocator.hh>

Inheritance diagram for G4Allocator< Type >:
G4AllocatorBase

Data Structures

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)
 
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 ()
 

Data Fields

G4AllocatorPool mem
 

Detailed Description

template<class Type>
class G4Allocator< Type >

Definition at line 65 of file G4Allocator.hh.

Member Typedef Documentation

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

Definition at line 105 of file G4Allocator.hh.

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

Definition at line 107 of file G4Allocator.hh.

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

Definition at line 103 of file G4Allocator.hh.

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

Definition at line 104 of file G4Allocator.hh.

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

Definition at line 106 of file G4Allocator.hh.

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

Definition at line 102 of file G4Allocator.hh.

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

Definition at line 101 of file G4Allocator.hh.

Constructor & Destructor Documentation

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

Definition at line 172 of file G4Allocator.hh.

173  : mem(sizeof(Type))
174 {
175 }
G4AllocatorPool mem
Definition: G4Allocator.hh:155
template<class Type >
G4Allocator< Type >::~G4Allocator ( )
throw (
)

Definition at line 182 of file G4Allocator.hh.

183 {
184 }
template<class Type>
template<class U >
G4Allocator< Type >::G4Allocator ( const G4Allocator< U > &  right)
throw (
)
inline

Definition at line 109 of file G4Allocator.hh.

110  : mem(right.mem) {}
G4AllocatorPool mem
Definition: G4Allocator.hh:155

Member Function Documentation

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

Definition at line 113 of file G4Allocator.hh.

113 { return &r; }
template<class Type>
const_pointer G4Allocator< Type >::address ( const_reference  r) const
inline

Definition at line 114 of file G4Allocator.hh.

114 { return &r; }
template<class Type>
pointer G4Allocator< Type >::allocate ( size_type  n,
void = 0 
)
inline

Definition at line 117 of file G4Allocator.hh.

References G4Allocator< Type >::MallocSingle().

118  {
119  // Allocates space for n elements of type Type, but does not initialise
120  //
121  Type* mem_alloc = 0;
122  if (n == 1)
123  mem_alloc = MallocSingle();
124  else
125  mem_alloc = static_cast<Type*>(::operator new(n*sizeof(Type)));
126  return mem_alloc;
127  }
Type * MallocSingle()
Definition: G4Allocator.hh:191
const G4int n
template<class Type>
void G4Allocator< Type >::construct ( pointer  p,
const Type &  val 
)
inline

Definition at line 139 of file G4Allocator.hh.

139 { new((void*)p) Type(val); }
const char * p
Definition: xmltok.h:285
template<class Type>
void G4Allocator< Type >::deallocate ( pointer  p,
size_type  n 
)
inline

Definition at line 128 of file G4Allocator.hh.

References G4Allocator< Type >::FreeSingle().

129  {
130  // Deallocates n elements of type Type, but doesn't destroy
131  //
132  if (n == 1)
133  FreeSingle(p);
134  else
135  ::operator delete((void*)p);
136  return;
137  }
const char * p
Definition: xmltok.h:285
void FreeSingle(Type *anElement)
Definition: G4Allocator.hh:201
const G4int n
template<class Type>
void G4Allocator< Type >::destroy ( pointer  p)
inline

Definition at line 141 of file G4Allocator.hh.

141 { p->~Type(); }
const char * p
Definition: xmltok.h:285
template<class Type >
void G4Allocator< Type >::FreeSingle ( Type *  anElement)
inline
template<class Type >
size_t G4Allocator< Type >::GetAllocatedSize ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 225 of file G4Allocator.hh.

226 {
227  return mem.Size();
228 }
unsigned int Size() const
G4AllocatorPool mem
Definition: G4Allocator.hh:155
template<class Type >
int G4Allocator< Type >::GetNoPages ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 235 of file G4Allocator.hh.

236 {
237  return mem.GetNoPages();
238 }
G4AllocatorPool mem
Definition: G4Allocator.hh:155
int GetNoPages() const
template<class Type >
size_t G4Allocator< Type >::GetPageSize ( ) const
inlinevirtual

Implements G4AllocatorBase.

Definition at line 245 of file G4Allocator.hh.

246 {
247  return mem.GetPageSize();
248 }
G4AllocatorPool mem
Definition: G4Allocator.hh:155
unsigned int GetPageSize() const
template<class Type >
void G4Allocator< Type >::IncreasePageSize ( unsigned int  sz)
inlinevirtual

Implements G4AllocatorBase.

Definition at line 255 of file G4Allocator.hh.

256 {
257  ResetStorage();
258  mem.GrowPageSize(sz);
259 }
void GrowPageSize(unsigned int factor)
G4AllocatorPool mem
Definition: G4Allocator.hh:155
void ResetStorage()
Definition: G4Allocator.hh:212
template<class Type >
Type * G4Allocator< Type >::MallocSingle ( )
inline
template<class Type>
size_type G4Allocator< Type >::max_size ( ) const
throw (
)
inline

Definition at line 144 of file G4Allocator.hh.

145  {
146  // Returns the maximum number of elements that can be allocated
147  //
148  return 2147483647/sizeof(Type);
149  }
template<class Type >
void G4Allocator< Type >::ResetStorage ( )
inlinevirtual

Implements G4AllocatorBase.

Definition at line 212 of file G4Allocator.hh.

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

Field Documentation

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

Definition at line 155 of file G4Allocator.hh.


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