ALib C++ Framework
by
Library Version: 2511 R0
Documentation generated by doxygen
Loading...
Searching...
No Matches
alib.inl File Reference

Description:

This header-file is part of the ALib C++ Framework.

© 2013-2025 A-Worx GmbH, Germany. Published under Boost Software License.

This header does not belong to a module of ALib, but is included in any ALib Build. Its purposes are:

  • To identify given 2. Configuration Macros related to module selection and enable corresponding configuration macros (that may be not given) of mandatory dependent modules.
  • Detect and assert C++ language version.
  • Define preprocessor utilities as needed throughout ALib.

Definition in file alib.inl.

#include <version>
#include <concepts>
#include <type_traits>
#include <thread>
#include <assert.h>

Go to the source code of this file.

Macros

#define A_CCHAR(STR)
#define A_CHAR(STR)
#define A_NCHAR(STR)
#define A_SCHAR(STR)
#define A_WCHAR(STR)
#define A_XCHAR(STR)
#define ALIB_ALLOW_BITWISE_SWITCH
#define ALIB_ALLOW_DEPRECATED
#define ALIB_ALLOW_DOCS   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_FUNCTION_TEMPLATE   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_INTEGER_OVERFLOW
#define ALIB_ALLOW_INTEGRAL_CONSTANT_OVERFLOW   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_MACRO_REDEFINITION   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_MACROS_WITH_RESERVED_NAME   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_MISSING_FIELD_INITIALIZERS
#define ALIB_ALLOW_NOT_ELIDING_COPY_ON_RETURN   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_NOTHING_RETURNED
#define ALIB_ALLOW_NULL_POINTER_PASSING
#define ALIB_ALLOW_OVERLOADED_VIRTUALS   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_RESERVED_IDENTIFIER   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_SHIFT_COUNT_OVERFLOW
#define ALIB_ALLOW_SIGN_CONVERSION
#define ALIB_ALLOW_SPARSE_ENUM_SWITCH
#define ALIB_ALLOW_SWITCH_WITHOUT_DEFAULT
#define ALIB_ALLOW_UNINITIALIZED
#define ALIB_ALLOW_UNREACHABLE_CODE   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_UNSAFE_FUNCTION_OR_VARIABLE   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_UNUSED_FUNCTION
#define ALIB_ALLOW_UNUSED_LAMBDA_CAPTURE   _Pragma("GCC diagnostic push") \
#define ALIB_ALLOW_UNUSED_MACRO
#define ALIB_ALLOW_UNUSED_PARAMETER
#define ALIB_ALLOW_UNUSED_VARIABLE
#define ALIB_ALOX   1
#define ALIB_API_IS_DLL
#define ALIB_API_NO_DLL
#define ALIB_APP   1
#define ALIB_ASSERT(cond, domain)
#define ALIB_ASSERT_ERROR(cond, domain, ...)
#define ALIB_ASSERT_GLOBAL_NAMESPACE
#define ALIB_ASSERT_MESSAGE(cond, domain, ...)
#define ALIB_ASSERT_MODULE(modulename)
#define ALIB_ASSERT_RESULT_EQUALS( func, value)
#define ALIB_ASSERT_RESULT_GREATER_THAN(func, value)
#define ALIB_ASSERT_RESULT_LESS_THAN( func, value)
#define ALIB_ASSERT_RESULT_NOT_EQUALS( func, value)
#define ALIB_ASSERT_WARNING(cond, domain, ...)
#define ALIB_BASE_DIR
#define ALIB_BITBUFFER   1
#define ALIB_BOXING   1
#define ALIB_C20_MODULES
#define ALIB_CALLER   {__FILE__,__LINE__,ALIB_CALLER_FUNC,::std::this_thread::get_id(),&typeid(*this)}
#define ALIB_CALLER_FUNC   __FUNCTION__
#define ALIB_CALLER_NULLED   ALIB_CALLER
#define ALIB_CALLER_NULLED_COMMA   ALIB_CALLER ,
#define ALIB_CALLER_PRUNED   ALIB_CALLER
#define ALIB_CALLER_PRUNED_COMMA   ALIB_CALLER ,
#define ALIB_CAMP   1
#define ALIB_CHAR_TYPE_ID_CHARACTER   1
#define ALIB_CHAR_TYPE_ID_COMPLEMENT   2
#define ALIB_CHAR_TYPE_ID_N   1
#define ALIB_CHAR_TYPE_ID_STRANGE   3
#define ALIB_CHAR_TYPE_ID_W   2
#define ALIB_CHAR_TYPE_ID_X   3
#define ALIB_CHARACTER_ARRAY( T, TChar, Access, Construction)
#define ALIB_CHARACTER_ARRAY_IMPL_BUFFER( T, TChar, ...)
#define ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE( T, TChar, ...)
#define ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT( T, TChar, ...)
#define ALIB_CHARACTER_ARRAY_IMPL_LENGTH( T, TChar, ...)
#define ALIB_CHARACTER_ARRAY_IMPL_LENGTH_MUTABLE( T, TChar, ...)
#define ALIB_CHARACTER_ARRAY_MUTABLE( T, TChar, Construction)
#define ALIB_CHARACTER_ZT_ARRAY( T, TChar, Access, Construction)
#define ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER( T, TChar, ...)
#define ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER_MUTABLE(T, TChar, ...)
#define ALIB_CHARACTER_ZT_ARRAY_IMPL_CONSTRUCT( T, TChar, ...)
#define ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH( T, TChar, ...)
#define ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH_MUTABLE(T, TChar, ...)
#define ALIB_CHARACTER_ZT_ARRAY_MUTABLE(T, TChar, Construction)
#define ALIB_CHARACTERS_NATIVE_WCHAR   1
#define ALIB_CHARACTERS_SIZEOF_WCHAR   ALIB_SIZEOF_WCHAR_T
#define ALIB_CHARACTERS_WIDE   1
#define ALIB_CLI   1
#define ALIB_COMMA   ,
#define ALIB_COMMA_CALLER_NULLED   , ALIB_CALLER
#define ALIB_COMMA_CALLER_PRUNED   , ALIB_CALLER
#define ALIB_COMMA_DBG   ,
#define ALIB_CONCAT(a, b)
#define ALIB_CONTAINERS   1
#define ALIB_CPP_23(...)
#define ALIB_CPP_BEFORE_23(...)
#define ALIB_CPP_STANDARD
#define ALIB_DBG(...)
#define ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS
#define ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS_MEMBER_DECL   bool dbgRecursionDetectionFlag = false;
#define ALIB_DBG_TAKE_CI   const CallerInfo& ci
#define ALIB_DCS   ALIB_OWN(*this)
#define ALIB_DCS_ACQUIRE   Acquire(ALIB_CALLER);
#define ALIB_DCS_ACQUIRE_SHARED   AcquireShared(ALIB_CALLER);
#define ALIB_DCS_ACQUIRE_SHARED_WITH(CS)
#define ALIB_DCS_ACQUIRE_WITH(CS)
#define ALIB_DCS_RELEASE   Release(ALIB_CALLER);
#define ALIB_DCS_RELEASE_SHARED   ReleaseShared(ALIB_CALLER);
#define ALIB_DCS_RELEASE_SHARED_WITH(CS)
#define ALIB_DCS_RELEASE_WITH(CS)
#define ALIB_DCS_SHARED   ALIB_OWN_SHARED(*this)
#define ALIB_DCS_SHARED_WITH(CS)
#define ALIB_DCS_WITH(CS)
#define ALIB_DEBUG
#define ALIB_DEBUG_ALLOCATIONS   1
#define ALIB_DEBUG_ARRAY_COMPRESSION   1
#define ALIB_DEBUG_ASSERTION_PRINTABLES
#define ALIB_DEBUG_BOXING   1
#define ALIB_DEBUG_CONTAINERS   1
#define ALIB_DEBUG_CRITICAL_SECTIONS   1
#define ALIB_DEBUG_MEMORY   1
#define ALIB_DEBUG_RESOURCES   1
#define ALIB_DEBUG_STRINGS   1
#define ALIB_DLL
#define ALIB_DOCUMENTATION_URL   "https://alib.dev/"
 DOXYGEN.
#define ALIB_EMPTY
#define ALIB_ENUMRECORDS   1
#define ALIB_ERROR(domain, ...)
#define ALIB_EXCEPTIONS   1
#define ALIB_EXPORT
#define ALIB_EXPRESSIONS   1
#define ALIB_EXT_LIB_THREADS_AVAILABLE
#define ALIB_FALLTHROUGH
#define ALIB_FEAT_BOOST_REGEX   1
#define ALIB_FEAT_BOXING_BIJECTIVE_CHARACTERS   1
#define ALIB_FEAT_BOXING_BIJECTIVE_FLOATS   1
#define ALIB_FEAT_BOXING_BIJECTIVE_INTEGRALS   1
#define ALIB_FEAT_SINGLETON_MAPPED   1
#define ALIB_FILES   1
#define ALIB_FORMAT   1
#define ALIB_GCC
#define ALIB_GTEST
#define ALIB_HAS_METHOD(T, Method, ...)
#define ALIB_IDENTIFIER(prefix)
#define ALIB_INTGAP_TYPE
#define ALIB_LOCK   ALIB_OWN(*this)
#define ALIB_LOCK_RECURSIVE   ALIB_OWN_RECURSIVE(*this)
#define ALIB_LOCK_RECURSIVE_WITH(lock)
#define ALIB_LOCK_SHARED   ALIB_OWN_SHARED(*this)
#define ALIB_LOCK_SHARED_WITH(lock)
#define ALIB_LOCK_WITH(lock)
#define ALIB_MESSAGE(domain, ...)
#define ALIB_MONOMEM   1
#define ALIB_NSTRINGIFY(a)
#define ALIB_OWN( ownable)
#define ALIB_OWN_RECURSIVE(ownable)
#define ALIB_OWN_SHARED( ownable)
#define ALIB_POP_ALLOWANCE   _Pragma("GCC diagnostic pop")
#define ALIB_PRECOMPILED_HEADER
#define ALIB_REL(...)
#define ALIB_REL_DBG(releaseCode, ...)
#define ALIB_RESOURCES   1
#define ALIB_REVISION   0
#define ALIB_SINGLE_THREADED
#define ALIB_SINGLETONS   1
#define ALIB_SIZEOF_INTGAP
#define ALIB_SIZEOF_LONGDOUBLE_REPORTED
#define ALIB_SIZEOF_LONGDOUBLE_WRITTEN
#define ALIB_SIZEOF_WCHAR_T   4
#define ALIB_STACK_ALLOCATED_TYPE(T)
#define ALIB_STATIC_ASSERT(CondVariable, Cond, Message)
#define ALIB_STATIC_DENY(CondVariable, Cond, Message)
#define ALIB_STRINGIFY(a)
#define ALIB_STRINGS   1
#define ALIB_SYSTEM   1
#define ALIB_THREADMODEL   1
#define ALIB_TVALUE(T)
#define ALIB_VARIABLES   1
#define ALIB_VERSION   2511
#define ALIB_WARNING(domain, ...)
#define ALOX_DBG_LOG   1
#define ALOX_DBG_LOG_CI   1
#define ALOX_REL_LOG   1
#define ALOX_REL_LOG_CI   1
#define bitsof(type)
#define DOXYGEN
#define IF_ALIB_ALOX(...)
#define IF_ALIB_APP(...)
#define IF_ALIB_BITBUFFER(...)
#define IF_ALIB_BOXING(...)
#define IF_ALIB_CAMP(...)
#define IF_ALIB_CLI(...)
#define IF_ALIB_CONTAINERS(...)
#define IF_ALIB_ENUMRECORDS(...)
#define IF_ALIB_EXCEPTIONS(...)
#define IF_ALIB_EXPRESSIONS(...)
#define IF_ALIB_FILES(...)
#define IF_ALIB_FORMAT(...)
#define IF_ALIB_MONOMEM(...)
#define IF_ALIB_RESOURCES(...)
#define IF_ALIB_SINGLETONS(...)
#define IF_ALIB_STRINGS(...)
#define IF_ALIB_SYSTEM(...)
#define IF_ALIB_THREADMODEL(...)
#define IF_ALIB_THREADS(...)
#define IF_ALIB_VARIABLES(...)
#define IFNOT_ALIB_ALOX(...)
#define IFNOT_ALIB_APP(...)
#define IFNOT_ALIB_BITBUFFER(...)
#define IFNOT_ALIB_BOXING(...)
#define IFNOT_ALIB_CAMP(...)
#define IFNOT_ALIB_CLI(...)
#define IFNOT_ALIB_CONTAINERS(...)
#define IFNOT_ALIB_ENUMRECORDS(...)
#define IFNOT_ALIB_EXCEPTIONS(...)
#define IFNOT_ALIB_EXPRESSIONS(...)
#define IFNOT_ALIB_FILES(...)
#define IFNOT_ALIB_FORMAT(...)
#define IFNOT_ALIB_MONOMEM(...)
#define IFNOT_ALIB_RESOURCES(...)
#define IFNOT_ALIB_SINGLETONS(...)
#define IFNOT_ALIB_STRINGS(...)
#define IFNOT_ALIB_SYSTEM(...)
#define IFNOT_ALIB_THREADMODEL(...)
#define IFNOT_ALIB_THREADS(...)
#define IFNOT_ALIB_VARIABLES(...)

