26 static constexpr bool IsArray=
false;
28 static void* Read (
const Placeholder& box) {
return const_cast<void*
>( box.GetVoidPointer() ); }
43template<
typename TEnum>
44requires std::is_enum<TEnum>::value
48 static constexpr bool IsArray=
false;
50 static constexpr void Write( Placeholder& box, TEnum
const & enumElement )
51 { box.Write(
integer( enumElement ) ); }
53 static TEnum
Read(
const Placeholder& box)
54 {
return TEnum(
static_cast<typename std::underlying_type_t<TEnum>
>( box.Integrals.Array[0]) ); }
62DOX_MARKER([DOX_BOXING_OPTIMIZE_DECLARE_1])
64DOX_MARKER([DOX_BOXING_OPTIMIZE_DECLARE_1])
72#if !ALIB_FEAT_BOXING_BIJECTIVE_INTEGRALS
87 #if ALIB_SIZEOF_INTEGER == 8
93DOX_MARKER([DOX_BOXING_CUSTOM_MANUAL])
100 static constexpr bool IsArray=
false;
103 static constexpr void Write( Placeholder& box, int16_t
const & value ) {
110 static void Read(
const Placeholder& box);
114DOX_MARKER([DOX_BOXING_CUSTOM_MANUAL])
127 #if ALIB_SIZEOF_INTEGER == 8
141 #if ALIB_SIZEOF_INTEGER == 8
153#if !ALIB_FEAT_BOXING_BIJECTIVE_FLOATS
163#if ALIB_SIZEOF_LONGDOUBLE_REPORTED <= 2 * ALIB_SIZEOF_INTEGER
171 static constexpr bool IsArray=
false;
172 static void Write( Placeholder& box,
long double const & value )
174 const char* src =
reinterpret_cast<const char*
>( &value );
175 char* dest=
reinterpret_cast< char*
>( &box );
180 static long double Read (
const Placeholder& placeholder)
183 const char* src =
reinterpret_cast<const char*
>( &placeholder );
184 char* dest=
reinterpret_cast< char*
>( &result );
198#if !ALIB_FEAT_BOXING_BIJECTIVE_CHARACTERS
204 #if ALIB_CHARACTERS_NATIVE_WCHAR
210 # if ALIB_CHARACTERS_SIZEOF_WCHAR == 4
272#if !ALIB_SINGLE_THREADED
#define ALIB_BOXING_VTABLE_DECLARE_ARRAYTYPE(TMapped, Identifier)
#define ALIB_BOXING_CUSTOMIZE_TYPE_MAPPING(TSource, TMapped)
#define ALIB_BOXING_CUSTOMIZE_NOT_UNBOXABLE(TSource, TMapped)
#define ALIB_BOXING_VTABLE_DECLARE(TMapped, Identifier)
#define ALIB_SIZEOF_LONGDOUBLE_WRITTEN
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.
Recursive
Denotes whether recursion is performed/allowed or not.
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.
lang::integer integer
Type alias in namespace alib.
boxing::TBoxes< MonoAllocator > BoxesMA
Type alias in namespace alib.
boxing::TBoxes< lang::HeapAllocator > BoxesHA
Type alias in namespace alib.
static std::conditional_t<!std::is_abstract< TBoxable >::value, TBoxable, TBoxable & > Read(const Placeholder &box)
static constexpr void Write(Placeholder &box, const TBoxable &value)
static constexpr bool IsArray
Denotes whether type TBoxable is boxed as an array-type or not.