8#if !defined(ALIB_C20_MODULES) || ((ALIB_C20_MODULES != 0) && (ALIB_C20_MODULES != 1))
9# error "Symbol ALIB_C20_MODULES has to be given to the compiler as either 0 or 1"
18# include <unordered_map>
19# include <unordered_set>
51 DbgKnownVTables.InsertUnique( std::make_pair( &vtable->
Type, vtable ) );
53 if ( DbgKnownVTables.find( &vtable->
Type ) != DbgKnownVTables.end() )
55 ALIB_ERROR(
"BOXING",
"Double instantiation of VTable of Type: \"{}\"",
61 DbgKnownVTables.insert(std::make_pair( &vtable->
Type, vtable ) );
68 DbgKnownVTablesArray.InsertUnique(std::make_pair( &vtable->
ElementType, vtable ) );
70 if ( DbgKnownVTablesArray.find( &vtable->
ElementType ) != DbgKnownVTablesArray.end() )
72 ALIB_ERROR(
"BOXING",
"Double instantiation of VTable of Type: \"{}[]\"",
78 DbgKnownVTablesArray.insert(std::make_pair( &vtable->
ElementType, vtable ) );
91 while( (idx=
string.IndexOf(search, startIndex) ) >= 0 )
92 string.Delete( idx, search.Length() );
99 A_CHAR(
"alib::boxing::" ),
105 auto startLength= result.
Length();
107 result << vtable->
Type;
TAString & DeleteStart(integer regionLength)
constexpr integer Length() const
bool StartsWith(const TString &needle) const
#define ALIB_ERROR(domain,...)
#define ALIB_LOCK_RECURSIVE_WITH(lock)
std::vector< alib::String > RemovableNamespaces
See function removeNamespaces. Pre-initialized with "alib::".
AString & removeNamespaces(AString &string, integer startIndex)
void typeName(const detail::VTable *vtable, AString &result)
void DbgRegisterVTable(detail::VTable *vtable, detail::VTable::DbgFactoryType productionType)
ALIB_DLL RecursiveLock GLOBAL_ALLOCATOR_LOCK
strings::TAString< character, lang::HeapAllocator > AString
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
The custom function hash.
const std::type_info & ElementType
DbgFactoryType DbgProduction
Debug information.
const std::type_info & Type