Macro Definition Documentation

◆ A_CCHAR

#define A_CCHAR ( STR)
Value:
A_WCHAR(STR)
#define A_WCHAR(STR)
Definition alib.inl:1304

Macro used to express C++ string literals in a platform-independent way. Dependent on the definition of type complementChar (which is in turn dependent on the platform, the compiler and optional configuration macros), this macro defines string literals, which have either a one, two or four byte character width, namely the width corresponding to the width of %complementChar.

See also
Sibling macro A_CHAR for more information. Further sibling macros are A_SCHAR, A_NCHAR, A_WCHAR and A_XCHAR.
Details are described in chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.
Parameters
STRThe character or string literal to eventually prefix with 'u', 'U' or 'L' .

Definition at line 1326 of file alib.inl.

◆ A_CHAR

#define A_CHAR ( STR)
Value:
STR

Macro used to express C++ character and string literals in a platform-independent way. Dependent on code selection macros ALIB_CHARACTERS_WIDE and eventually ALIB_CHARACTERS_NATIVE_WCHAR, this macro possibly prepends character 'L', 'u' or 'U' to the character or string literal given with parameter STR.

Whenever software targets different platforms that change the underlying character width of the string-types, the string literals have to change as well. To be able to compile on different platforms while using different configuration macros to manipulate the character width, almost all string literals in ALib sources are enclosed by this macro. The exception concerns such literals which are assigned to narrow string type NString, or those where explicit string types WString or XString are used.

Note
To avoid too much code clutter, this macro, as well as its siblings A_CCHAR, A_SCHAR, A_NCHAR, A_WCHAR and A_XCHAR, have an abbreviated name, as they are quite frequently used. (According to the ALib naming scheme, the macros would be prefixed with "ALIB_CHARACTERS_")
See also
For more information, consult chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.
With module ALib System, the further similar macro A_PATH privided.
Parameters
STRThe character or string literal to be eventually prefix with 'L', 'u' or 'U'.

Definition at line 1325 of file alib.inl.

◆ A_NCHAR

#define A_NCHAR ( STR)
Value:
STR

This is an "ident macro" that just produces the given parameter STR. It is provided only for completeness. ALib does not use this macro internally, as string literals that are not surrounded by one of the character literal macros are very well identifiable as narrow literals.

See also
Sibling macro A_CHAR for more information. Further sibling macros are A_CCHAR, A_SCHAR, A_WCHAR and A_XCHAR.
Details are described in chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.
Parameters
STRThe character or string literal that is returned as is.

Definition at line 1295 of file alib.inl.

◆ A_SCHAR

#define A_SCHAR ( STR)
Value:
u # STR

Macro used to express C++ string literals in a platform-independent way. Dependent on the definition of type strangeChar (which is in turn dependent on the platform, the compiler and optional configuration macros), this macro defines string literals, which have either a two or four byte character width, namely the width corresponding to the width of %complementChar.

Note
The same as type strangeChar is always equivalent to type xchar, this macro is always equivalent to macro A_XCHAR.
See also
Sibling macro A_CHAR for more information. Further sibling macros are A_CCHAR, A_NCHAR, A_WCHAR and A_XCHAR.
Details are described in chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.
Parameters
STRThe character or string literal to prefix with 'u', 'U' or 'L' .

Definition at line 1306 of file alib.inl.

◆ A_WCHAR

#define A_WCHAR ( STR)
Value:
L # STR

Macro used to express C++ string literals in a platform-independent way. Dependent on the definition of type wchar (which is in turn dependent on the platform, the compiler and optional configuration macros), this macro defines string literals, which have an either two bytes or four byte character width, namely the width corresponding to the width of wchar.

See also
Sibling macro A_CHAR for more information. Further sibling macros are A_CCHAR, A_SCHAR, A_NCHAR and A_XCHAR.
Details are described in chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.
Parameters
STRThe character or string literal to prefix with 'u', 'U' or 'L' .

Definition at line 1304 of file alib.inl.

◆ A_XCHAR

#define A_XCHAR ( STR)
Value:
u # STR

Macro used to express C++ string literals in a platform-independent way. Dependent on the definition of type xchar (which is in turn dependent on the platform, the compiler and optional configuration macros), this macro defines string literals, which have an either two bytes or four byte character width, namely the width corresponding to the width of xchar.

Note
The same as type strangeChar is always equivalent to type xchar, this macro is always equivalent to macro A_SCHAR.
See also
Sibling macro A_CHAR for more information. Further sibling macros are A_CCHAR, A_SCHAR, A_NCHAR and A_WCHAR.
Details are described in chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.
Parameters
STRThe character or string literal to prefix with 'u', 'U' or 'L' .

Definition at line 1305 of file alib.inl.

◆ ALIB_ALLOW_BITWISE_SWITCH

#define ALIB_ALLOW_BITWISE_SWITCH
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wswitch\"") \

Preprocessor macro to disable compiler warnings when a "bitwise type scoped enumeration" (see BitwiseTraits) or similar types with 'sparse' case coverage are used in a switch statement.

Definition at line 615 of file alib.inl.

◆ ALIB_ALLOW_DEPRECATED

#define ALIB_ALLOW_DEPRECATED
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \

Preprocessor macro to disable compiler warnings concerning the use of deprecated functions and types.

Definition at line 627 of file alib.inl.

◆ ALIB_ALLOW_DOCS

#define ALIB_ALLOW_DOCS   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings according to source documentation (as of today known to be thrown by clang only).

Definition at line 662 of file alib.inl.

◆ ALIB_ALLOW_FUNCTION_TEMPLATE

#define ALIB_ALLOW_FUNCTION_TEMPLATE   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings concerning unused function templates.

Definition at line 646 of file alib.inl.

◆ ALIB_ALLOW_INTEGER_OVERFLOW

#define ALIB_ALLOW_INTEGER_OVERFLOW
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wshift-count-overflow\"") \

Preprocessor macro to disable compiler warnings about code that may cause an overflow of an integral value, e.g., with bit-shift operations.

Definition at line 669 of file alib.inl.

◆ ALIB_ALLOW_INTEGRAL_CONSTANT_OVERFLOW

#define ALIB_ALLOW_INTEGRAL_CONSTANT_OVERFLOW   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings about code that may cause an overflow of an integral constant.

Definition at line 656 of file alib.inl.

◆ ALIB_ALLOW_MACRO_REDEFINITION

#define ALIB_ALLOW_MACRO_REDEFINITION   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings on redefining macros without prior un-defining.

Definition at line 591 of file alib.inl.

◆ ALIB_ALLOW_MACROS_WITH_RESERVED_NAME

#define ALIB_ALLOW_MACROS_WITH_RESERVED_NAME   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings about reserved macro names. (i.e with clang this ignores "-Wreserved-macro-identifier" )

Definition at line 605 of file alib.inl.

◆ ALIB_ALLOW_MISSING_FIELD_INITIALIZERS

#define ALIB_ALLOW_MISSING_FIELD_INITIALIZERS
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wmissing-field-initializers\"") \

Preprocessor macro to disable compiler warnings on missing field initializers.

Definition at line 594 of file alib.inl.

◆ ALIB_ALLOW_NOT_ELIDING_COPY_ON_RETURN

#define ALIB_ALLOW_NOT_ELIDING_COPY_ON_RETURN   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings concerning non-optimizable return values. (Clang "-Wnrvo")

Definition at line 649 of file alib.inl.

◆ ALIB_ALLOW_NOTHING_RETURNED

#define ALIB_ALLOW_NOTHING_RETURNED
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \

Preprocessor macro to disable compiler warnings concerning non-void functions that may not return a value. Needed when compiler cannot properly detect the inherent safeness (correctness) of a function that always is returning a type.

Definition at line 652 of file alib.inl.

◆ ALIB_ALLOW_NULL_POINTER_PASSING

#define ALIB_ALLOW_NULL_POINTER_PASSING
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wnonnull\"") \

Preprocessor macro to disable GCC warning "nonnull". Used, for example, with template meta programming below C++ 14 standard.

Definition at line 584 of file alib.inl.

◆ ALIB_ALLOW_OVERLOADED_VIRTUALS

#define ALIB_ALLOW_OVERLOADED_VIRTUALS   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings about virtual methods that become hidden by overloaded methods with a different signature.

Definition at line 608 of file alib.inl.

◆ ALIB_ALLOW_RESERVED_IDENTIFIER

#define ALIB_ALLOW_RESERVED_IDENTIFIER   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings concerning conflicting identifier names. Usually identifiers with double underscore ('_') are forbidden, but with some preprocessor macros, those are not easily avoidable.

Definition at line 659 of file alib.inl.

◆ ALIB_ALLOW_SHIFT_COUNT_OVERFLOW

#define ALIB_ALLOW_SHIFT_COUNT_OVERFLOW
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wshift-count-overflow\"") \

Preprocessor macro to disable compiler warnings concerning overflows during bit-shift operations.

Definition at line 623 of file alib.inl.

◆ ALIB_ALLOW_SIGN_CONVERSION

#define ALIB_ALLOW_SIGN_CONVERSION
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wsign-conversion\"") \

Preprocessor macro to disable compiler warnings about code that changes signedness of integral values.

Definition at line 665 of file alib.inl.

◆ ALIB_ALLOW_SPARSE_ENUM_SWITCH

#define ALIB_ALLOW_SPARSE_ENUM_SWITCH
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wswitch\"") \

Preprocessor macro to disable compiler warnings when an enumeration element is switched while not all enumeration elements get caught.

Definition at line 611 of file alib.inl.

◆ ALIB_ALLOW_SWITCH_WITHOUT_DEFAULT

#define ALIB_ALLOW_SWITCH_WITHOUT_DEFAULT
Value:
_Pragma("gcc diagnostic push") \
_Pragma("gcc diagnostic ignored \"-Wswitch-default\"") \

A typical use case is a switch over a value of an enum type, where all enumerators are handled explicitly. In such cases, the compiler should still warn about newly added, unhandled enum values, but it should not complain about the absence of a default label or about hypothetical enumerators artificially created by a software. Such artificial enumeration elements (created, for example, by a code like MyEnum(42)) should only be introduced in rare circumstances.

Definition at line 619 of file alib.inl.

◆ ALIB_ALLOW_UNINITIALIZED

#define ALIB_ALLOW_UNINITIALIZED
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") \

Preprocessor macro to disable compiler warnings about uninitialized values.

Definition at line 580 of file alib.inl.

◆ ALIB_ALLOW_UNREACHABLE_CODE

#define ALIB_ALLOW_UNREACHABLE_CODE   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings about detected unreachable code. (i.e with clang this ignores "-Wunreachable-code" )

Definition at line 588 of file alib.inl.

◆ ALIB_ALLOW_UNSAFE_FUNCTION_OR_VARIABLE

#define ALIB_ALLOW_UNSAFE_FUNCTION_OR_VARIABLE   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings for use of 'unsafe' (deprecated) library functions. Currently used with MSVC 4996 only.

Definition at line 598 of file alib.inl.

◆ ALIB_ALLOW_UNUSED_FUNCTION

#define ALIB_ALLOW_UNUSED_FUNCTION
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wunused-function\"") \

Preprocessor macro to disable compiler warnings concerning unused (member-) functions. (This macro is only used with unit testing and documentation sample code.)

Definition at line 639 of file alib.inl.

◆ ALIB_ALLOW_UNUSED_LAMBDA_CAPTURE

#define ALIB_ALLOW_UNUSED_LAMBDA_CAPTURE   _Pragma("GCC diagnostic push") \

Preprocessor macro to disable compiler warnings concerning unused (member-) functions. (Needed, because it can happen that gcc needs a this captured, while clang complains it was unnecessary.)

Definition at line 643 of file alib.inl.

◆ ALIB_ALLOW_UNUSED_MACRO

#define ALIB_ALLOW_UNUSED_MACRO
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wunused-macros\"") \

Preprocessor macro to disable compiler warnings about unused preprocessor macros.

Preprocessor macro to disable compiler warnings concerning unused macro definitions.

Definition at line 601 of file alib.inl.

◆ ALIB_ALLOW_UNUSED_PARAMETER

#define ALIB_ALLOW_UNUSED_PARAMETER
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wunused-parameter\"") \

Preprocessor macro to disable compiler warnings concerning unused parameters. (This macro is only used with unit testing and documentation sample code.)

