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:
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.
| #define A_CCHAR | ( | STR | ) |
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.
| STR | The character or string literal to eventually prefix with 'u', 'U' or 'L' . |
| #define A_CHAR | ( | 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.
| STR | The character or string literal to be eventually prefix with 'L', 'u' or 'U'. |
| #define A_NCHAR | ( | 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.
| STR | The character or string literal that is returned as is. |
| #define A_SCHAR | ( | 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.
| STR | The character or string literal to prefix with 'u', 'U' or 'L' . |
| #define A_WCHAR | ( | 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.
| STR | The character or string literal to prefix with 'u', 'U' or 'L' . |
| #define A_XCHAR | ( | 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.
| STR | The character or string literal to prefix with 'u', 'U' or 'L' . |
| #define ALIB_ALLOW_BITWISE_SWITCH |
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.
| #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 |
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.
| #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 |
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.
| #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 |
Preprocessor macro to disable compiler warnings about unused preprocessor macros.
Preprocessor macro to disable compiler warnings concerning unused macro definitions.
| #define ALIB_ALLOW_UNUSED_PARAMETER |
| #define ALIB_ALLOW_UNUSED_VARIABLE |
| #define ALIB_ALOX 1 |
Denotes if module ALox is included in the ALib Build.
| #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.
| #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.
| #define ALIB_APP 1 |
Denotes if module ALib App is included in the ALib Build.
| #define ALIB_ASSERT | ( | cond, | |
| domain ) |
If given condition is false, error message "Assertion Failed" is written.
| cond | The condition assert. |
| domain | The domain of the assertion. (Usually the ALib Module.) |
| #define ALIB_ASSERT_ERROR | ( | cond, | |
| domain, | |||
| ... ) |
If given condition is false, given message objects are written as an error.
| cond | The condition assert. |
| domain | The domain of the assertion. (Usually the ALib Module.) |
| ... | The objects used to format the message string. |
| #define ALIB_ASSERT_GLOBAL_NAMESPACE |
If this macro is placed outside the global namespace, a static_assert is raised at compile time.
| #define ALIB_ASSERT_MESSAGE | ( | cond, | |
| domain, | |||
| ... ) |
If given condition is false, given message objects are written as a message.
| cond | The condition assert. |
| domain | The domain of the assertion. (Usually the ALib Module.) |
| ... | The objects used to format the message string. |
| #define ALIB_ASSERT_MODULE | ( | modulename | ) |
Asserts if a given module is included in the ALib Build.
| modulename | The name of the module to assert as available. |
| #define ALIB_ASSERT_RESULT_EQUALS | ( | func, | |
| value ) |
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.
| func | The function to invoke. |
| value | The value to test for. |
| #define ALIB_ASSERT_RESULT_GREATER_THAN | ( | func, | |
| value ) |
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.
| func | The function to invoke. |
| value | The value to test for. |
| #define ALIB_ASSERT_RESULT_LESS_THAN | ( | func, | |
| value ) |
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.
| func | The function to invoke. |
| value | The value to test for. |
| #define ALIB_ASSERT_RESULT_NOT_EQUALS | ( | func, | |
| value ) |
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.
| func | The function to invoke. |
| value | The value to test for. |
| #define ALIB_ASSERT_WARNING | ( | cond, | |
| domain, | |||
| ... ) |
If given condition is false, given message objects are written as a warning.
| cond | The condition assert. |
| domain | The domain of the assertion. (Usually the ALib Module.) |
| ... | The objects used to format the message string. |
| #define ALIB_BASE_DIR |
| #define ALIB_BITBUFFER 1 |
Denotes if module ALib BitBuffer is included in the ALib Build.
| #define ALIB_BOXING 1 |
Denotes if module ALib Boxing is included in the ALib Build.
| #define ALIB_C20_MODULES |
| #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)
| #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__.
| #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.
| #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.
| #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.
| #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.
| #define ALIB_CAMP 1 |
Denotes if module ALib Camp is included in the ALib Build.
| #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.
| #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.
| #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 ) |
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.
| T | The type to provide array type-traits for. |
| TChar | The character type of character arrays that T represents or might be created of. |
| Access | One 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. |
| Construction | One of the values NONE, Implicit or ExplicitOnly. |
| #define ALIB_CHARACTER_ARRAY_IMPL_BUFFER | ( | T, | |
| TChar, | |||
| ... ) |
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.
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ARRAY_IMPL_BUFFER_MUTABLE | ( | T, | |
| TChar, | |||
| ... ) |
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.
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ARRAY_IMPL_CONSTRUCT | ( | T, | |
| TChar, | |||
| ... ) |
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.
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ARRAY_IMPL_LENGTH | ( | T, | |
| TChar, | |||
| ... ) |
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.
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ARRAY_IMPL_LENGTH_MUTABLE | ( | T, | |
| TChar, | |||
| ... ) |
Alternative macro version of ALIB_CHARACTER_ARRAY_IMPL_LENGTH, which declares method argument src as a mutual reference of type T.
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ARRAY_MUTABLE | ( | T, | |
| TChar, | |||
| 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.
| T | The type to provide array type-traits for. |
| TChar | The character type of character arrays that T represents or might be created of. |
| Construction | One of the values NONE, Implicit or ExplicitOnly. |
| #define ALIB_CHARACTER_ZT_ARRAY | ( | T, | |
| TChar, | |||
| 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.
| T | The type to provide array type-traits for. |
| TChar | The character type of character arrays that T represents or might be created of. |
| Access | One 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. |
| Construction | One of the values NONE, Implicit or ExplicitOnly. |
| #define ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER | ( | T, | |
| TChar, | |||
| ... ) |
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&) .)
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ZT_ARRAY_IMPL_BUFFER_MUTABLE | ( | T, | |
| TChar, | |||
| ... ) |
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&) .)
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ZT_ARRAY_IMPL_CONSTRUCT | ( | T, | |
| TChar, | |||
| ... ) |
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) .)
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH | ( | T, | |
| TChar, | |||
| ... ) |
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&) .)
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ZT_ARRAY_IMPL_LENGTH_MUTABLE | ( | T, | |
| TChar, | |||
| ... ) |
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&) .)
| T | The type to provide the specialized static method for. |
| TChar | The 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. |
| #define ALIB_CHARACTER_ZT_ARRAY_MUTABLE | ( | T, | |
| TChar, | |||
| 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.
| T | The type to provide array type-traits for. |
| TChar | The character type of character arrays that T represents or might be created of. |
| Construction | One of the values NONE, Implicit or ExplicitOnly. |
| #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.
| #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.
| #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.
| #define ALIB_CLI 1 |
Denotes if module ALib CLI is included in the ALib Build.
| #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> )
| #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.
| #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.
| #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.
| #define ALIB_CONCAT | ( | a, | |
| b ) |
| #define ALIB_CONTAINERS 1 |
Denotes if module ALib Containers is included in the ALib Build.
| #define ALIB_CPP_23 | ( | ... | ) |
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.
| ... | The source to select. |
| #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.
| ... | The source to select. |
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.
| #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.
| #define ALIB_DBG | ( | ... | ) |
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.
| ... | Source code to prune in release-builds. |
| #define ALIB_DBG_PREVENT_RECURSIVE_METHOD_CALLS |
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.
| #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.
| #define ALIB_DBG_TAKE_CI const CallerInfo& ci |
Used with method declarations to define parameter ci of type CallerInfo.
| #define ALIB_DCS ALIB_OWN(*this) |
Alias of macro ALIB_OWN, providing *this as the owner. Commonly used with types derived from classes DbgCriticalSections.
| #define ALIB_DCS_ACQUIRE Acquire(ALIB_CALLER); |
Calls void Acquire(const CallerInfo&) const (on this).
| #define ALIB_DCS_ACQUIRE_SHARED AcquireShared(ALIB_CALLER); |
Calls void AcquireShared(const CallerInfo&) const (on this).
| #define ALIB_DCS_ACQUIRE_SHARED_WITH | ( | CS | ) |
Calls void AcquireShared(const CallerInfo&) const on the instance given with CS.
| CS | The DbgCriticalSections instance to use. |
| #define ALIB_DCS_ACQUIRE_WITH | ( | CS | ) |
Calls void Acquire(const CallerInfo&) const on the instance given with CS.
| CS | The DbgCriticalSections instance to use. |
| #define ALIB_DCS_RELEASE Release(ALIB_CALLER); |
Calls void Release(const CallerInfo&) const (on this).
| #define ALIB_DCS_RELEASE_SHARED ReleaseShared(ALIB_CALLER); |
Calls void ReleaseShared(const CallerInfo&) const (on this).
| #define ALIB_DCS_RELEASE_SHARED_WITH | ( | CS | ) |
Calls void ReleaseShared(const CallerInfo&) const on the instance given with CS.
| CS | The DbgCriticalSections instance to use. |
| #define ALIB_DCS_RELEASE_WITH | ( | CS | ) |
Calls void Release(const CallerInfo&) const on the instance given with CS.
| CS | The DbgCriticalSections instance to use. |
| #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.
| #define ALIB_DCS_SHARED_WITH | ( | CS | ) |
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.
| CS | The DbgCriticalSections to acquire and release. |
| #define ALIB_DCS_WITH | ( | CS | ) |
Alternative to macro ALIB_DCS which allows specifying the ownable. (Macro ALIB_DCS fixes this to *this).
| CS | The DbgCriticalSections to acquire and release. |
| #define ALIB_DEBUG |
If true (1), plausibility checks and ALib Assertions are enabled.
| #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.
| #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.
| #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.
| #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.
| #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.
| #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.
| #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.
| #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:
| #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.
| #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.
| #define ALIB_DOCUMENTATION_URL "https://alib.dev/" |
| #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.
| #define ALIB_ENUMRECORDS 1 |
Denotes if module ALib EnumRecords is included in the ALib Build.
| #define ALIB_ERROR | ( | domain, | |
| ... ) |
Writes the given message objects as an error.
| domain | The domain of the assertion. (Usually the ALib Module.) |
| ... | The objects used to format the message string. |
| #define ALIB_EXCEPTIONS 1 |
Denotes if module ALib Exceptions is included in the ALib Build.
| #define ALIB_EXPORT |
| #define ALIB_EXPRESSIONS 1 |
Denotes if module ALib Expressions is included in the ALib Build.
| #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.
| #define ALIB_FALLTHROUGH |
| #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.
| #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.
| #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.
| #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".
| #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.
| #define ALIB_FILES 1 |
Denotes if module ALib Files is included in the ALib Build.
| #define ALIB_FORMAT 1 |
Denotes if module ALib Format is included in the ALib Build.
| #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.
| #define ALIB_GTEST |
| #define ALIB_HAS_METHOD | ( | T, | |
| Method, | |||
| ... ) |
Evaluates to true if the given type T has a method called Method with the given signature. Otherwise, evaluates to false, respectively causes SFINAE.
| T | The type to test a method for. |
| Method | The name of the method. |
| ... | Variadic list of args of the method. |
| #define ALIB_IDENTIFIER | ( | prefix | ) |
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.
| prefix | A prefix token to use. |
| #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.
| #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.
| #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.
| #define ALIB_LOCK_RECURSIVE_WITH | ( | lock | ) |
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.
| lock | The mutex to acquire and release. |
| #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.
| #define ALIB_LOCK_SHARED_WITH | ( | lock | ) |
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.
| lock | The mutex to acquire and release. |
| #define ALIB_LOCK_WITH | ( | lock | ) |
| #define ALIB_MESSAGE | ( | domain, | |
| ... ) |
Writes the given message.
| domain | The domain of the assertion. (Usually the ALib Module.) |
| ... | The objects used to format the message string. |
| #define ALIB_MONOMEM 1 |
Denotes if module ALib Monomem is included in the ALib Build.
| #define ALIB_NSTRINGIFY | ( | a | ) |
| #define ALIB_OWN | ( | ownable | ) |
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.
Sibling macros
which instantiate an object of type OwnerRecursive, respectively OwnerShared, instead of class Owner.
| ownable | The Ownable to acquire and release. |
| #define ALIB_OWN_RECURSIVE | ( | ownable | ) |
Same as ALIB_OWN, but creates a local anonymous instance of class OwnerRecursive.
| #define ALIB_OWN_SHARED | ( | ownable | ) |
Same as ALIB_OWN, but creates a local anonymous instance of class OwnerShared.
| #define ALIB_POP_ALLOWANCE _Pragma("GCC diagnostic pop") |
| #define ALIB_PRECOMPILED_HEADER |
Configuration macro that can be passed to enable inclusions in the header file alib_precompile.hpp.
| #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.
| #define ALIB_REL_DBG | ( | releaseCode, | |
| ... ) |
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.
| #define ALIB_RESOURCES 1 |
Denotes if module ALib Resources is included in the ALib Build.
| #define ALIB_REVISION 0 |
The ALib revision number. The value of this macro is stored in namespace variable REVISION.
| #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.
| #define ALIB_SINGLETONS 1 |
Denotes if module ALib Singletons is included in the ALib Build.
| #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.
| #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.
| #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.
long double. | #define ALIB_SIZEOF_WCHAR_T 4 |
| #define ALIB_STACK_ALLOCATED_TYPE | ( | 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.
| T | The name of the type that this macro is placed in. |
| #define ALIB_STATIC_ASSERT | ( | CondVariable, | |
| Cond, | |||
| 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
| CondVariable | This should be a "speaking name" that tells the user right away what happened. |
| Cond | The condition that is asserted and hid away from the compiler's message text. |
| Message | The message that details what is said with CondVariable. |
| #define ALIB_STATIC_DENY | ( | CondVariable, | |
| Cond, | |||
| 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".
| CondVariable | This should be a "speaking name" that tells the user right away what happened. |
| Cond | The condition that is asserted to be false, and that is hid away from the compiler's message text. |
| Message | The message that details what is said with CondVariable. |
| #define ALIB_STRINGIFY | ( | a | ) |
| #define ALIB_STRINGS 1 |
Denotes if module ALib Strings is included in the ALib Build.
| #define ALIB_SYSTEM 1 |
Denotes if module ALib System is included in the ALib Build.
| #define ALIB_THREADMODEL 1 |
Denotes if module ALib ThreadModel is included in the ALib Build.
| #define ALIB_TVALUE | ( | T | ) |
| #define ALIB_VARIABLES 1 |
Denotes if module ALib Variables is included in the ALib Build.
| #define ALIB_VERSION 2511 |
The ALib version number. The value of this macro is stored in namespace variable VERSION.
| #define ALIB_WARNING | ( | domain, | |
| ... ) |
Writes the given message objects as an warning.
| domain | The domain of the assertion. (Usually the ALib Module.) |
| ... | The objects used to format the message string. |
| #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.
| #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.
| #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.
| #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.
| #define bitsof | ( | type | ) |
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.
sizeof, as an exception from the naming rules, this function is spelled in lower case.| #define DOXYGEN |
| #define IF_ALIB_ALOX | ( | ... | ) |
Prunes given code ... if ALox is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_APP | ( | ... | ) |
Prunes given code ... if ALib App is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_BITBUFFER | ( | ... | ) |
Prunes given code ... if ALib BitBuffer is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_BOXING | ( | ... | ) |
Prunes given code ... if ALib Boxing is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_CAMP | ( | ... | ) |
Prunes given code ... if ALib Resources is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_CLI | ( | ... | ) |
Prunes given code ... if ALib CLI is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_CONTAINERS | ( | ... | ) |
Prunes given code ... if ALib Containers is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_ENUMRECORDS | ( | ... | ) |
Prunes given code ... if ALib EnumRecords is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_EXCEPTIONS | ( | ... | ) |
Prunes given code ... if ALib Exceptions is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_EXPRESSIONS | ( | ... | ) |
Prunes given code ... if ALib Expressions is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_FILES | ( | ... | ) |
Prunes given code ... if ALib Files is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_FORMAT | ( | ... | ) |
Prunes given code ... if ALib Format is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_MONOMEM | ( | ... | ) |
Prunes given code ... if ALib Monomem is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_RESOURCES | ( | ... | ) |
Prunes given code ... if ALib Resources is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_SINGLETONS | ( | ... | ) |
Prunes given code ... if ALib Singletons is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_STRINGS | ( | ... | ) |
Prunes given code ... if ALib Strings is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_SYSTEM | ( | ... | ) |
Prunes given code ... if ALib System is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_THREADMODEL | ( | ... | ) |
Prunes given code ... if ALib ThreadModel is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_THREADS | ( | ... | ) |
Prunes given code ... if ALib Threads is not included in the ALib Build.
| ... | The source to select. |
| #define IF_ALIB_VARIABLES | ( | ... | ) |
Prunes given code ... if ALib Variables is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_ALOX | ( | ... | ) |
Prunes given code ... if ALox is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_APP | ( | ... | ) |
Prunes given code ... if ALib App is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_BITBUFFER | ( | ... | ) |
Prunes given code ... if ALib BitBuffer is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_BOXING | ( | ... | ) |
Prunes given code ... if ALib Boxing is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_CAMP | ( | ... | ) |
Prunes given code ... if ALib Resources is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_CLI | ( | ... | ) |
Prunes given code ... if ALib CLI is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_CONTAINERS | ( | ... | ) |
Prunes given code ... if ALib Containers is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_ENUMRECORDS | ( | ... | ) |
Prunes given code ... if ALib EnumRecords is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_EXCEPTIONS | ( | ... | ) |
Prunes given code ... if ALib Exceptions is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_EXPRESSIONS | ( | ... | ) |
Prunes given code ... if ALib Expressions is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_FILES | ( | ... | ) |
Prunes given code ... if ALib Files is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_FORMAT | ( | ... | ) |
Prunes given code ... if ALib Format is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_MONOMEM | ( | ... | ) |
Prunes given code ... if ALib Monomem is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_RESOURCES | ( | ... | ) |
Prunes given code ... if ALib Resources is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_SINGLETONS | ( | ... | ) |
Prunes given code ... if ALib Singletons is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_STRINGS | ( | ... | ) |
Prunes given code ... if ALib Strings is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_SYSTEM | ( | ... | ) |
Prunes given code ... if ALib System is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_THREADMODEL | ( | ... | ) |
Prunes given code ... if ALib ThreadModel is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_THREADS | ( | ... | ) |
Prunes given code ... if ALib Threads is not included in the ALib Build.
| ... | The source to select. |
| #define IFNOT_ALIB_VARIABLES | ( | ... | ) |
Prunes given code ... if ALib Variables is not included in the ALib Build.
| ... | The source to select. |