8#ifndef HPP_ALIB_BOXING_DBGBOXING
9#define HPP_ALIB_BOXING_DBGBOXING 1
21namespace alib {
namespace boxing {
46template<
typename... TAssociatedTypes >
47struct DbgStringTable :
public std::vector<std::tuple<String, TAssociatedTypes...>>
53 using Base = std::vector<ElementType>;
73 template <
typename... TArgs>
77 Base::emplace_back(
String(
allocator, src), std::forward<TArgs>(args)... );
78 return std::get<0>( std::vector<std::tuple<String, TAssociatedTypes...>>::back() );
144 std::vector<detail::VTable*>
160 std::vector<std::pair<const std::type_info*,uinteger>>
174 std::vector<std::pair<const std::type_info*,uinteger>>& output );
187 std::vector<std::pair<const std::type_info*,uinteger>>
190 std::vector<std::pair<const std::type_info*,uinteger>> result;
206 std::vector<std::pair<const std::type_info*,uinteger>>
293 template<
typename TBoxable>
317 template<
typename TBoxable>
320 const String& headline=
A_CHAR(
"Boxing Information For Boxable Type: "),
333 for(
int theSakeOfAutoTabs= 0 ; theSakeOfAutoTabs < 2 ; ++theSakeOfAutoTabs )
340 if(
ATMP_EQ(TSrc, std::nullptr_t ) )
342 target << indent <<
"'std::nullptr_t' sets a box to void state" <<
NEW_LINE;
355 boxing::TT_IsUnboxable <TSrc >::value );
388 bool isValueTypeCustomized,
389 bool isPointerTypeCustomized,
390 bool fitsToPlaceholder,
391 bool copyConstructible,
392 bool triviallyDestructible,
412 const std::vector<std::pair<const std::type_info*,uinteger>>& input,
430 const std::vector<std::pair<const std::type_info*,uinteger>>& input,
452 bool includeFunctions=
false );
471 bool includeFunctions );
473#if ALIB_DEBUG_CONTAINERS
const detail::VTable * DbgGetVTable() const
ALIB_API NAString & GetShort(NAString &target)
constexpr integer Length() const
#define ATMP_EQ( T, TEqual)
#define ALIB_LOCK_RECURSIVE_WITH(lock)
constexpr const String EMPTY_STRING
An empty string of the default character type.
constexpr CString NEW_LINE
A zero-terminated string containing the new-line character sequence.
strings::TString< character > String
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
static ALIB_API void dumpVTables(AString &target, detail::DbgStringTable< const detail::VTable * > &vtableNames, bool staticVtables, bool includeFunctions)
static ALIB_API AString & removeNamespaces(AString &string, integer startIndex)
static ALIB_API std::vector< std::pair< const std::type_info *, uinteger > > GetKnownFunctionTypes()
static AString TypeName(const detail::VTable *vtable)
static std::vector< std::pair< const std::type_info *, uinteger > > GetSpecificFunctionTypes(const detail::VTable *vtable)
static ALIB_API alib::AString DumpFunctions(const std::vector< std::pair< const std::type_info *, uinteger > > &input, const String &headline=EMPTY_STRING, const String &indent=EMPTY_STRING)
static ALIB_API void DumpCustomFunctionHashMapMetrics(AString &target, bool detailedBucketList)
static ALIB_API void typeInfo(AString &target, const detail::VTable *vtable, const String &indent, bool srcIsPointer, bool isValueTypeCustomized, bool isPointerTypeCustomized, bool fitsToPlaceholder, bool copyConstructible, bool triviallyDestructible, bool isUnboxable)
static ALIB_API void dumpFunctions(const std::vector< std::pair< const std::type_info *, uinteger > > &input, AString &output, const String &headline, const String &indent, detail::DbgStringTable< uinteger > &tmpStrings)
static ALIB_API void getFunctionTypes(const detail::FunctionTable &input, std::vector< std::pair< const std::type_info *, uinteger > > &output)
static ALIB_API std::vector< detail::VTable * > GetKnownVTables()
static AString TypeInfo(const String &headline=A_CHAR("Boxing Information For Boxable Type: "), const String &indent=A_CHAR(" "))
static std::vector< std::pair< const std::type_info *, uinteger > > GetSpecificFunctionTypes(const Box &box)
static ALIB_API void typeName(const detail::VTable *vtable, AString &result)
DbgBoxing()=delete
Not constructible.
static ALIB_API AString DumpAll()
static AString TypeName(const Box &box)
static ALIB_API std::vector< String > RemovableNamespaces
See method removeNamespaces. Pre-initialized with "alib::".
static ALIB_API AString DumpVTables(bool staticVtables, bool includeFunctions=false)
static AString TypeInfo(const Box &box, const String &headline=A_CHAR("Boxing Information For Boxable Type: "), const String &indent=A_CHAR(" "))
std::vector< ElementType > Base
Shortcut to the base type of this type.
DbgStringTable(MonoAllocator &monoAllocator)
String & Add(const String &src, TArgs &&... args)
std::tuple< String, TAssociatedTypes... > ElementType
Shortcut to the std::tuple-type that instantiations of this template class store.
MonoAllocator & allocator
Allocator for making copies of inserted strings.
FunctionTable Functions
Box-functions attached with BootstrapRegister.