Definition at line 631 of file alib.inl.

◆ ALIB_ALLOW_UNUSED_VARIABLE

#define ALIB_ALLOW_UNUSED_VARIABLE
Value:
_Pragma("GCC diagnostic push") \
_Pragma("GCC diagnostic ignored \"-Wunused-variable\"") \

Preprocessor macro to disable compiler warnings concerning unused parameters. (This macro is only used with unit testing and documentation sample code.)

Definition at line 635 of file alib.inl.

◆ ALIB_ALOX

#define ALIB_ALOX   1

Denotes if module ALox is included in the ALib Build.

See also
Corresponding macros IF_ALIB_ALOX and IFNOT_ALIB_ALOX which are useful for pruning short code snippets.

Definition at line 279 of file alib.inl.

◆ ALIB_API_IS_DLL

#define ALIB_API_IS_DLL

This configuration macro has to be defined when compiling ALib as a DLL, and has to be undefined (or 0) when compiling user code that includes ALib header-files.

If ALIB_API_NO_DLL is given, this configuration macro is ignored.

Definition at line 34 of file alib.inl.

◆ ALIB_API_NO_DLL

#define ALIB_API_NO_DLL

This configuration macro has to be defined when compiling ALib classes directly into a project Windows/MSC (not using a DLL).
If given, ALIB_API_IS_DLL is ignored. If not given, ALIB_API_IS_DLL has to be set to 1 if the DLL is compiled, and to 0 if code that is using ALib residing in a DLL is compiled.

See also
ALIB_API_IS_DLL and ALIB_DLL

Definition at line 35 of file alib.inl.

◆ ALIB_APP

#define ALIB_APP   1

Denotes if module ALib App is included in the ALib Build.

Definition at line 280 of file alib.inl.

◆ ALIB_ASSERT

#define ALIB_ASSERT ( cond,
domain )
Value:
{ if( !( cond)) ALIB_ERROR( domain, "Assertion Failed" ); }
#define ALIB_ERROR(domain,...)
Definition alib.inl:1140

If given condition is false, error message "Assertion Failed" is written.

Parameters
condThe condition assert.
domainThe domain of the assertion. (Usually the ALib Module.)

Definition at line 1143 of file alib.inl.

◆ ALIB_ASSERT_ERROR

#define ALIB_ASSERT_ERROR ( cond,
domain,
... )
Value:
{ ALIB_DEBUG_ASSERTION_PRINTABLES_DO(__VA_ARGS__) if( !( cond)) ALIB_ERROR( domain, __VA_ARGS__ ) }

If given condition is false, given message objects are written as an error.

Parameters
condThe condition assert.
domainThe domain of the assertion. (Usually the ALib Module.)
...The objects used to format the message string.

Definition at line 1144 of file alib.inl.

◆ ALIB_ASSERT_GLOBAL_NAMESPACE

#define ALIB_ASSERT_GLOBAL_NAMESPACE
Value:
struct ALibTestGlobalNamespace; \
static_assert(std::is_same<ALibTestGlobalNamespace, ::ALibTestGlobalNamespace>::value, \
"This is not the global namespace!");

If this macro is placed outside the global namespace, a static_assert is raised at compile time.

Definition at line 1061 of file alib.inl.

◆ ALIB_ASSERT_MESSAGE

#define ALIB_ASSERT_MESSAGE ( cond,
domain,
... )
Value:
{ ALIB_DEBUG_ASSERTION_PRINTABLES_DO(__VA_ARGS__) if( !( cond)) ALIB_MESSAGE( domain, __VA_ARGS__ ) }
#define ALIB_MESSAGE(domain,...)
Definition alib.inl:1142

If given condition is false, given message objects are written as a message.

Parameters
condThe condition assert.
domainThe domain of the assertion. (Usually the ALib Module.)
...The objects used to format the message string.

Definition at line 1146 of file alib.inl.

◆ ALIB_ASSERT_MODULE

#define ALIB_ASSERT_MODULE ( modulename)
Value:
static_assert( ALIB_ # modulename, \
"This module is not included in the ALib Build. " \
"See " ALIB_DOCUMENTATION_URL "alib_manual.html for more information" ); \
#define ALIB_DOCUMENTATION_URL
DOXYGEN.
Definition alib.inl:303

Asserts if a given module is included in the ALib Build.

Parameters
modulenameThe name of the module to assert as available.

Definition at line 305 of file alib.inl.

◆ ALIB_ASSERT_RESULT_EQUALS

#define ALIB_ASSERT_RESULT_EQUALS ( func,
value )
Value:
{ auto result= func; assert(result == value); ((void) result); }

Asserts that a return value of a function call equals the given expected value. In release compilation, the function is still invoked, but no check is performed.

Parameters
funcThe function to invoke.
valueThe value to test for.

Definition at line 1161 of file alib.inl.

◆ ALIB_ASSERT_RESULT_GREATER_THAN

#define ALIB_ASSERT_RESULT_GREATER_THAN ( func,
value )
Value:
{ auto result= func; assert(result > value); ((void) result); }

Asserts that a return value of a function call is greater than the given value. In release compilation, the function is still invoked, but no check is performed.

Parameters
funcThe function to invoke.
valueThe value to test for.

Definition at line 1163 of file alib.inl.

◆ ALIB_ASSERT_RESULT_LESS_THAN

#define ALIB_ASSERT_RESULT_LESS_THAN ( func,
value )
Value:
{ auto result= func; assert(result < value); ((void) result); }

Asserts that a return value of a function call is less than the given expected value. In release compilation, the function is still invoked, but no check is performed.

Parameters
funcThe function to invoke.
valueThe value to test for.

Definition at line 1164 of file alib.inl.

◆ ALIB_ASSERT_RESULT_NOT_EQUALS

#define ALIB_ASSERT_RESULT_NOT_EQUALS ( func,
value )
Value:
{ auto result= func; assert(result != value); ((void) result); }

Asserts that a return value of a function call is not equal to the given value. In release compilation, the function is still invoked, but no check is performed.

Parameters
funcThe function to invoke.
valueThe value to test for.

Definition at line 1162 of file alib.inl.

◆ ALIB_ASSERT_WARNING

#define ALIB_ASSERT_WARNING ( cond,
domain,
... )
Value:
{ ALIB_DEBUG_ASSERTION_PRINTABLES_DO(__VA_ARGS__) if( !( cond)) ALIB_WARNING( domain, __VA_ARGS__ ) }
#define ALIB_WARNING(domain,...)
Definition alib.inl:1141

If given condition is false, given message objects are written as a warning.

Parameters
condThe condition assert.
domainThe domain of the assertion. (Usually the ALib Module.)
...The objects used to format the message string.

Definition at line 1145 of file alib.inl.

◆ ALIB_BASE_DIR

#define ALIB_BASE_DIR

String containing the source folder of ALib. Used with unit tests.

Definition at line 29 of file alib.inl.

◆ ALIB_BITBUFFER

#define ALIB_BITBUFFER   1

Denotes if module ALib BitBuffer is included in the ALib Build.

Definition at line 281 of file alib.inl.

◆ ALIB_BOXING

#define ALIB_BOXING   1

Denotes if module ALib Boxing is included in the ALib Build.

See also
Corresponding macros IF_ALIB_BOXING and IFNOT_ALIB_BOXING which are useful for pruning short code snippets.

Definition at line 282 of file alib.inl.

◆ ALIB_C20_MODULES

#define ALIB_C20_MODULES

This configuration macro is deprecated and must not be used.

See also
Our blog page on that topic.

Definition at line 32 of file alib.inl.

◆ ALIB_CALLER

#define ALIB_CALLER   {__FILE__,__LINE__,ALIB_CALLER_FUNC,::std::this_thread::get_id(),&typeid(*this)}

This macro fills in the built-in configuration macros that provide the current source file, line number and function strings.

The macro should be used anywhere where this information is passed (as a nested macro in debug macros)

See also
Chapter A.5 Collecting Caller Information of the General Programmer's Manual.

Definition at line 1096 of file alib.inl.

◆ ALIB_CALLER_FUNC

#define ALIB_CALLER_FUNC   __FUNCTION__

Used by macro ALIB_CALLER to retrieve the compiler-specific preprocessor variable of the current function name. With MSVC evaluates to __FUNCTION__, with other compilers to __func__.

Definition at line 1090 of file alib.inl.

◆ ALIB_CALLER_NULLED

#define ALIB_CALLER_NULLED   ALIB_CALLER

In debug-builds this macro is the same as ALIB_CALLER. Otherwise evaluates to {nullptr,0,nullptr,std::thread::id(), nullptr}.
In comparison to ALIB_CALLER_PRUNED, this macro is to be used with invocations of methods that keep the corresponding parameters in release compilations.

Note
If methods keep the parameter, then a user can decide if caller information should be included in release-builds or not by either using ALIB_CALLER or this macro.

Definition at line 1105 of file alib.inl.

◆ ALIB_CALLER_NULLED_COMMA

#define ALIB_CALLER_NULLED_COMMA   ALIB_CALLER ,

Same as ALIB_CALLER_NULLED, but adds a ',' This is needed if the caller information is followed by (non-debug) arguments in a call. The latter is usually avoided but necessary when default values for the next argument should be given.

Definition at line 1107 of file alib.inl.

◆ ALIB_CALLER_PRUNED

#define ALIB_CALLER_PRUNED   ALIB_CALLER

This macro is the same as ALIB_CALLER but empty if ALIB_DEBUG is not defined.
In comparison to ALIB_CALLER_NULLED, this macro is to be used with invocations of methods that lack the corresponding parameters in release compilations.

Definition at line 1102 of file alib.inl.

◆ ALIB_CALLER_PRUNED_COMMA

#define ALIB_CALLER_PRUNED_COMMA   ALIB_CALLER ,

Same as ALIB_CALLER_PRUNED, but adds a ',' This is needed if the caller information is followed by (non-debug) arguments in a call. The latter is usually avoided but necessary when default values for the next argument should be given.

Definition at line 1104 of file alib.inl.

◆ ALIB_CAMP

#define ALIB_CAMP   1

Denotes if module ALib Camp is included in the ALib Build.

See also
Corresponding macros IF_ALIB_CAMP and IFNOT_ALIB_CAMP which are useful for pruning short code snippets.

Definition at line 283 of file alib.inl.

◆ ALIB_CHAR_TYPE_ID_CHARACTER

#define ALIB_CHAR_TYPE_ID_CHARACTER   1

Defined as ALIB_CHAR_TYPE_ID_N or ALIB_CHAR_TYPE_ID_W depending on configuration macro ALIB_CHARACTERS_WIDE.

Definition at line 1327 of file alib.inl.

◆ ALIB_CHAR_TYPE_ID_COMPLEMENT

#define ALIB_CHAR_TYPE_ID_COMPLEMENT   2

Defined as ALIB_CHAR_TYPE_ID_N or ALIB_CHAR_TYPE_ID_W depending on configuration macro ALIB_CHARACTERS_WIDE.

Definition at line 1328 of file alib.inl.

◆ ALIB_CHAR_TYPE_ID_N

#define ALIB_CHAR_TYPE_ID_N   1

Defined as 1. Used in situations where code is to be selected by the preprocessor. The rationale here is, that the preprocessor can only choose code depending on integral values and not on string contents.

Definition at line 1339 of file alib.inl.

◆ ALIB_CHAR_TYPE_ID_STRANGE

#define ALIB_CHAR_TYPE_ID_STRANGE   3

Defined as ALIB_CHAR_TYPE_ID_X.

ALIB_CHARACTERS_WIDE

Definition at line 1329 of file alib.inl.

◆ ALIB_CHAR_TYPE_ID_W

#define ALIB_CHAR_TYPE_ID_W   2

Defined as 2. Used in situations where code is to be selected by the preprocessor. The rationale here is, that the preprocessor can only choose code depending on integral values and not on string contents.

Definition at line 1340 of file alib.inl.

◆ ALIB_CHAR_TYPE_ID_X

#define ALIB_CHAR_TYPE_ID_X   3

Defined as 3. Used in situations where code is to be selected by the preprocessor. The rationale here is that the preprocessor can only choose code depending on integral values and not on string contents.

Definition at line 1341 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY

#define ALIB_CHARACTER_ARRAY ( T,
TChar,
Access,
Construction )
Value:
ALIB_CHARACTER_ARRAY_internal( , T, TChar, const, Access , Construction )

Specializes the type trait ArrayTraits for type T.

To implement the corresponding static methods in alignment with the specialized access and construction flags, macros ALIB_CHARACTER_ARRAY_IMPL_BUFFER, ALIB_CHARACTER_ARRAY_IMPL_LENGTH and ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT are proposed to be used.

