ATLAS Offline Software
Loading...
Searching...
No Matches
SG::ArenaAllocatorRegistry Class Reference

Registry of allocator factories. More...

#include <ArenaAllocatorRegistry.h>

Collaboration diagram for SG::ArenaAllocatorRegistry:

Public Member Functions

size_t registerCreator (const std::string &name, std::unique_ptr< ArenaAllocatorCreator > creator)
 Register a new allocator type.
size_t lookup (const std::string &name)
 Look up the index for an allocator type name.
std::unique_ptr< ArenaAllocatorBasecreate (size_t i)
 Create a new instance of an allocator.

Static Public Member Functions

static ArenaAllocatorRegistryinstance ()
 Return a pointer to the global ArenaAllocatorRegistry instance.

Private Member Functions

 ArenaAllocatorRegistry (const ArenaAllocatorRegistry &)
ArenaAllocatorRegistryoperator= (const ArenaAllocatorRegistry &)
 ArenaAllocatorRegistry ()
 Constructor. Called only by instance.
 ~ArenaAllocatorRegistry ()
 Destructor. Called only by instance.

Private Attributes

std::unique_ptr< ArenaAllocatorRegistryImplm_impl
 The implementation object.

Friends

class ArenaAllocatorRegistryImpl

Detailed Description

Registry of allocator factories.

See Arena.h for an overview of the arena-based memory allocators.

Each Allocator type that the application uses is registered here; we assign to each one a small integer index. We can then create an instance of the Allocator given the index. Allocators have names; we also handle finding the index for an Allocator given the name.

Definition at line 43 of file ArenaAllocatorRegistry.h.

Constructor & Destructor Documentation

◆ ArenaAllocatorRegistry() [1/2]

SG::ArenaAllocatorRegistry::ArenaAllocatorRegistry ( const ArenaAllocatorRegistry & )
private

◆ ArenaAllocatorRegistry() [2/2]

SG::ArenaAllocatorRegistry::ArenaAllocatorRegistry ( )
private

Constructor. Called only by instance.

Constructor.

Definition at line 214 of file ArenaAllocatorRegistry.cxx.

215 : m_impl (std::make_unique<ArenaAllocatorRegistryImpl>())
216{
217}
std::unique_ptr< ArenaAllocatorRegistryImpl > m_impl
The implementation object.

◆ ~ArenaAllocatorRegistry()

SG::ArenaAllocatorRegistry::~ArenaAllocatorRegistry ( )
private

Destructor. Called only by instance.

Destructor.

Definition at line 223 of file ArenaAllocatorRegistry.cxx.

224{
225}

Member Function Documentation

◆ create()

std::unique_ptr< ArenaAllocatorBase > SG::ArenaAllocatorRegistry::create ( size_t i)

Create a new instance of an allocator.

Parameters
iThe index of the allocator to create.
Returns
A newly-allocated allocator instance.

Definition at line 195 of file ArenaAllocatorRegistry.cxx.

196{
197 return m_impl->create (i);
198}

◆ instance()

ArenaAllocatorRegistry * SG::ArenaAllocatorRegistry::instance ( )
static

Return a pointer to the global ArenaAllocatorRegistry instance.

Definition at line 204 of file ArenaAllocatorRegistry.cxx.

205{
207 return &tmp;
208}
#define ATLAS_THREAD_SAFE
ArenaAllocatorRegistry(const ArenaAllocatorRegistry &)

◆ lookup()

size_t SG::ArenaAllocatorRegistry::lookup ( const std::string & name)

Look up the index for an allocator type name.

Parameters
nameThe name of the allocator type to find.
Returns
The index corresponding to the type, or std::string::npos if it hasn't yet been registered.

Definition at line 184 of file ArenaAllocatorRegistry.cxx.

185{
186 return m_impl->lookup (name);
187}

◆ operator=()

ArenaAllocatorRegistry & SG::ArenaAllocatorRegistry::operator= ( const ArenaAllocatorRegistry & )
private

◆ registerCreator()

size_t SG::ArenaAllocatorRegistry::registerCreator ( const std::string & name,
std::unique_ptr< ArenaAllocatorCreator > creator )

Register a new allocator type.

Parameters
nameThe name of the allocator type.
creatorThe factory object to create instances of this type. The registry takes ownership of this pointer.
Returns
The new integer index for this allocator type.

If the allocator type already exists, then the index of the existing one is returned (and the object passed as creator is deleted).

Definition at line 171 of file ArenaAllocatorRegistry.cxx.

173{
174 return m_impl->registerCreator (name, std::move (creator));
175}

◆ ArenaAllocatorRegistryImpl

friend class ArenaAllocatorRegistryImpl
friend

Definition at line 98 of file ArenaAllocatorRegistry.h.

Member Data Documentation

◆ m_impl

std::unique_ptr<ArenaAllocatorRegistryImpl> SG::ArenaAllocatorRegistry::m_impl
private

The implementation object.

Definition at line 85 of file ArenaAllocatorRegistry.h.


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