26 static constexpr bool IsArray=
false;
29 return const_cast<void*
>( box.GetVoidPointer() );
45template<
typename TEnum>
46requires std::is_enum<TEnum>::value
50 static constexpr bool IsArray=
false;
52 static constexpr void Write( Placeholder& box, TEnum
const & enumElement )
53 { box.Write(
integer( enumElement ) ); }
55 static TEnum
Read(
const Placeholder& box)
56 {
return TEnum(
static_cast<typename std::underlying_type_t<TEnum>
>(box.Integrals.Array[0])); }
64DOX_MARKER([DOX_BOXING_OPTIMIZE_DECLARE_1])
66DOX_MARKER([DOX_BOXING_OPTIMIZE_DECLARE_1])
74#if !ALIB_FEAT_BOXING_BIJECTIVE_INTEGRALS
89 #if ALIB_SIZEOF_INTEGER == 8
95DOX_MARKER([DOX_BOXING_CUSTOM_MANUAL])
102 static constexpr bool IsArray=
false;
105 static constexpr void Write( Placeholder& box, int16_t
const & value ) {
112 static void Read(
const Placeholder& box);
116DOX_MARKER([DOX_BOXING_CUSTOM_MANUAL])
129 #if ALIB_SIZEOF_INTEGER == 8
143 #if ALIB_SIZEOF_INTEGER == 8
155#if !ALIB_FEAT_BOXING_BIJECTIVE_FLOATS
165#if ALIB_SIZEOF_LONGDOUBLE_REPORTED <= 2 * ALIB_SIZEOF_INTEGER
173 static constexpr bool IsArray=
false;
174 static void Write( Placeholder& box,
long double const & value ) {
175 const char* src =
reinterpret_cast<const char*
>( &value );
176 char* dest=
reinterpret_cast< char*
>( &box );
181 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
273#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.
LineFeeds
Denotes line-feed encoding sequences "\n" and "\r\n".
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.
boxing::TBoxes< lang::HeapAllocator > Boxes
Type alias in namespace alib.
lang::integer integer
Type alias in namespace alib.
boxing::TBoxes< MonoAllocator > BoxesMA
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.