See also
For more information about character array traits, see chapter 4. Character Arrays of the Programmer's Manual of module ALib Characters.
Parameters
TThe type to provide array type-traits for.
TCharThe character type of character arrays that T represents or might be created of.
AccessOne of the values NONE, Implicit or ExplicitOnly. Value Mutable is not permitted. Instead, macro ALIB_CHARACTER_ARRAY_MUTABLE is to be used for that case.
ConstructionOne of the values NONE, Implicit or ExplicitOnly.

Definition at line 1356 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY_IMPL_BUFFER

#define ALIB_CHARACTER_ARRAY_IMPL_BUFFER ( T,
TChar,
... )
Value:
const TChar* ArrayTraits<T,TChar>::Buffer(T const& src ) { __VA_ARGS__ }

This macro may be used to implement static method static const TChar * Buffer(const TStringSource&)  of specializations of ArrayTraits that have been defined using macro ALIB_CHARACTER_ARRAY.

If macro ALIB_CHARACTER_ARRAY_MUTABLE was used, corresponding macro ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE has to be used instead of this one.

The argument providing a constant reference of type T to the method's implementation, and which has to be accessed in the given implementation code, is named src. The implementation has to return a constant pointer to an array of character type TChar.

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1370 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE

#define ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE ( T,
TChar,
... )
Value:
const TChar* ArrayTraits<T,TChar>::Buffer(T & src ) { __VA_ARGS__ }

Alternative macro version of ALIB_CHARACTER_ARRAY_IMPL_BUFFER, which declares method argument src as a mutual reference of type T.

This version is to be used if specialization was performed using ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE.

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1376 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT

#define ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT ( T,
TChar,
... )
Value:
T ArrayTraits <T,TChar>::Construct( const TChar* array, integer length ) { __VA_ARGS__ }

This macro may be used to implement static method static TStringSource Construct(const TChar*, integer)  of specializations of ArrayTraits that have been defined using macro ALIB_CHARACTER_ARRAY or ALIB_CHARACTER_ARRAY_MUTABLE.

The arguments providing the array data to the method's implementation, which is to be used to create the object of type T, are named array and length. The implementation has to return a value of type T.

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1382 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY_IMPL_LENGTH

#define ALIB_CHARACTER_ARRAY_IMPL_LENGTH ( T,
TChar,
... )
Value:
integer ArrayTraits<T,TChar>::Length(T const& src ) { __VA_ARGS__ }

This macro may be used to implement static method static integer Length(const TStringSource&)  of specializations of ArrayTraits that have been defined using macro ALIB_CHARACTER_ARRAY.

The argument providing a constant reference of type T to the method's implementation, and which has to be accessed in the given implementation code, is named src. The implementation has to return the length of the character array as type integer.

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1373 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY_IMPL_LENGTH_MUTABLE

#define ALIB_CHARACTER_ARRAY_IMPL_LENGTH_MUTABLE ( T,
TChar,
... )
Value:
integer ArrayTraits<T,TChar>::Length(T & src ) { __VA_ARGS__ }

Alternative macro version of ALIB_CHARACTER_ARRAY_IMPL_LENGTH, which declares method argument src as a mutual reference of type T.

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1379 of file alib.inl.

◆ ALIB_CHARACTER_ARRAY_MUTABLE

#define ALIB_CHARACTER_ARRAY_MUTABLE ( T,
TChar,
Construction )
Value:
ALIB_CHARACTER_ARRAY_internal( , T, TChar, , MutableOnly, Construction )

Specializes the type trait ArrayTraits for type T with access modifier Mutable.

To implement the corresponding static methods in alignment with the specialized access and construction flags, macros ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE, ALIB_CHARACTER_ARRAY_IMPL_LENGTH_MUTABLE and ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT are proposed to be used.

See also
For more information about character array traits, see chapter 4. Character Arrays of the Programmer's Manual of module ALib Characters.
Parameters
TThe type to provide array type-traits for.
TCharThe character type of character arrays that T represents or might be created of.
ConstructionOne of the values NONE, Implicit or ExplicitOnly.

Definition at line 1359 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY

#define ALIB_CHARACTER_ZT_ARRAY ( T,
TChar,
Access,
Construction )
Value:
ALIB_CHARACTER_ARRAY_internal( ZT, T, TChar, const, Access , Construction )

Specializes the type trait ZTArrayTraits for type T.

To implement the corresponding static methods in alignment with the specialized access and construction flags, macros ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER, ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH and ALIB_CHARACTER_ZT_ARRAY_IMPL_CONSTRUCT are proposed to be used.

See also
For more information about character array traits, see chapter 4. Character Arrays of the Programmer's Manual of module ALib Characters.
Parameters
TThe type to provide array type-traits for.
TCharThe character type of character arrays that T represents or might be created of.
AccessOne of the values NONE, Implicit or ExplicitOnly. Value Mutable is not permitted. Instead, macro ALIB_CHARACTER_ARRAY_MUTABLE is to be used for that case.
ConstructionOne of the values NONE, Implicit or ExplicitOnly.

Definition at line 1362 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER

#define ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER ( T,
TChar,
... )
Value:
const TChar* ZTArrayTraits<T,TChar>::Buffer( T const& src ) { __VA_ARGS__ }

Same as ALIB_CHARACTER_ARRAY_IMPL_BUFFER, but for zero-terminated character arrays.
(Implements method static const TChar * Buffer(const TStringSource&)  instead of static const TChar * Buffer(const TStringSource&) .)

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1385 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER_MUTABLE

#define ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER_MUTABLE ( T,
TChar,
... )
Value:
const TChar* ZTArrayTraits<T,TChar>::Buffer( T & src ) { __VA_ARGS__ }

Same as ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE, but for zero-terminated character arrays.
(Implements method static const TChar * Buffer(const TStringSource&)  instead of static const TChar * Buffer(const TStringSource&) .)

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1391 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY_IMPL_CONSTRUCT

#define ALIB_CHARACTER_ZT_ARRAY_IMPL_CONSTRUCT ( T,
TChar,
... )
Value:
T ZTArrayTraits<T,TChar>::Construct( const TChar* array, integer length ) { __VA_ARGS__ }

Same as ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT, but for zero-terminated character arrays.
(Implements method static TStringSource Construct(const TChar*, integer)  instead of static TStringSource Construct(const TChar*, integer) .)

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1397 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH

#define ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH ( T,
TChar,
... )
Value:
integer ZTArrayTraits<T,TChar>::Length( T const& src ) { __VA_ARGS__ }

Same as ALIB_CHARACTER_ARRAY_IMPL_LENGTH, but for zero-terminated character arrays.
(Implements method static integer Length(const TStringSource&)  instead of static integer Length(const TStringSource&) .)

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1388 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH_MUTABLE

#define ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH_MUTABLE ( T,
TChar,
... )
Value:
integer ZTArrayTraits<T,TChar>::Length( T & src ) { __VA_ARGS__ }

Same as ALIB_CHARACTER_ARRAY_IMPL_LENGTH_MUTABLE, but for zero-terminated character arrays.
(Implements method static integer Length(const TStringSource&)  instead of static integer Length(const TStringSource&) .)

Parameters
TThe type to provide the specialized static method for.
TCharThe character type of character arrays that T represents or might be created of.
...The variadic arguments of the macro constitute the implementation code of the method.

Definition at line 1394 of file alib.inl.

◆ ALIB_CHARACTER_ZT_ARRAY_MUTABLE

#define ALIB_CHARACTER_ZT_ARRAY_MUTABLE ( T,
TChar,
Construction )
Value:
ALIB_CHARACTER_ARRAY_internal( ZT, T, TChar, , MutableOnly, Construction )

Specializes the type trait ZTArrayTraits for type T with access modifier Mutable.

To implement the corresponding static methods in alignment with the specialized access and construction flags, macros ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER_MUTABLE, ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH_MUTABLE and ALIB_CHARACTER_ZT_ARRAY_IMPL_CONSTRUCT are proposed to be used.

See also
For more information about character array traits, see chapter 4. Character Arrays of the Programmer's Manual of module ALib Characters.
Parameters
TThe type to provide array type-traits for.
TCharThe character type of character arrays that T represents or might be created of.
ConstructionOne of the values NONE, Implicit or ExplicitOnly.

Definition at line 1365 of file alib.inl.

◆ ALIB_CHARACTERS_NATIVE_WCHAR

#define ALIB_CHARACTERS_NATIVE_WCHAR   1

If true, type wchar is equivalent to C++ built-in type wchar_t. Otherwise, wchar has a different width than wchar_t and equals to either char16_t or char32_t: If a compiler's defines wchar_t as a 2-byte integral, char32_t is chosen and char16_t if it is a 4-byte integral.

This configuration macro depends on operating system and compiler defaults and may be manipulated by passing configuration macro ALIB_CHARACTERS_SIZEOF_WCHAR with library compilation.

Note, that the use of this configuration macro to select code should be needed very seldom. Instead, it is advised to use "logical character" types and other provided helpers and macros that convert characters and string-types transparently.

See also
Chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.

Definition at line 1298 of file alib.inl.

◆ ALIB_CHARACTERS_SIZEOF_WCHAR

#define ALIB_CHARACTERS_SIZEOF_WCHAR   ALIB_SIZEOF_WCHAR_T

Provides the width of ALib type wchar in bytes.

If not set, a compiler/platform-dependent default value is chosen.

If passed to the compiler, then type wchar will be set independent of the width of wchar_t, which is compiler dependent and the configuration macro ALIB_CHARACTERS_NATIVE_WCHAR will be set accordingly.

If a value of 2 is given, then type wchar will be 2 bytes wide. Precisely, wchar will be equivalent to type wchar_t with compilers that define the latter as a 2-byte integral value and equivalent to type char16_t, if wchar_t is a 4-byte integral.

If a value of 2 is given, then type wchar will be 4 bytes wide. Precisely, wchar will be equivalent to type wchar_t with compilers that define the latter as a 4-byte integral value and equivalent to type char32_t, if wchar_t is a 2-byte integral.

Other values are not allowed.

See also
Chapter 3.3 Characters And String Literals of the Programmer's Manual of module ALib Characters.

Definition at line 973 of file alib.inl.

◆ ALIB_CHARACTERS_WIDE

#define ALIB_CHARACTERS_WIDE   1

If false, type character is equivalent to C++ built-in type char. Otherwise, character equals the multi-byte character type wchar, which in turn is equivalent to either of wchar_t, char16_t or char32_t.

Note, that the use of this configuration macro to select code should be needed very seldom. Instead, it is advised to use "logical character" types and other provided helpers and macros that convert characters and string-types transparently.

If the configuration macro is not externally set (passed to the compiler), the choice of the default character type is system-dependent: On Windows OS, wide character strings are chosen, while on Unix-like OSes, narrow character strings are used by default.

See also
Chapters 3.3 Characters And String Literals and chapter 2. Character Types of the Programmer's Manual of module ALib Characters.

Definition at line 966 of file alib.inl.

◆ ALIB_CLI

#define ALIB_CLI   1

Denotes if module ALib CLI is included in the ALib Build.

See also
Corresponding macros IF_ALIB_CLI and IFNOT_ALIB_CLI which are useful for pruning short code snippets.

Definition at line 288 of file alib.inl.

◆ ALIB_COMMA

#define ALIB_COMMA   ,

Defines a simple comma (','). Used with macros when otherwise the use of a comma symbol leads to ambiguous syntax. For example, when passing template types to macros.

Used with macros when otherwise the use of a comma symbol leads to ambiguous syntax. For example, when passing template types to macros as shown here:

    MY_MACRO( std::vector<int ALIB_COMMA double> )

Definition at line 1041 of file alib.inl.

◆ ALIB_COMMA_CALLER_NULLED

#define ALIB_COMMA_CALLER_NULLED   , ALIB_CALLER

Same as ALIB_CALLER_NULLED, but prepends a ',' This is needed if the caller information is not the only, but the last argument in a call.

Definition at line 1106 of file alib.inl.

◆ ALIB_COMMA_CALLER_PRUNED

#define ALIB_COMMA_CALLER_PRUNED   , ALIB_CALLER

Same as ALIB_CALLER_PRUNED, but prepends a ',' This is needed if the caller information is not the only, but the last argument in a call.

Definition at line 1103 of file alib.inl.

◆ ALIB_COMMA_DBG

#define ALIB_COMMA_DBG   ,

Defines a simple comma (',') with debug-builds. In release compilations the macro is empty. This is useful, for example, when methods change their signature depending on the compilation type. The latter is unavoidable i.e if caller source code information should be passed for debugging.

Used with macros when otherwise the use of a comma symbol leads to ambiguous syntax. For example, when passing template types to macros.

Definition at line 1043 of file alib.inl.

◆ ALIB_CONCAT

#define ALIB_CONCAT ( a,
b )
Value:
ALIB_CONCAT_IMPL(a,b)

Concatenates two preprocessor macro parameters into one symbol.

Parameters
aThe first part of the concatenated code.
bThe second part of the concatenated code.

Definition at line 1028 of file alib.inl.

