ALib C++ Library
Library Version: 2510 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
boxingcustoms.cpp
1// #################################################################################################
2// ALib C++ Library
3//
4// Copyright 2013-2025 A-Worx GmbH, Germany
5// Published under 'Boost Software License' (a free software license, see LICENSE.txt)
6// #################################################################################################
7#include "alib_precompile.hpp"
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"
10#endif
11#if ALIB_C20_MODULES
12 module;
13#endif
14// ====================================== Global Fragment ======================================
16#if !ALIB_MONOMEM || !ALIB_CONTAINERS
17# include <unordered_map>
18# include <unordered_set>
19#endif
20
21// =========================================== Module ==========================================
22#if ALIB_C20_MODULES
23 module ALib.Boxing;
24 import ALib.Lang;
25#else
26# include "ALib.Lang.H"
27# include "ALib.Boxing.H"
28#endif
29// ====================================== Implementation =======================================
30ALIB_BOXING_VTABLE_DEFINE( void* , vt_voidP )
31ALIB_BOXING_VTABLE_DEFINE( BoxesHA*, vt_boxes )
32#if ALIB_MONOMEM
33ALIB_BOXING_VTABLE_DEFINE( BoxesMA*, vt_boxesma )
34#endif
35ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE( Box , vt_boxarray )
36
37DOX_MARKER([DOX_BOXING_OPTIMIZE_DEFINE_1])
38ALIB_BOXING_VTABLE_DEFINE( bool, vt_bool )
39DOX_MARKER([DOX_BOXING_OPTIMIZE_DEFINE_1])
40
41
42#if !ALIB_FEAT_BOXING_BIJECTIVE_INTEGRALS
43
44 ALIB_BOXING_VTABLE_DEFINE( integer , vt_integer )
45 ALIB_BOXING_VTABLE_DEFINE( uinteger , vt_uinteger)
46
47#else
48 ALIB_BOXING_VTABLE_DEFINE( int8_t , vt_int8_t)
49 ALIB_BOXING_VTABLE_DEFINE( uint8_t , vt_uint8_t)
50 ALIB_BOXING_VTABLE_DEFINE( int16_t , vt_int16_t)
51 ALIB_BOXING_VTABLE_DEFINE( uint16_t , vt_uint16_t)
52 ALIB_BOXING_VTABLE_DEFINE( int32_t , vt_int32_t)
53 ALIB_BOXING_VTABLE_DEFINE( uint32_t , vt_uint32_t)
54 ALIB_BOXING_VTABLE_DEFINE( intGap_t , vt_intGap_t)
55 ALIB_BOXING_VTABLE_DEFINE( uintGap_t , vt_uintGap_t)
56
57 #if ALIB_SIZEOF_INTEGER == 8
58 ALIB_BOXING_VTABLE_DEFINE( int64_t , vt_int64_t)
59 ALIB_BOXING_VTABLE_DEFINE( uint64_t , vt_uint64_t)
60 #endif
61
62#endif
63
64 ALIB_BOXING_VTABLE_DEFINE( double, vt_double )
65#if ALIB_SIZEOF_LONGDOUBLE_REPORTED <= 2 * ALIB_SIZEOF_INTEGER
66 ALIB_BOXING_VTABLE_DEFINE( long double, vt_long_double )
67#endif
68#if ALIB_FEAT_BOXING_BIJECTIVE_FLOATS
69 ALIB_BOXING_VTABLE_DEFINE( float , vt_float )
70#endif
71
72#if !ALIB_FEAT_BOXING_BIJECTIVE_CHARACTERS
73 ALIB_BOXING_VTABLE_DEFINE( wchar , vt_wchar )
74#else
75 ALIB_BOXING_VTABLE_DEFINE( char , vt_char )
76 ALIB_BOXING_VTABLE_DEFINE( wchar_t , vt_wchar_t )
77 ALIB_BOXING_VTABLE_DEFINE( char8_t , vt_char8_t )
78 ALIB_BOXING_VTABLE_DEFINE( char16_t , vt_char16_t )
79 ALIB_BOXING_VTABLE_DEFINE( char32_t , vt_char32_t )
80#endif
81
82DOX_MARKER([DOX_BOXING_OPTIMIZE_DEFINE_2])
83ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE( char, vt_arr_char )
84DOX_MARKER([DOX_BOXING_OPTIMIZE_DEFINE_2])
85ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE( wchar_t , vt_arr_wchar_t )
86ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE( char8_t , vt_arr_char8_t )
87ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE( char16_t , vt_arr_char16_t)
88ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE( char32_t , vt_arr_char32_t)
89
90// #################################################################################################
91// Static VTables for standard types
92// #################################################################################################
93ALIB_BOXING_VTABLE_DEFINE( std::type_info* , vt_std_type_info )
94
95// #################################################################################################
96// Static VTables for low-level ALib types
97// #################################################################################################
98// CodeMarker_CommonEnums
112ALIB_BOXING_VTABLE_DEFINE( alib::lang::Reach , vt_alib_Recursive )
123
125
126
127// time
129ALIB_BOXING_VTABLE_DEFINE( alib::time::Ticks::Duration , vt_time_ticks_duration )
131ALIB_BOXING_VTABLE_DEFINE( alib::time::DateTime::Duration , vt_time_datetime_duration )
132
133#if !ALIB_SINGLE_THREADED
135#endif
136
#define ALIB_BOXING_VTABLE_DEFINE(TMapped, Identifier)
#define ALIB_BOXING_VTABLE_DEFINE_ARRAYTYPE(TMapped, Identifier)
SortOrder
Denotes sort order.
Side
Denotes if something is left or right.
SourceData
Denotes if the source data should be moved or copied.
Reach
Denotes the reach of something.
Timing
Denotes if asynchronous tasks become synchronized.
Alignment
Denotes Alignments.
ContainerOp
Denotes standard container operations.
Switch
Denotes if sth. is switched on or off.
Phase
Denotes a phase, e.g.,of a transaction.
CreateIfNotExists
Denotes whether something should be created if it does not exist.
Case
Denotes upper and lower case character treatment.
CreateDefaults
Denotes whether default entities should be created or not.
Whitespaces
Denotes whether a string is trimmed or not.
Caching
Denotes if a cache mechanism is enabled or disabled.
Propagation
Denotes whether a e.g a setting should be propagated.
ValueReference
Denotes if a value is interpreted as an absolute or relative number.
Safeness
Denotes whether something should be performed in a safe or unsafe fashion.
Initialization
Used for example with constructors that allow to suppress initialization of members.
Inclusion
Denotes how members of a set something should be taken into account.
Timezone
Denotes whether a time value represents local time or UTC.