ALib C++ Library
Library Version: 2510 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
alib::resources::LocalResourcePool Class Reference

Description:

This class provides a very simple implementation of abstract interface class ResourcePool, which does not externalize resources.

A shared instance of this class is attached to each ALib Module, if the bootstrapping of ALib is not customized.

With the use of type HashTable for its internal data management, this class uses monotonically growing memory taken from the global allocator.

Only pointers to the given resources (as well as their associated category and name strings) are stored, hence all string argument's of this class's methods have to be static data.

For debug or optimization purposes, method BootstrapGetInternalHashMap is given that allows fine-tune the performance parameters or to inspect the data. For the latter, in debug-compilations, consider also methods DbgGetList and DbgGetCategories.

See also
Please consult the Programmer's Manual of module ALib Resources for details on the concept of resources. Some details on this specific type are given in chapter 4.1 Class LocalResourcePool.

Definition at line 35 of file localresourcepool.inl.

Inheritance diagram for alib::resources::LocalResourcePool:
[legend]
Collaboration diagram for alib::resources::LocalResourcePool:
[legend]

Public Static Field Index:

static std::ostream * DbgResourceLoadObserver = nullptr
 

Public Method Index:

 LocalResourcePool ()
 Constructor.
 
virtual ALIB_DLL ~LocalResourcePool () override
 Destructor.
 
virtual ALIB_DLL bool BootstrapAddOrReplace (const NString &category, const NString &name, const String &data) override
 
virtual ALIB_DLL void BootstrapBulk (const nchar *category,...) override
 
detail::StaticResourceMapBootstrapGetInternalHashMap ()
 
virtual ALIB_DLL std::vector< std::pair< NString, integer > > DbgGetCategories () override
 
virtual ALIB_DLL std::vector< std::tuple< NString, NString, String, integer > > DbgGetList () override
 
virtual ALIB_DLL const StringGet (const NString &category, const NString &name, bool dbgAssert) override
 
- Public Method Index: inherited from alib::resources::ResourcePool
virtual ~ResourcePool ()=default
 Virtual destructor.
 
void Bootstrap (const NString &category, const NString &name, const String &data)
 
const StringGet (const NString &category, const String &name, bool dbgAssert)
 

Protected Field Index:

detail::StaticResourceMap data
 A hash map used to store static resources.
 

Field Details:

◆ data

detail::StaticResourceMap alib::resources::LocalResourcePool::data
protected

A hash map used to store static resources.

Definition at line 39 of file localresourcepool.inl.

◆ DbgResourceLoadObserver

std::ostream * alib::resources::LocalResourcePool::DbgResourceLoadObserver = nullptr
static

If set before bootstrapping (e.g., to &std::cout), then each found resource string is written here. This is very useful to find errors in bulk resource strings, for example a simple missing comma.

Availability
Available only if the compiler-symbol ALIB_DEBUG_RESOURCES is set.
See also
Manual section 6.3 Debug- And Usage Statistics.

Definition at line 50 of file localresourcepool.inl.

Constructor(s) / Destructor Details:

◆ LocalResourcePool()

alib::resources::LocalResourcePool::LocalResourcePool ( )
inline

Constructor.

Definition at line 58 of file localresourcepool.inl.

◆ ~LocalResourcePool()

virtual ALIB_DLL alib::resources::LocalResourcePool::~LocalResourcePool ( )
inlineoverridevirtual

Destructor.

Definition at line 65 of file localresourcepool.inl.

Method Details:

◆ BootstrapAddOrReplace()

bool alib::resources::LocalResourcePool::BootstrapAddOrReplace ( const NString & category,
const NString & name,
const String & data )
overridevirtual

Implements abstract method ResourcePool::BootstrapAddOrReplace.

Note
If the compiler-symbol ALIB_DEBUG_RESOURCES is set on compilation and static field LocalResourcePool::DbgResourceLoadObserver is set before bootstrapping, this method will write information about whether the given data is added or replaced to the debug output stream.
Parameters
categoryCategory string of the resource to add.
nameName string of the resource.
dataThe resource data.
Returns
true if the resource did exist and was replaced, false if it was an insertion.

Implements alib::resources::ResourcePool.

Definition at line 51 of file localresourcepool.cpp.

◆ BootstrapBulk()

void alib::resources::LocalResourcePool::BootstrapBulk ( const nchar * category,
... )
overridevirtual

Implements abstract method ResourcePool::BootstrapBulk.

Parameters
categoryThe category of the resources given.
...A list of pairs of const nchar* and const character* keys and data, including a terminating nullptr value.

Implements alib::resources::ResourcePool.

Definition at line 71 of file localresourcepool.cpp.

◆ BootstrapGetInternalHashMap()

detail::StaticResourceMap & alib::resources::LocalResourcePool::BootstrapGetInternalHashMap ( )
inline

Returns the internal table that maps a pair of category and name strings to the resource string.

Access to this map may be useful for two purposes:

  1. Debug inspection.
  2. Modification of the parameters of the hash table. (For example, the use of methods Reserve, BaseLoadFactor or MaxLoadFactor).

Modifications on the returned object are allowed only while no threads have been started by the software process (respectively no threads that use ALib ), which usually is true during bootstrapping a process. Therefore , the prefix in this method's name.

Returns
The internal hash map.

Definition at line 83 of file localresourcepool.inl.

◆ DbgGetCategories()

std::vector< std::pair< NString, integer > > alib::resources::LocalResourcePool::DbgGetCategories ( )
overridevirtual

Implements abstract method ResourcePool::DbgGetCategories.

Availability
Available only if the compiler-symbol ALIB_DEBUG_RESOURCES is set.
Returns
The externalized resource string.

Reimplemented from alib::resources::ResourcePool.

Definition at line 182 of file localresourcepool.cpp.

Here is the call graph for this function:

◆ DbgGetList()

std::vector< std::tuple< NString, NString, String, integer > > alib::resources::LocalResourcePool::DbgGetList ( )
overridevirtual

Returns a vector of tuples for each resourced element. Each tuple contains:

  1. The category name
  2. The resource name
  3. The resource value
  4. The number of requests for the resource performed by using software.

While being useful to generally inspect the resources, a high number of requests might indicate a performance penalty. Mitigation can usually be performed in a very simple fashion by "caching" a resource string in a local or global/static string variable.

Availability
Available only if the compiler-symbol ALIB_DEBUG_RESOURCES is set.
Attention
This function is implemented only with the default pool instance of type LocalResourcePool is used. Otherwise, an ALib warning is raised and an empty vector is returned.
See also
Methods DbgGetCategories and DbgDump.
Returns
The externalized resource string.

Reimplemented from alib::resources::ResourcePool.

Definition at line 152 of file localresourcepool.cpp.

◆ Get()

const String & alib::resources::LocalResourcePool::Get ( const NString & category,
const NString & name,
bool dbgAssert )
overridevirtual

Implements abstract method ResourcePool::Get.

Parameters
categoryCategory string of the resource.
nameName string of the resource
dbgAssertThis parameter is available (and to be passed) only in debug mode. If true, an error is raised if the resource was not found.
Returns
The resource string, respectively a nulled string on failure.

Implements alib::resources::ResourcePool.

Definition at line 109 of file localresourcepool.cpp.


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