◆ ALIB_CONTAINERS

#define ALIB_CONTAINERS   1

Denotes if module ALib Containers is included in the ALib Build.

See also
Corresponding macros IF_ALIB_CONTAINERS and IFNOT_ALIB_CONTAINERS which are useful for pruning short code snippets.

Definition at line 290 of file alib.inl.

◆ ALIB_CPP_23

#define ALIB_CPP_23 ( ...)
Value:
__VA_ARGS__

This simple macro may be used for placing code that is only applicable to the C++ language standard 23 or higher. With the lower standard, the code given is pruned.

Parameters
...The source to select.
See also
Macro ALIB_CPP_BEFORE_23

Definition at line 541 of file alib.inl.

◆ ALIB_CPP_BEFORE_23

#define ALIB_CPP_BEFORE_23 ( ...)

This simple macro may be used for placing code that is only applicable to the C++ language standard 20 or below. With the higher standard, the code given is pruned.

Parameters
...The source to select.
See also
Macro ALIB_CPP_23

This group of simple macros either include or prune code dependent on the inclusion of ALib Modules in an ALib Build.

The macros are defined in the internal header alib/alib.inl which always is the first ALib header-file included.

Definition at line 542 of file alib.inl.

◆ ALIB_CPP_STANDARD

#define ALIB_CPP_STANDARD

Configuration macro containing the C++ language standard used for compilation. Possible values are 20 and 23.
For MSC and GNU GCC (and compatible compilers like Clang), this macro is automatically detected. For unknown compilers/toolchains, this configuration macro may be passed to the compiler.

Definition at line 37 of file alib.inl.

◆ ALIB_DBG

#define ALIB_DBG ( ...)
Value:
__VA_ARGS__

This simple macro may be used for placing debug statements into source code. Those get 'pruned' in release versions of ALib (respectively of the software that uses ALib and then this macro). It replaces

    #if ALIB_DEBUG
        // do stuff
        ...
        ...
    #endif

and is useful especially for single line statements.

Parameters
...Source code to prune in release-builds.

Definition at line 931 of file alib.inl.

◆ ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS

#define ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS
Value:
struct RecursionDetection \
{ \
bool& TestMember; \
RecursionDetection( bool& testMember ) : TestMember(testMember) {} \
\
void Acquire( const lang::CallerInfo& ci ) \
{ \
ALIB_ASSERT_ERROR(TestMember==false,"FSOWNER","Forbidden recursive use of method ", ci.Func)\
TestMember= true; \
} \
void Release() { TestMember= false; } \
}; \
RecursionDetection dbgRecursionDetection( dbgRecursionDetectionFlag ); \
ALIB_OWN(dbgRecursionDetection);

This macro may be placed at the beginning of a types' method to detect and assert recursive invocations - which by definition must happen.
The macro internally uses macro ALIB_OWN and hence class Owner that uses C++ stack unwinding to be sure to always clear the flag, even if an exception occurs.

In the case that the macro is placed in more than one method, it can be used to ensure that none of the methods calls any of the others.

A prerequisite of using this macro is to have macro ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS_MEMBER_DECL placed in the member declaration area of the type.

This macro is only active in debug-compilations.

Definition at line 1440 of file alib.inl.

◆ ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS_MEMBER_DECL

#define ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS_MEMBER_DECL   bool dbgRecursionDetectionFlag = false;

Used with macro ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS, usually in header compilation unit to declare a boolean class member that is used for detecting recursions.

Definition at line 1437 of file alib.inl.

◆ ALIB_DBG_TAKE_CI

#define ALIB_DBG_TAKE_CI   const CallerInfo& ci

Used with method declarations to define parameter ci of type CallerInfo.

Definition at line 1108 of file alib.inl.

◆ ALIB_DCS

#define ALIB_DCS   ALIB_OWN(*this)

Alias of macro ALIB_OWN, providing *this as the owner. Commonly used with types derived from classes DbgCriticalSections.

Note
If the configuration macro ALIB_DEBUG_CRITICAL_SECTIONS is not set, this macro is still defined with debug-builds. In this case, namespace functionSingleThreaded is invoked. This detects multithreaded use of a non-supporting ALib Build.
See also

Definition at line 1466 of file alib.inl.

◆ ALIB_DCS_ACQUIRE

#define ALIB_DCS_ACQUIRE   Acquire(ALIB_CALLER);

Calls void Acquire(const CallerInfo&) const (on this).

Definition at line 1470 of file alib.inl.

◆ ALIB_DCS_ACQUIRE_SHARED

#define ALIB_DCS_ACQUIRE_SHARED   AcquireShared(ALIB_CALLER);

Calls void AcquireShared(const CallerInfo&) const (on this).

Definition at line 1474 of file alib.inl.

◆ ALIB_DCS_ACQUIRE_SHARED_WITH

#define ALIB_DCS_ACQUIRE_SHARED_WITH ( CS)
Value:
CS.AcquireShared(ALIB_CALLER);
#define ALIB_CALLER
Definition alib.inl:1096

Calls void AcquireShared(const CallerInfo&) const on the instance given with CS.

Parameters
CSThe DbgCriticalSections instance to use.

Definition at line 1476 of file alib.inl.

◆ ALIB_DCS_ACQUIRE_WITH

#define ALIB_DCS_ACQUIRE_WITH ( CS)
Value:
CS.Acquire(ALIB_CALLER);

Calls void Acquire(const CallerInfo&) const on the instance given with CS.

Parameters
CSThe DbgCriticalSections instance to use.

Definition at line 1472 of file alib.inl.

◆ ALIB_DCS_RELEASE

#define ALIB_DCS_RELEASE   Release(ALIB_CALLER);

Calls void Release(const CallerInfo&) const (on this).

Definition at line 1471 of file alib.inl.

◆ ALIB_DCS_RELEASE_SHARED

#define ALIB_DCS_RELEASE_SHARED   ReleaseShared(ALIB_CALLER);

Calls void ReleaseShared(const CallerInfo&) const (on this).

Definition at line 1475 of file alib.inl.

◆ ALIB_DCS_RELEASE_SHARED_WITH

#define ALIB_DCS_RELEASE_SHARED_WITH ( CS)
Value:
CS.ReleaseShared(ALIB_CALLER);

Calls void ReleaseShared(const CallerInfo&) const on the instance given with CS.

Parameters
CSThe DbgCriticalSections instance to use.

Definition at line 1477 of file alib.inl.

◆ ALIB_DCS_RELEASE_WITH

#define ALIB_DCS_RELEASE_WITH ( CS)
Value:
CS.Release(ALIB_CALLER);

Calls void Release(const CallerInfo&) const on the instance given with CS.

Parameters
CSThe DbgCriticalSections instance to use.

Definition at line 1473 of file alib.inl.

◆ ALIB_DCS_SHARED

#define ALIB_DCS_SHARED   ALIB_OWN_SHARED(*this)

Alternative to macro ALIB_DCS which uses macro ALIB_OWN_SHARED instead of ALIB_OWN and thus creates an anonymous instance of OwnerShared instead of Owner.

Definition at line 1467 of file alib.inl.

◆ ALIB_DCS_SHARED_WITH

#define ALIB_DCS_SHARED_WITH ( CS)
Value:
#define ALIB_OWN_SHARED( ownable)
Definition alib.inl:1406

Alternative to macro ALIB_DCS_WITH which uses macro ALIB_OWN_SHARED instead of ALIB_OWN and thus creates an anonymous instance of OwnerShared instead of Owner.

Parameters
CSThe DbgCriticalSections to acquire and release.

Definition at line 1469 of file alib.inl.

◆ ALIB_DCS_WITH

#define ALIB_DCS_WITH ( CS)
Value:
#define ALIB_OWN( ownable)
Definition alib.inl:1404

Alternative to macro ALIB_DCS which allows specifying the ownable. (Macro ALIB_DCS fixes this to *this).

Parameters
CSThe DbgCriticalSections to acquire and release.

Definition at line 1468 of file alib.inl.

◆ ALIB_DEBUG

#define ALIB_DEBUG

If true (1), plausibility checks and ALib Assertions are enabled.

Definition at line 39 of file alib.inl.

◆ ALIB_DEBUG_ALLOCATIONS

#define ALIB_DEBUG_ALLOCATIONS   1

Maeks all ALib allocators to surround allocations with magic bytes. If given as true in release-builds, the configuration macro is redefined to false, and a compiler pragma-warning is given.

Please consult chapter 11.4 Debugging of the Programmer's Manual of camp ALib Monomem for further information about the debug features that come available with this configuration macro.

Note
Setting this configuration macro requires the availability of ALox in the ALib Build.
See also
Configuration macro ALIB_DEBUG_MEMORY.

Definition at line 54 of file alib.inl.

◆ ALIB_DEBUG_ARRAY_COMPRESSION

#define ALIB_DEBUG_ARRAY_COMPRESSION   1

Selects code that reads back integral arrays after compression with class ArrayCompressor to check compression/decompression algorithms.
This configuration macro defaults to true in debug-builds of the library.

Definition at line 60 of file alib.inl.

◆ ALIB_DEBUG_ASSERTION_PRINTABLES

#define ALIB_DEBUG_ASSERTION_PRINTABLES

If this configuration macro is set, then all assertion macros will call an internal test-function upfront that checks that for each given message parameter, a registered serialization function exists. This is especially true for the conditional assertion macros, like ALIB_ASSERT_ERROR or ALIB_ASSERT_WARNING. With that, it can be tested that all assertions are properly implemented, even if they are not raised in a test run of a program.

If set, such an assertion is performed by calling function CheckArgs.

Definition at line 48 of file alib.inl.

◆ ALIB_DEBUG_BOXING

#define ALIB_DEBUG_BOXING   1

Selects extended debug code in module ALib Boxing.
If given as true in release-builds, the configuration macro is redefined to false, and a compiler pragma-warning is given.

Details on the features enabled by this configuration macro are given in chapter 12.7.1 Available Debug Objects And Fields of the Programmer's Manual of module ALib Boxing.

Definition at line 55 of file alib.inl.

◆ ALIB_DEBUG_CONTAINERS

#define ALIB_DEBUG_CONTAINERS   1

Selects extended debug code in module ALib Containers.
If given as true in release-builds, the configuration macro is redefined to false, and a compiler pragma-warning is given.

Please consult chapter 11.4 Debugging of the Programmer's Manual of module ALib Containers for further information about the debug features that come available with this configuration macro.

Definition at line 57 of file alib.inl.

◆ ALIB_DEBUG_CRITICAL_SECTIONS

#define ALIB_DEBUG_CRITICAL_SECTIONS   1

This configuration macro - while associated to module ALib Threads - activates type DbgCriticalSections, which is available independent of the inclusion of this module. However, the configuration macro itself will always be disabled (set to 0) if module ALib Threads is not included in the ALib Build. This design allows using the corresponding macros anywhere in the code, without further checks. In the absence of ALib Threads, all macros will be just empty. The same is true for type DbgCriticalSections, which will be completely empty and optimized out.

See also
Macros alib_macros_mod_threads

Definition at line 58 of file alib.inl.

◆ ALIB_DEBUG_MEMORY

#define ALIB_DEBUG_MEMORY   1

Selects extended debug code in module ALib Monomem.
If given as true in release-builds, the configuration macro is redefined to false, and a compiler pragma-warning is given.

Please consult chapter 11.4 Debugging of the Programmer's Manual of camp ALib Monomem for further information about the debug features that come available with this configuration macro.

Note
Setting this configuration macro requires the availability of ALox in the ALib Build.
See also
Configuration macro ALIB_DEBUG_ALLOCATIONS.

Definition at line 59 of file alib.inl.

◆ ALIB_DEBUG_RESOURCES

#define ALIB_DEBUG_RESOURCES   1

Selects extended debug code in module ALib Resources.
If given as true in release-builds, the configuration macro is redefined to false, and a compiler pragma-warning is given.

In particular, the following features become enabled:

Definition at line 61 of file alib.inl.

◆ ALIB_DEBUG_STRINGS

#define ALIB_DEBUG_STRINGS   1

Selects extended debug code, mostly within class AString.
If given as true in release-builds, the configuration macro is redefined to false, and a compiler pragma-warning is given.

In particular, the configuration macro enables internal consistency checks as described in chapter 6.4 Debugging Strings of the Programmer's Manual of module ALib Strings. Internally, macro ALIB_STRING_DBG_CHK is used and users of the library are free (recommended) to use the ame for custom consistency checks when manipulating AString buffers directly.

Definition at line 56 of file alib.inl.

◆ ALIB_DLL

#define ALIB_DLL

Used to export/import C++ symbols into a dynamic link library. Defined under Windows/MSC when compiling or using ALib classes inside a DLL. Dependent on ALIB_API_IS_DLL and ALIB_API_NO_DLL.

Definition at line 573 of file alib.inl.

◆ ALIB_DOCUMENTATION_URL

#define ALIB_DOCUMENTATION_URL   "https://alib.dev/"

DOXYGEN.

Definition at line 303 of file alib.inl.

◆ ALIB_EMPTY

#define ALIB_EMPTY

Defines an empty macro. This is useful, for example, if a macro defined variadic arguments ('...') and a user wants to omit to provide a value. Some compilers (preprocessors) might warn about empty variadic arguments, if nothing was given. This macro avoids this and increased the readability.

Definition at line 1038 of file alib.inl.

◆ ALIB_ENUMRECORDS

#define ALIB_ENUMRECORDS   1

Denotes if module ALib EnumRecords is included in the ALib Build.

See also
Corresponding macros IF_ALIB_ENUMRECORDS and IFNOT_ALIB_ENUMRECORDS which are useful for pruning short code snippets.

Definition at line 291 of file alib.inl.

◆ ALIB_ERROR

#define ALIB_ERROR ( domain,
... )
Value:
{ ALIB_DEBUG_ASSERTION_PRINTABLES_DO(__VA_ARGS__) alib::assert::Raise( ALIB_CALLER_PRUNED, 0, domain, __VA_ARGS__ ); }
#define ALIB_CALLER_PRUNED
Definition alib.inl:1102
void Raise(const lang::CallerInfo &ci, int type, std::string_view domain, TArgs &&... args)
Definition assert.inl:181

Writes the given message objects as an error.

Parameters
domainThe domain of the assertion. (Usually the ALib Module.)
...The objects used to format the message string.

Definition at line 1140 of file alib.inl.

◆ ALIB_EXCEPTIONS

#define ALIB_EXCEPTIONS   1

Denotes if module ALib Exceptions is included in the ALib Build.

See also
Corresponding macros IF_ALIB_EXCEPTIONS and IFNOT_ALIB_EXCEPTIONS which are useful for pruning short code snippets.

Definition at line 285 of file alib.inl.

◆ ALIB_EXPORT

#define ALIB_EXPORT

This is empty, as ALib currently does not provide support for C++20 module compilation.

See also
Our blog page on that topic.

Definition at line 562 of file alib.inl.

◆ ALIB_EXPRESSIONS

#define ALIB_EXPRESSIONS   1

Denotes if module ALib Expressions is included in the ALib Build.

See also
Corresponding macros IF_ALIB_EXPRESSIONS and IFNOT_ALIB_EXPRESSIONS which are useful for pruning short code snippets.

Definition at line 292 of file alib.inl.

◆ ALIB_EXT_LIB_THREADS_AVAILABLE

#define ALIB_EXT_LIB_THREADS_AVAILABLE

If this configuration macro is given, then ALib will insert assertions in debug-compilations in the case that module ALib Threads is not included in the ALib Build. The assertions will test if a new, unknown thread is executing the code. This test is performed each time a threaded version of the library would acquire a mutex.
If using the default CMake script for ALib, this variable will be set unless either CMake-variable ALIB_CMAKE_SKIP_THREAD_LIB_SEARCH is set to true, or no thread library was found.

Definition at line 31 of file alib.inl.

◆ ALIB_FALLTHROUGH

#define ALIB_FALLTHROUGH

Used with keyword switch to annotate a case block that has no break or (return, etc.). Avoids a warning with some compilers.

Definition at line 677 of file alib.inl.

◆ ALIB_FEAT_BOOST_REGEX

#define ALIB_FEAT_BOOST_REGEX   1

Selects code for class RegexMatcher and features within ALib that uses this wrapper class.

If this configuration macro is not explicitly given to the compiler, it is set to 0, the boost library is not included and class RegexMatcher is not available.

If using the corresponding CMake variable, the script ALib.cmake will search and add boost_regex to CMake variable ALIB_EXTERNAL_LIBS.

Please note that this script also performs

  set(Boost_USE_STATIC_LIBS   ON)

before searching the library.

Definition at line 62 of file alib.inl.

◆ ALIB_FEAT_BOXING_BIJECTIVE_CHARACTERS

#define ALIB_FEAT_BOXING_BIJECTIVE_CHARACTERS   1

If 0 (the default), selects code for boxing types char, wchar_t, char16_t and char32_t as a character and disallowing to unbox any other.

If passed as 1, bijective boxing is enabled, what boxes each type as it is.

See also
Documentation of namespace 4. Boxing Fundamental Types for more information.

Definition at line 63 of file alib.inl.

◆ ALIB_FEAT_BOXING_BIJECTIVE_FLOATS

#define ALIB_FEAT_BOXING_BIJECTIVE_FLOATS   1

If 0(the default), selects code for boxing type float as a double value and disallowing to unbox float.

If passed as 1, bijective boxing is enabled, what boxes type float as it is.

See also
Documentation of namespace 4. Boxing Fundamental Types for more information.

Definition at line 65 of file alib.inl.

◆ ALIB_FEAT_BOXING_BIJECTIVE_INTEGRALS

#define ALIB_FEAT_BOXING_BIJECTIVE_INTEGRALS   1

If 0 (the default), selects code for boxing any C++ integral type to integer, respectively uinteger.

If passed as 1, bijective boxing is enabled, what boxes each type "as is".

See also
Documentation of namespace 4. Boxing Fundamental Types for more information.

Definition at line 64 of file alib.inl.

◆ ALIB_FEAT_SINGLETON_MAPPED

#define ALIB_FEAT_SINGLETON_MAPPED   1

Affects implementation of class Singleton. If this configuration macro represents true, then a static hash map is used to find the singleton objects, even if different data segments exist within one software process.
While the overhead imposed by such implementation is quite small, with this configuration macro being false, the overhead is omitted in scenarios when such effort is not necessary.

The configuration macro defaults to true on the windows platform, otherwise to false, which may be overwritten by passing the configuration macro to the compiler.

Definition at line 53 of file alib.inl.

◆ ALIB_FILES

#define ALIB_FILES   1

Denotes if module ALib Files is included in the ALib Build.

See also
Corresponding macros IF_ALIB_FILES and IFNOT_ALIB_FILES which are useful for pruning short code snippets.

Definition at line 293 of file alib.inl.

◆ ALIB_FORMAT

#define ALIB_FORMAT   1

Denotes if module ALib Format is included in the ALib Build.

See also
Corresponding macros IF_ALIB_FORMAT and IFNOT_ALIB_FORMAT which are useful for pruning short code snippets.

Definition at line 284 of file alib.inl.

◆ ALIB_GCC

#define ALIB_GCC

Configuration macro which is 1 defined when an unknown compiler is used and this compiler is specifying __GNUC__ (what most compilers do). This deduction to "the real gcc" can never be complete, but is the best guess available. A much more complete deduction is provided by boost libraries for example. ALib is tested only on a limited set of platforms/compilers.

Definition at line 30 of file alib.inl.

◆ ALIB_GTEST

#define ALIB_GTEST

Selects unit test code in accordance to the Google Test libraries. Defaults to 0 if not specified.

Definition at line 47 of file alib.inl.

◆ ALIB_HAS_METHOD

#define ALIB_HAS_METHOD ( T,
Method,
... )
Value:
!std::same_as< lang::UnknownTag, decltype(std::declval<T>(). Method( __VA_ARGS__ ))>

Evaluates to true if the given type T has a method called Method with the given signature. Otherwise, evaluates to false, respectively causes SFINAE.

Parameters
TThe type to test a method for.
MethodThe name of the method.
...Variadic list of args of the method.

Definition at line 1083 of file alib.inl.

◆ ALIB_IDENTIFIER

#define ALIB_IDENTIFIER ( prefix)
Value:
ALIB_ALLOW_RESERVED_IDENTIFIER \
ALIB_CONCAT(prefix, __LINE__) \
#define ALIB_POP_ALLOWANCE
Definition alib.inl:673

This macro assembles an 'anonymous' identifier using the given prefix and the current line number within the source code file. This macro is used within other macros that need a C/C++ identifier internally.
As a sample, see macro ALIB_OWN.

Parameters
prefixA prefix token to use.

Definition at line 1031 of file alib.inl.

◆ ALIB_INTGAP_TYPE

#define ALIB_INTGAP_TYPE

The type of intGap_t. Usually, this configuration macro is deduced (in the internal header lang/integers.inl) depending on the compiler and platform.

See also
If platform-dependent deduction fails, see documentation of ALIB_SIZEOF_INTEGER for information about providing configuration macros.

Definition at line 43 of file alib.inl.

◆ ALIB_LOCK

#define ALIB_LOCK   ALIB_OWN(*this)

Alias of macro ALIB_OWN, providing *this as the owner. Commonly used with types derived from classes Lock or RecursiveLock.

Note
If module ALib Threads is not available in the ALib Build, this macro is still defined with debug-builds. In this case, namespace functionSingleThreaded is invoked. This detects multithreaded use of a non-supporting ALib Build.
See also
Alternative macro ALIB_LOCK_WITH

Definition at line 1410 of file alib.inl.

◆ ALIB_LOCK_RECURSIVE

#define ALIB_LOCK_RECURSIVE   ALIB_OWN_RECURSIVE(*this)

Alternative to macro ALIB_LOCK which uses macro ALIB_OWN_RECURSIVE instead of ALIB_OWN and thus creates an anonymous instance of OwnerRecursive instead of Owner.

Definition at line 1411 of file alib.inl.

◆ ALIB_LOCK_RECURSIVE_WITH

#define ALIB_LOCK_RECURSIVE_WITH ( lock)
Value:
#define ALIB_OWN_RECURSIVE(ownable)
Definition alib.inl:1405

Alternative to macro ALIB_LOCK_WITH which uses macro ALIB_OWN_RECURSIVE instead of ALIB_OWN and thus creates an anonymous instance of OwnerRecursive instead of Owner.

Parameters
lockThe mutex to acquire and release.

Definition at line 1414 of file alib.inl.

◆ ALIB_LOCK_SHARED

#define ALIB_LOCK_SHARED   ALIB_OWN_SHARED(*this)

Alternative to macro ALIB_LOCK which uses macro ALIB_OWN_SHARED instead of ALIB_OWN and thus creates an anonymous instance of OwnerShared instead of Owner.

Definition at line 1412 of file alib.inl.

◆ ALIB_LOCK_SHARED_WITH

#define ALIB_LOCK_SHARED_WITH ( lock)
Value:

Alternative to macro ALIB_LOCK_WITH which uses macro ALIB_OWN_SHARED instead of ALIB_OWN and thus creates an anonymous instance of OwnerShared instead of Owner.

Parameters
lockThe mutex to acquire and release.

Definition at line 1415 of file alib.inl.

◆ ALIB_LOCK_WITH

#define ALIB_LOCK_WITH ( lock)
Value:
ALIB_OWN(lock)

Alternative to macro ALIB_LOCK which allows specifying the ownable. (Macro ALIB_LOCK fixes this to *this).

Parameters
lockThe mutex to acquire and release.

Definition at line 1413 of file alib.inl.

◆ ALIB_MESSAGE

#define ALIB_MESSAGE ( domain,
... )
Value:
{ ALIB_DEBUG_ASSERTION_PRINTABLES_DO(__VA_ARGS__) alib::assert::Raise( ALIB_CALLER_PRUNED, 2, domain, __VA_ARGS__ ); }

Writes the given message.

Parameters
domainThe domain of the assertion. (Usually the ALib Module.)
...The objects used to format the message string.

Definition at line 1142 of file alib.inl.

◆ ALIB_MONOMEM

#define ALIB_MONOMEM   1

Denotes if module ALib Monomem is included in the ALib Build.

See also
Corresponding macros IF_ALIB_MONOMEM and IFNOT_ALIB_MONOMEM which are useful for pruning short code snippets.

Definition at line 294 of file alib.inl.

◆ ALIB_NSTRINGIFY

#define ALIB_NSTRINGIFY ( a)

Makes as narrow string from a preprocessor macro parameter.

Parameters
aThe token to stringyfy.

Definition at line 1014 of file alib.inl.

◆ ALIB_OWN

#define ALIB_OWN ( ownable)
Value:
alib::lang::Owner <decltype(ownable)> ALIB_IDENTIFIER(owner) (ownable ALIB_COMMA_CALLER_PRUNED);
#define ALIB_COMMA_CALLER_PRUNED
Definition alib.inl:1103
#define ALIB_IDENTIFIER(prefix)
Definition alib.inl:1031

This preprocessor macro defines an anonymous instance of type Owner. The template type is deduced from parameter ownable using C++ keyword decltype.

By using this macro there is no need to "invent" an (otherwise unreferenced) identifier for that definition.

Note
This macro exists mainly because C++ does not support anonymous local instances.
See also
Parameters
ownableThe Ownable to acquire and release.

Definition at line 1404 of file alib.inl.

◆ ALIB_OWN_RECURSIVE

#define ALIB_OWN_RECURSIVE ( ownable)
Value:

Same as ALIB_OWN, but creates a local anonymous instance of class OwnerRecursive.

Definition at line 1405 of file alib.inl.

◆ ALIB_OWN_SHARED

#define ALIB_OWN_SHARED ( ownable)
Value:

Same as ALIB_OWN, but creates a local anonymous instance of class OwnerShared.

Definition at line 1406 of file alib.inl.

◆ ALIB_POP_ALLOWANCE

#define ALIB_POP_ALLOWANCE   _Pragma("GCC diagnostic pop")

Resets compiler warning settings to the state before one of the other macros of this section had been placed. Every such placement should have a corresponding placement of this macro.

Definition at line 673 of file alib.inl.

◆ ALIB_PRECOMPILED_HEADER

#define ALIB_PRECOMPILED_HEADER

Configuration macro that can be passed to enable inclusions in the header file alib_precompile.hpp.

Definition at line 50 of file alib.inl.

◆ ALIB_REL

#define ALIB_REL ( ...)

As a counterpart to ALIB_DBG, this macro may be used for placing code that is only available in release compilations. The macro is provided for completeness only and should be used seldom and with care, as it generally implies more intense release code testing. As of Version 1810, ALib does not use this macro internally.

Definition at line 932 of file alib.inl.

◆ ALIB_REL_DBG

#define ALIB_REL_DBG ( releaseCode,
... )
Value:
__VA_ARGS__

Similar to ALIB_DBG, but accepts a release version of the code as well. The release version is expected as first macro parameter. Note, that the release code must not contain a comma (',') while the debug code is allowed to. A comma in release code may be substituted with macro ALIB_COMMA. However, more complicated stuff should be placed in usual #if/#else/#endif statements.

Definition at line 933 of file alib.inl.

◆ ALIB_RESOURCES

#define ALIB_RESOURCES   1

Denotes if module ALib Resources is included in the ALib Build.

See also
Corresponding macros IF_ALIB_RESOURCES and IFNOT_ALIB_RESOURCES which are useful for pruning short code snippets.

Definition at line 287 of file alib.inl.

◆ ALIB_REVISION

#define ALIB_REVISION   0

The ALib revision number. The value of this macro is stored in namespace variable REVISION.

See also
Programmer's manual chapter 9. Assuring Compilation Compatibility.

Definition at line 21 of file alib.inl.

◆ ALIB_SINGLE_THREADED

#define ALIB_SINGLE_THREADED

If true (1), a single-threaded library is compiled. With debug compilations, the multi-threading use of ALib may be detected, and if so, raises an assertion.
If this configuration macro is not given, a library enabled for multi-threading use is compiled. This is the default.

If using the corresponding CMake variable, the script ALib.cmake will include _ST to the compiled library's filename.

See also

Definition at line 40 of file alib.inl.

◆ ALIB_SINGLETONS

#define ALIB_SINGLETONS   1

Denotes if module ALib Singletons is included in the ALib Build.

See also
Corresponding macros IF_ALIB_SINGLETONS and IFNOT_ALIB_SINGLETONS which are useful for pruning short code snippets.

Definition at line 295 of file alib.inl.

◆ ALIB_SIZEOF_INTGAP

#define ALIB_SIZEOF_INTGAP

Contains the size of integral types intGap_t and uintGap_t.
Usually, this configuration macro is deduced (in the internal header lang/integers.inl) depending on the compiler and platform.

See also
If platform-dependent deduction fails, see documentation of ALIB_SIZEOF_INTEGER for information about providing configuration macros.

Definition at line 42 of file alib.inl.

◆ ALIB_SIZEOF_LONGDOUBLE_REPORTED

#define ALIB_SIZEOF_LONGDOUBLE_REPORTED

Contains the size of long double. This is the value that sizeof(long double) returns. This size might be higher to what a copy operation of a value of the type might write. Usually, this configuration macro is deduced (in the internal header lang/integers.inl) depending on the compiler and platform.

See also
If platform-dependent deduction fails, see documentation of ALIB_SIZEOF_INTEGER for information about providing configuration macros.
Sibling configuration macro ALIB_SIZEOF_LONGDOUBLE_WRITTEN.

Definition at line 44 of file alib.inl.

◆ ALIB_SIZEOF_LONGDOUBLE_WRITTEN

#define ALIB_SIZEOF_LONGDOUBLE_WRITTEN

Configuration macro which denotes how many bytes the hardware will write with a value of type long double. This size might be smaller than the amount of memory that an allocation of that type would consume, hence what is reported by sizeof(long double).
Usually, this configuration macro is deduced (in the internal header lang/integers.inl) depending on the compiler and platform.

See also
If platform-dependent deduction fails, see documentation of ALIB_SIZEOF_INTEGER for information about providing this configuration macro together with four others.
The value of this configuration macro is used to define the specialization of SizeTraits for template type long double.

Definition at line 45 of file alib.inl.

◆ ALIB_SIZEOF_WCHAR_T

#define ALIB_SIZEOF_WCHAR_T   4

Compiler/platform-dependent value. Gives the sizeof values of type wchar_t in bytes. Possible values are 2 and 4.

Definition at line 952 of file alib.inl.

◆ ALIB_STACK_ALLOCATED_TYPE

#define ALIB_STACK_ALLOCATED_TYPE ( T)
Value:
private: void* operator new (size_t); \
void* operator new (size_t, void*); \
void* operator new[](size_t); \
void* operator new[](size_t, void*); \
T(const T& ); \
T( T&& ); \
void operator=(const T& ); \
void operator=( T&& );

To be placed at the beginning of a type which is to be allocated exclusively on the stack. For this, its new-operators as well as copy and move operators are declared private.

Parameters
TThe name of the type that this macro is placed in.

Definition at line 1070 of file alib.inl.

◆ ALIB_STATIC_ASSERT

#define ALIB_STATIC_ASSERT ( CondVariable,
Cond,
Message )
Value:
{ constexpr bool CondVariable= Cond; \
static_assert( CondVariable, Message ); } \

A simple macro that wraps language keyword static_assert. Common compilers display the condition expression that failed with the compilation error. The purpose of this macro is to hide this expression away. For this, the expression is assigned to a constexpr boolean value first, and then the assertion uses only this variable as its expression.

The variable name is given with parameter CondVariable and

Parameters
CondVariableThis should be a "speaking name" that tells the user right away what happened.
CondThe condition that is asserted and hid away from the compiler's message text.
MessageThe message that details what is said with CondVariable.

Definition at line 1049 of file alib.inl.

◆ ALIB_STATIC_DENY

#define ALIB_STATIC_DENY ( CondVariable,
Cond,
Message )
Value:
{ constexpr bool CondVariable= !(Cond); \
static_assert( CondVariable, Message ); } \

See macro ALIB_STATIC_ASSERT for a general explanation. The only difference from this is that the negation of the given expression is used. Hence the opposite of an assert, a "denial".

Parameters
CondVariableThis should be a "speaking name" that tells the user right away what happened.
CondThe condition that is asserted to be false, and that is hid away from the compiler's message text.
MessageThe message that details what is said with CondVariable.

Definition at line 1053 of file alib.inl.

◆ ALIB_STRINGIFY

#define ALIB_STRINGIFY ( a)

Makes as string from a preprocessor macro parameter. The string character type equals the default character type character.

Parameters
aThe token to stringyfy.

Definition at line 1015 of file alib.inl.

◆ ALIB_STRINGS

#define ALIB_STRINGS   1

Denotes if module ALib Strings is included in the ALib Build.

See also
Corresponding macros IF_ALIB_STRINGS and IFNOT_ALIB_STRINGS which are useful for pruning short code snippets.

Definition at line 296 of file alib.inl.

◆ ALIB_SYSTEM

#define ALIB_SYSTEM   1

Denotes if module ALib System is included in the ALib Build.

See also
Corresponding macros IF_ALIB_SYSTEM and IFNOT_ALIB_SYSTEM which are useful for pruning short code snippets.

Definition at line 286 of file alib.inl.

◆ ALIB_THREADMODEL

#define ALIB_THREADMODEL   1

Denotes if module ALib ThreadModel is included in the ALib Build.

See also
Corresponding macros IF_ALIB_THREADMODEL and IFNOT_ALIB_THREADMODEL which are useful for pruning short code snippets.

Definition at line 297 of file alib.inl.

◆ ALIB_TVALUE

#define ALIB_TVALUE ( T)
Value:
std::remove_cv_t<std::remove_pointer_t<std::remove_reference_t<T>>>

Shortcut to nested type modifiers std::remove_cv_t, std::remove_pointer_t and std::remove_reference_t.

Parameters
TThe type that is to be decayed to its plain value-type.

Definition at line 1081 of file alib.inl.

◆ ALIB_VARIABLES

#define ALIB_VARIABLES   1

Denotes if module ALib Variables is included in the ALib Build.

See also
Corresponding macros IF_ALIB_VARIABLES and IFNOT_ALIB_VARIABLES which are useful for pruning short code snippets.

Definition at line 289 of file alib.inl.

◆ ALIB_VERSION

#define ALIB_VERSION   2511

The ALib version number. The value of this macro is stored in namespace variable VERSION.

See also
Programmer's manual chapter 9. Assuring Compilation Compatibility.

Definition at line 20 of file alib.inl.

◆ ALIB_WARNING

#define ALIB_WARNING ( domain,
... )
Value:
{ ALIB_DEBUG_ASSERTION_PRINTABLES_DO(__VA_ARGS__) alib::assert::Raise( ALIB_CALLER_PRUNED, 1, domain, __VA_ARGS__ ); }

Writes the given message objects as an warning.

Parameters
domainThe domain of the assertion. (Usually the ALib Module.)
...The objects used to format the message string.

Definition at line 1141 of file alib.inl.

◆ ALOX_DBG_LOG

#define ALOX_DBG_LOG   1

If defined as true, debug Log Statements are enabled. Hence, users of ALox can conditionally compile special debug logging code that normally belongs to corresponding debug logging statements. This is useful for example, to conditionally compile code that calculates and gathers information to do some more complex log output.

Definition at line 66 of file alib.inl.

◆ ALOX_DBG_LOG_CI

#define ALOX_DBG_LOG_CI   1

If defined, scope information is passed to ALox on invocation of debug Log Statements. Hence, users of ALox can conditionally compile special debug logging code that normally belongs to corresponding debug logging statements based on this configuration macro. A sample would be the definition of different log line meta-information formats, depending on the availability of scope information.

Note
The ALox Scope Domain mechanism as well as ALox features provided with Lox::Once and Lox::Store rely on caller information. These mechanisms are therefore not available to debug logging unless this configuration macro is set.

Definition at line 68 of file alib.inl.

◆ ALOX_REL_LOG

#define ALOX_REL_LOG   1

If defined, release Log Statements are enabled. Hence, users of ALox can conditionally compile special release logging code that belong to corresponding release logging statements. (Note that release logging still can be pruned as explained in 10.3.1 Pruning Release Logging.)
This is useful for example, to conditionally compile code that calculates and gathers information to do some more complex log output.

Definition at line 67 of file alib.inl.

◆ ALOX_REL_LOG_CI

#define ALOX_REL_LOG_CI   1

Explicitly enables the generation of scope information using the built-in preprocessor macros like "__FILE__" and "__LINE__" for ALox release logging statements, which is disabled by default.

Enabling source info for release logging is seldom wanted. Release executables should not generate log output that an end user is not able to understand. It can make sense however, if release log information from the field goes back to the software development team. Furthermore, it can be very helpful to enable scope information for release Log Statements if set in the debug version of a compilation unit.

Note
The ALox Scope Domain mechanism as well as ALox features provided with Lox::Once and Lox::Store rely on caller information. These mechanisms are therefore not available to release logging unless this configuration macro is set.

Definition at line 69 of file alib.inl.

◆ bitsof

#define bitsof ( type)
Value:
int(sizeof(type) * 8)

Like C++ keyword sizeof but returns the number of bits of the type of the given value. The return type is int instead of size_t, which satisfies ALib code conventions.

Note
To improve code readability, namely to a) indicate that this is an inlined, constant expression and b) to indicate that this is just using keyword sizeof, as an exception from the naming rules, this function is spelled in lower case.
See also
Function bitsofval T&)

Definition at line 1509 of file alib.inl.

◆ DOXYGEN

#define DOXYGEN

Defined by Doxygen when parsing source code. Not defined with parsers of a C++ compiler. Primarily used to provide a doxygen compatible/readable version of complex declarations and definitions.

Definition at line 49 of file alib.inl.

◆ IF_ALIB_ALOX

#define IF_ALIB_ALOX ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALox is not included in the ALib Build.

See also
Configuration macro ALIB_ALOX and sibling macro IFNOT_ALIB_ALOX.
Parameters
...The source to select.

Definition at line 314 of file alib.inl.

◆ IF_ALIB_APP

#define IF_ALIB_APP ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib App is not included in the ALib Build.

See also
Configuration macro ALIB_APP and sibling macro IFNOT_ALIB_APP.
Parameters
...The source to select.

Definition at line 322 of file alib.inl.

◆ IF_ALIB_BITBUFFER

#define IF_ALIB_BITBUFFER ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib BitBuffer is not included in the ALib Build.

See also
Configuration macro ALIB_BITBUFFER and sibling macro IFNOT_ALIB_BITBUFFER.
Parameters
...The source to select.

Definition at line 330 of file alib.inl.

◆ IF_ALIB_BOXING

#define IF_ALIB_BOXING ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Boxing is not included in the ALib Build.

See also
Configuration macro ALIB_BOXING and sibling macro IFNOT_ALIB_BOXING.
Parameters
...The source to select.

Definition at line 338 of file alib.inl.

◆ IF_ALIB_CAMP

#define IF_ALIB_CAMP ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Resources is not included in the ALib Build.

See also
Configuration macro ALIB_CAMP and sibling macro IFNOT_ALIB_CAMP.
Parameters
...The source to select.

Definition at line 450 of file alib.inl.

◆ IF_ALIB_CLI

#define IF_ALIB_CLI ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib CLI is not included in the ALib Build.

See also
Configuration macro ALIB_CLI and sibling macro IFNOT_ALIB_CLI.
Parameters
...The source to select.

Definition at line 378 of file alib.inl.

◆ IF_ALIB_CONTAINERS

#define IF_ALIB_CONTAINERS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Containers is not included in the ALib Build.

See also
Configuration macro ALIB_CONTAINERS and sibling macro IFNOT_ALIB_CONTAINERS.
Parameters
...The source to select.

Definition at line 394 of file alib.inl.

◆ IF_ALIB_ENUMRECORDS

#define IF_ALIB_ENUMRECORDS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib EnumRecords is not included in the ALib Build.

See also
Configuration macro ALIB_ENUMRECORDS and sibling macro IFNOT_ALIB_ENUMRECORDS.
Parameters
...The source to select.

Definition at line 402 of file alib.inl.

◆ IF_ALIB_EXCEPTIONS

#define IF_ALIB_EXCEPTIONS ( ...)

Prunes given code ... if ALib Exceptions is not included in the ALib Build.

See also
Configuration macro ALIB_EXCEPTIONS and sibling macro IFNOT_ALIB_EXCEPTIONS.
Parameters
...The source to select.

Definition at line 357 of file alib.inl.

◆ IF_ALIB_EXPRESSIONS

#define IF_ALIB_EXPRESSIONS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Expressions is not included in the ALib Build.

See also
Configuration macro ALIB_EXPRESSIONS and sibling macro IFNOT_ALIB_EXPRESSIONS.
Parameters
...The source to select.

Definition at line 410 of file alib.inl.

◆ IF_ALIB_FILES

#define IF_ALIB_FILES ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Files is not included in the ALib Build.

See also
Configuration macro ALIB_FILES and sibling macro IFNOT_ALIB_FILES.
Parameters
...The source to select.

Definition at line 418 of file alib.inl.

◆ IF_ALIB_FORMAT

#define IF_ALIB_FORMAT ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Format is not included in the ALib Build.

See also
Configuration macro ALIB_FORMAT and sibling macro IFNOT_ALIB_FORMAT.
Parameters
...The source to select.

Definition at line 346 of file alib.inl.

◆ IF_ALIB_MONOMEM

#define IF_ALIB_MONOMEM ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Monomem is not included in the ALib Build.

See also
Configuration macro ALIB_MONOMEM and sibling macro IFNOT_ALIB_MONOMEM.
Parameters
...The source to select.

Definition at line 426 of file alib.inl.

◆ IF_ALIB_RESOURCES

#define IF_ALIB_RESOURCES ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Resources is not included in the ALib Build.

See also
Configuration macro ALIB_RESOURCES and sibling macro IFNOT_ALIB_RESOURCES.
Parameters
...The source to select.

Definition at line 370 of file alib.inl.

◆ IF_ALIB_SINGLETONS

#define IF_ALIB_SINGLETONS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Singletons is not included in the ALib Build.

See also
Configuration macro ALIB_SINGLETONS and sibling macro IFNOT_ALIB_SINGLETONS.
Parameters
...The source to select.

Definition at line 434 of file alib.inl.

◆ IF_ALIB_STRINGS

#define IF_ALIB_STRINGS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Strings is not included in the ALib Build.

See also
Configuration macro ALIB_STRINGS and sibling macro IFNOT_ALIB_STRINGS.
Parameters
...The source to select.

Definition at line 442 of file alib.inl.

◆ IF_ALIB_SYSTEM

#define IF_ALIB_SYSTEM ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib System is not included in the ALib Build.

See also
Configuration macro ALIB_SYSTEM and sibling macro IFNOT_ALIB_SYSTEM.
Parameters
...The source to select.

Definition at line 362 of file alib.inl.

◆ IF_ALIB_THREADMODEL

#define IF_ALIB_THREADMODEL ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib ThreadModel is not included in the ALib Build.

See also
Configuration macro ALIB_THREADMODEL and sibling macro IFNOT_ALIB_THREADMODEL.
Parameters
...The source to select.

Definition at line 458 of file alib.inl.

◆ IF_ALIB_THREADS

#define IF_ALIB_THREADS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Threads is not included in the ALib Build.

See also
Configuration macro ALIB_SINGLE_THREADED and sibling macro IFNOT_ALIB_THREADS.
Parameters
...The source to select.

Definition at line 466 of file alib.inl.

◆ IF_ALIB_VARIABLES

#define IF_ALIB_VARIABLES ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Variables is not included in the ALib Build.

See also
Configuration macro ALIB_VARIABLES and sibling macro IFNOT_ALIB_VARIABLES.
Parameters
...The source to select.

Definition at line 386 of file alib.inl.

◆ IFNOT_ALIB_ALOX

#define IFNOT_ALIB_ALOX ( ...)

Prunes given code ... if ALox is not included in the ALib Build.

See also
Configuration macro ALIB_ALOX and sibling macro IF_ALIB_ALOX.
Parameters
...The source to select.

Definition at line 315 of file alib.inl.

◆ IFNOT_ALIB_APP

#define IFNOT_ALIB_APP ( ...)

Prunes given code ... if ALib App is not included in the ALib Build.

See also
Configuration macro ALIB_APP and sibling macro IF_ALIB_APP.
Parameters
...The source to select.

Definition at line 323 of file alib.inl.

◆ IFNOT_ALIB_BITBUFFER

#define IFNOT_ALIB_BITBUFFER ( ...)

Prunes given code ... if ALib BitBuffer is not included in the ALib Build.

See also
Configuration macro ALIB_BITBUFFER and sibling macro IF_ALIB_BITBUFFER.
Parameters
...The source to select.

Definition at line 331 of file alib.inl.

◆ IFNOT_ALIB_BOXING

#define IFNOT_ALIB_BOXING ( ...)

Prunes given code ... if ALib Boxing is not included in the ALib Build.

See also
Configuration macro ALIB_BOXING and sibling macro IF_ALIB_BOXING.
Parameters
...The source to select.

Definition at line 339 of file alib.inl.

◆ IFNOT_ALIB_CAMP

#define IFNOT_ALIB_CAMP ( ...)

Prunes given code ... if ALib Resources is not included in the ALib Build.

See also
Configuration macro ALIB_CAMP and sibling macro IF_ALIB_CAMP.
Parameters
...The source to select.

Definition at line 451 of file alib.inl.

◆ IFNOT_ALIB_CLI

#define IFNOT_ALIB_CLI ( ...)

Prunes given code ... if ALib CLI is not included in the ALib Build.

See also
Configuration macro ALIB_CLI and sibling macro IF_ALIB_CLI.
Parameters
...The source to select.

Definition at line 379 of file alib.inl.

◆ IFNOT_ALIB_CONTAINERS

#define IFNOT_ALIB_CONTAINERS ( ...)

Prunes given code ... if ALib Containers is not included in the ALib Build.

See also
Configuration macro ALIB_CONTAINERS and sibling macro IF_ALIB_CONTAINERS.
Parameters
...The source to select.

Definition at line 395 of file alib.inl.

◆ IFNOT_ALIB_ENUMRECORDS

#define IFNOT_ALIB_ENUMRECORDS ( ...)

Prunes given code ... if ALib EnumRecords is not included in the ALib Build.

See also
Configuration macro ALIB_ENUMRECORDS and sibling macro IF_ALIB_ENUMRECORDS.
Parameters
...The source to select.

Definition at line 403 of file alib.inl.

◆ IFNOT_ALIB_EXCEPTIONS

#define IFNOT_ALIB_EXCEPTIONS ( ...)
Value:
__VA_ARGS__

Prunes given code ... if ALib Exceptions is not included in the ALib Build.

See also
Configuration macro ALIB_EXCEPTIONS and sibling macro IF_ALIB_EXCEPTIONS.
Parameters
...The source to select.

Definition at line 358 of file alib.inl.

◆ IFNOT_ALIB_EXPRESSIONS

#define IFNOT_ALIB_EXPRESSIONS ( ...)

Prunes given code ... if ALib Expressions is not included in the ALib Build.

See also
Configuration macro ALIB_EXPRESSIONS and sibling macro IF_ALIB_EXPRESSIONS.
Parameters
...The source to select.

Definition at line 411 of file alib.inl.

◆ IFNOT_ALIB_FILES

#define IFNOT_ALIB_FILES ( ...)

Prunes given code ... if ALib Files is not included in the ALib Build.

See also
Configuration macro ALIB_FILES and sibling macro IF_ALIB_FILES.
Parameters
...The source to select.

Definition at line 419 of file alib.inl.

◆ IFNOT_ALIB_FORMAT

#define IFNOT_ALIB_FORMAT ( ...)

Prunes given code ... if ALib Format is not included in the ALib Build.

See also
Configuration macro ALIB_FORMAT and sibling macro IF_ALIB_FORMAT.
Parameters
...The source to select.

Definition at line 347 of file alib.inl.

◆ IFNOT_ALIB_MONOMEM

#define IFNOT_ALIB_MONOMEM ( ...)

Prunes given code ... if ALib Monomem is not included in the ALib Build.

See also
Configuration macro ALIB_MONOMEM and sibling macro IF_ALIB_MONOMEM.
Parameters
...The source to select.

Definition at line 427 of file alib.inl.

◆ IFNOT_ALIB_RESOURCES

#define IFNOT_ALIB_RESOURCES ( ...)

Prunes given code ... if ALib Resources is not included in the ALib Build.

See also
Configuration macro ALIB_RESOURCES and sibling macro IF_ALIB_RESOURCES.
Parameters
...The source to select.

Definition at line 371 of file alib.inl.

◆ IFNOT_ALIB_SINGLETONS

#define IFNOT_ALIB_SINGLETONS ( ...)

Prunes given code ... if ALib Singletons is not included in the ALib Build.

See also
Configuration macro ALIB_SINGLETONS and sibling macro IF_ALIB_SINGLETONS.
Parameters
...The source to select.

Definition at line 435 of file alib.inl.

◆ IFNOT_ALIB_STRINGS

#define IFNOT_ALIB_STRINGS ( ...)

Prunes given code ... if ALib Strings is not included in the ALib Build.

See also
Configuration macro ALIB_STRINGS and sibling macro IF_ALIB_STRINGS.
Parameters
...The source to select.

Definition at line 443 of file alib.inl.

◆ IFNOT_ALIB_SYSTEM

#define IFNOT_ALIB_SYSTEM ( ...)

Prunes given code ... if ALib System is not included in the ALib Build.

See also
Configuration macro ALIB_SYSTEM and sibling macro IF_ALIB_SYSTEM.
Parameters
...The source to select.

Definition at line 363 of file alib.inl.

◆ IFNOT_ALIB_THREADMODEL

#define IFNOT_ALIB_THREADMODEL ( ...)

Prunes given code ... if ALib ThreadModel is not included in the ALib Build.

See also
Configuration macro ALIB_THREADMODEL and sibling macro IF_ALIB_THREADMODEL.
Parameters
...The source to select.

Definition at line 459 of file alib.inl.

◆ IFNOT_ALIB_THREADS

#define IFNOT_ALIB_THREADS ( ...)

Prunes given code ... if ALib Threads is not included in the ALib Build.

See also
Configuration macro ALIB_SINGLE_THREADED and sibling macro IF_ALIB_THREADS.
Parameters
...The source to select.

Definition at line 467 of file alib.inl.

◆ IFNOT_ALIB_VARIABLES

#define IFNOT_ALIB_VARIABLES ( ...)

Prunes given code ... if ALib Variables is not included in the ALib Build.

See also
Configuration macro ALIB_VARIABLES and sibling macro IF_ALIB_VARIABLES.
Parameters
...The source to select.

Definition at line 387 of file alib.inl.