BloombergLP::bsls

Namespace for platform-trait definitions.

Types

NameDescription
AlignedBuffer An instance of this union is a block of raw memory of specified SIZE and ALIGNMENT. A AlignedBuffer object does not manage the construction or destruction of any other objects. SIZE is rounded up to the nearest multiple of ALIGNMENT. An instantiation of this union template will not compile unless ALIGNMENT is a power of two not larger than AlignmentUtil::BSLS_MAX_ALIGNMENT.
AlignedBuffer_Data This private implementation type provides a public char array data member d_buffer whose length is the specifed (template parameter) SIZE and which is aligned according to the specified (template parameter) ALIGNMENT.
Alignment This struct provides a namespace for enumerating the set of strategies for aligning arbitrary blocks of memory.
AlignmentFromType This struct computes (at compile time) a constant integral VALUE that specifies the required alignment for TYPE objects. Also provided is a typedef, Type, that is an alias for a primitive type that has the same alignment requirements as TYPE.
AlignmentImpCalc This struct provides an enumerator VALUE that is initialized to the required alignment for the specified TYPE.
AlignmentImpMatch Namespace for a set of overloaded match functions, as defined by the macro BSLS_ALIGNMENTIMP_MATCH_FUNC.
AlignmentImpPriorityToType Specializations of this struct provide a primitive type (as a Type typedef) that corresponds to the specified PRIORITY level.
AlignmentImpTag This struct defines a unique type having the specified compile-time SIZE.
AlignmentImp_Priority This struct provides a unique type that can be used as a trailing function parameter for overloaded functions having otherwise identical parameters. The highest-priority overloaded function can be selected by calling it with a high-priority argument. Note that "highest priority" means the largest VALUE in this case.
AlignmentToType This struct provides a typedef, Type, that aliases a type having the specified ALIGNMENT requirement.
AlignmentUtil This struct provides a namespace for a suite of compile-time constants, types, and pure procedures that provide platform-dependent alignment information.
Assert This "utility" class maintains a pointer containing the address of the current assertion-failure handler function (of type Assert::ViolationHandler) and provides methods to administer this function pointer. The invokeHandler method calls the currently-installed failure handler. This class also provides a suite of standard failure-handler functions that are suitable to be installed as the current Assert::ViolationHandler function. Note that clients are free to install any of these ("off-the-shelf") handlers, or to provide their own ("custom") assertion-failure handler functions when using this facility. Also note that assertion-failure handler functions must not return (i.e., they must abort, exit, terminate, throw, or hang).
AssertFailureHandlerGuard An object of this class saves the current assert handler and installs the one specified on construction. On destruction, the original assert handler is restored. Note that two objects of this class cannot be safely used concurrently from two separate threads (but may of course appear sequentially, including in nested blocks and function invocations within a single thread). Note that the behavior of objects of this class is unaffected by the (static) Assert::lockAssertAdministration method (i.e., the temporary replacement will occur, regardless of whether that method has been invoked.)
AssertImpUtil This "implementation utility" struct provides static functions with shared functionality that is made use of by both bsls_assert and bsls_review.
AssertImpUtil_UseContractsNo Tag type indicating language-level contracts are not enabled.
AssertTest This utility struct provides a suite of methods designed for use in conjunction with preprocessor macros during the negative testing of defensive checks using the facilities provided by the bsls_assert component. Unlike usual BDE functionality methods in this struct provide wide contracts because they need to function without assertion failures during testing, under unforeseen circumstances.
AssertTestException This class is an implementation detail of the bsls testing framework and should not be used directly in user code. It implements an immutable mechanism to communicate information about the context of an assertion that fails to a test-case handler.
AssertTestException_String This non-assignable class owns a null-terminated string, provides no accessors to manipulate that string, and allocates a new copy of that string when copied.
AssertTestHandlerGuard This class provides a guard that will install and uninstall the negative testing assertion handler, AssertTest::failTestDriver, within the protected scope, as well as a corresponding review handler, AssertTest::failTestDriverByReview.
AssertViolation This class is an unconstrained in-core value-semantic class that characterizes the details of a assert failure that has occurred.
AtomicBool This class implements an atomic boolean, which supports common boolean operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
AtomicInt This class implements an atomic integer, which supports common integer operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
AtomicInt64 This class is implements an atomic 64-bit integer, which supports common integer operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
AtomicOperations AtomicOperations provides a namespace for a suite of atomic operations on the following types as defined by the AtomicTypes typedef: integer - AtomicTypes::Int, 64bit integer - AtomicTypes::Int64, pointer - AtomicTypes::Pointer.
AtomicOperations_ALL_ALL_ClangIntrinsics Platform-specific atomic operations using clang __c11_atomic_* intrinsics.
AtomicOperations_Default32 This class provides default implementations of non-essential atomic operations for the 32-bit integer, 64-bit integer, the 32-bit unsigned integer, 64-bit unsigned integer and 32-bit pointer type for a generic 32-bit platform.
AtomicOperations_Default64 This class provides default implementations of non-essential atomic operations for the 32-bit integer, 64-bit integer, the 32-bit unsigned integer, 64-bit unsigned integer and 64-bit pointer type for a generic 64-bit platform.
AtomicOperations_DefaultInt This class provides default implementations of non-essential atomic operations for the 32-bit integer type independent on any specific platform. It also provides prototypes for the atomic operations for the 32-bit integer type that have to be implemented separately for each specific platform. These platform-independent and platform-specific atomic operations together form a full set of atomic operations for the 32-bit integer type.
AtomicOperations_DefaultInt64 This class provides default implementations of non-essential atomic operations for the 64-bit integer type independent on any specific platform. It also provides prototypes for the atomic operations for the 64-bit integer type that have to be implemented separately for each specific platform. These platform-independent and platform-specific atomic operations together form a full set of atomic operations for the 64-bit integer type.
AtomicOperations_DefaultPointer32 This class provides default implementations of non-essential atomic operations for the 32-bit pointer type independent on any specific platform. It also provides prototypes for the atomic operations for the pointer type that have to be implemented separately for each specific platform. These platform-independent and platform-specific atomic operations combined together form a full set of atomic operations for the pointer type.
AtomicOperations_DefaultPointer64 This class provides default implementations of non-essential atomic operations for the 64-bit pointer type independent on any specific platform. It also provides prototypes for the atomic operations for the pointer type that have to be implemented separately for each specific platform. These platform-independent and platform-specific atomic operations combined together form a full set of atomic operations for the pointer type.
AtomicOperations_DefaultUint This class provides default implementations of non-essential atomic operations for the 32-bit unsigned integer type independent on any specific platform. It also provides prototypes for the atomic operations for the 32-bit unsigned integer type that have to be implemented separately for each specific platform. These platform-independent and platform-specific atomic operations together form a full set of atomic operations for the 32-bit unsigned integer type.
AtomicOperations_DefaultUint64 This class provides default implementations of non-essential atomic operations for the 64-bit unsigned integer type independent on any specific platform. It also provides prototypes for the atomic operations for the 64-bit unsigned integer type that have to be implemented separately for each specific platform. These platform-independent and platform-specific atomic operations together form a full set of atomic operations for the 64-bit unsigned integer type.
AtomicOperations_X64_ALL_GCC
AtomicPointer This class implements an atomic pointer to a parameterized TYPE, which supports common pointer operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
AtomicUint This class implements an atomic unsigned integer, which supports common unsigned integer operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
AtomicUint64 This class is implements an atomic 64-bit unsigned integer, which supports common unsigned integer operations in a way that is guaranteed to be atomic. Operations on objects of this class provide the sequential consistency memory ordering guarantee unless explicitly qualified with a less strict consistency guarantee suffix (i.e., Acquire, Release, AcqRel or Relaxed).
Atomic_TypeTraits Forward declaration of atomic type traits for implementation class IMP.
BlockGrowth This struct provides a namespace for memory block growth strategies for pools, allocators, containers, etc.
BslExceptionUtil This struct provides a namespace for static utility functions that throw standard library exceptions.
BslLock This class implements a light-weight, portable wrapper of an OS-level mutex to support intra-process synchronization. The mutex implemented by this class is non-recursive. Note that BslLock is not intended for direct use by client code; it is meant for internal use only.
BslLockGuard This class implements a guard for automatically acquiring and releasing the lock on an associated bsls::BslLock object. This mechanism follows the RAII idiom whereby the lock on the BslLock associated with a guard object is acquired upon construction and released upon destruction.
BslLockImpl_pthread This class implements a light-weight wrapper of an OS-level mutex to support intra-process synchronization. The mutex implemented by this class is non-recursive. Note that BslLockImpl_pthread is not intended for direct use by client code; it is meant for internal use only.
BslOnce This struct provides a simple data type for ensuring a block of code is executed (only) once. Note that this is defined as a struct to allow constant initialization in a global or static context using BSLS_BSLONCE_INITIALIZER.
BslOnceGuard This class provides a guard for managing a BslOnce for the purpose of executing a block of code (only) once.
BslSourceNameParserUtil This struct provides a namespace for static utility functions that parse source file names (as may be reported by the FILE macro), including Lakos-style component source and test driver names.
BslTestUtil This class provides a namespace for utilities that are useful when writing a test driver that is not permitted to use the standard C++ iostream facilities, which is typical of test drivers in the bsl package group.
BuildTargetExcYes Tag type indicating that the build target has exceptions enabled.
ByteOrderUtil This class provides a namespace for functions used for reversing the byte order of values having integral type.
FuzzTestHandlerGuard This class provides a guard that will install and uninstall four handlers, one for assertion failure, one for review failure, one for BSLS_PRECONDITIONS_BEGIN, and one for BSLS_PRECONDITIONS_END, within its protected scope.
FuzzTestPreconditionException This class is an implementation detail of the bsls fuzz testing framework and should not be used directly in user code. It implements an immutable mechanism to communicate to a test-case handler information about the context of a precondition that fails.
FuzzTestPreconditionTracker This utility class is used by the preprocessor macros to appropriately handle precondition violations that occur in different levels and components.
FuzzTest_TestUtil This utility class provides sample functions to demonstrate an AssertViolation or a ReviewViolation originating from a different component to facilitate testing of bsls_fuzztest component.
Log This class serves as a namespace containing a suite of utility functions that allow low-level code to write log messages to a configurable, globally controlled destination.
LogSeverity This struct provides a namespace for enumerating the set of logging severity levels used in the bsls logging framework (see bsls_log). See Enum in the TYPES sub-section for details.
NameOf This class provides a means to display the type name of its template parameter TYPE. An instance of this class can be implicitly (or explicitly via the name accessor) cast to a const char * which will point to a buffer containing the description of the type. Note that all instances of a given type will refer to the same character buffer containing the name.
NameOf_Base This class provide non-template implementation code for the NameOf template class.
ObjectBuffer An instance of this union is a raw block of memory suitable for storing an object of type TYPE. Specifically, the size and alignment of this union exactly matches that of TYPE. A TYPE object can be constructed into an ObjectBuffer using the placement new operator and can be destroyed by explicitly calling its destructor, ~TYPE(). It is the user's responsibility to perform this construction and destruction; an ObjectBuffer object does not manage the construction or destruction of any other objects.
OutputRedirector This class provides a facility for redirecting stdout and stderr to temporary files, retrieving output from the respective temporary file and comparing the output to user-supplied character buffers. An OutputRedirector object can be in an un-redirected state or a redirected state. If the redirector is in a redirected state, it will redirect either stdout or stderr, but not both simultaneously. An OutputRedirector object has the concept of a scratch buffer, where output captured from the process' stdout or stderr stream is stored when the OutputRedirector object is in the redirected state. Throughout this class, the term "captured output" refers to data that has been written to the stdout or stderr stream and is waiting to be loaded into the scratch buffer. Each time the load method is called, the scratch buffer is truncated, and the captured output is moved into the scratch buffer. When this is done, there is no longer any captured output.
PerformanceHint This struct provides a namespace for a suite of functions that give performance hints to the compiler or hardware.
Platform Namespace for platform-trait definitions.
PlatformUtil Provide a namespace for a suite of typedefs and pure procedures that encapsulate, platform-dependent types and APIs.
PointerCastUtil This struct provides a namespace for a static utility function that allows casting between function and data pointers.
PreconditionsHandler This utility class maintains pointers containing the addresses of functions invoked by the BSLS_PRECONDITIONS_BEGIN and BSLS_PRECONDITIONS_END macros, and provides methods to manipulate and utilize those functions.
ProtocolTest This mechanism class template provides the implementation of protocol testing concerns via test* methods (for non-method concerns), and via operator-> (for method concerns). The BSLS_TESTIMP template parameter is required to be a class derived from ProtocolTestImp that provides test implementations of all protocol methods.
ProtocolTestImp This mechanism class template is a base class for a test implementation of a protocol class defined by the BSLS_PROTOCOL template parameter. Its purpose is to reduce the boilerplate test code required to verify that derived virtual methods are called. It provides markDone member functions one of which should be called from each method of the protocol class test implementation to indicate that the virtual method is correctly overridden. It also overloads operator-> to serve as a proxy to BSLS_PROTOCOL and detect when BSLS_PROTOCOL methods are called.
ProtocolTest_AsBigAsT This auxiliary structure has a size no less than the size of (template parameter) T.
ProtocolTest_Dtor This class template is a helper protocol-test implementation class that tests that a protocol destructor is declared virtual, which it does by calling the markDone function from its destructor. The destructor will be executed if the protocol's destructor is declared virtual and not executed otherwise. Note that the BSLS_TESTIMP template parameter is required to be a type derived from ProtocolTestImp class.
ProtocolTest_IsAbstract This class template is a compile-time meta-function, parameterized with type T, the output of which is value, which will be true if T is abstract and false otherwise. On some platforms, the IsAbstract test makes use of the fact that a type 'an array of objects of an abstract type' (e.g., T[1]) cannot exist. Note that it is only an approximation, because this is also true for an incomplete type. But, this approximation is good enough for the purpose of testing protocol classes. On certain other platforms, the IsAbstract test will make use of the fact that abstract types cannot be returned. This approximation also has issues, noted below, but is also good enough for the purpose of testing protocol classes.
ProtocolTest_MethodReturnRefType This class is a proxy for a return type designed to simplify testing implementations of protocol methods. ProtocolTest_MethodReturnRefType can be converted to any reference type. When an object of this class is returned from a test implementation of a protocol method, it is implicitly converted to the return type of the protocol method.
ProtocolTest_MethodReturnType This class is a proxy for a return type designed to simplify testing implementations of protocol methods. ProtocolTest_MethodReturnType can be converted to any non-reference type (i.e., the type can be either a value or pointer type, but not a reference type). When an object of this class is returned from a test implementation of a protocol method, it is implicitly converted to the return type of the protocol method.
ProtocolTest_Status This class keeps track of the test status, which includes the status of the last test and the number of failures across all tests.
Review This "utility" class maintains a pointer containing the address of the current review-failure handler function (of type Review::ViolationHandler) and provides methods to administer this function pointer. The invokeHandler method calls the currently-installed failure handler. The default installed handler is the Review::failByLog function.
ReviewFailureHandlerGuard An object of this class saves the current review handler and installs the one specified on construction. On destruction, the original review handler is restored. Note that two objects of this class cannot be safely used concurrently from two separate threads (but may of course appear sequentially, including in nested blocks and function invocations within a single thread). Note that the behavior of objects of this class is unaffected by the (static) Review::lockReviewAdministration method (i.e., the temporary replacement will occur, regardless of whether that method has been invoked).
ReviewViolation This class is an unconstrained in-core value-semantic class that characterizes the details of a review failure that has occurred.
SpinLock A statically-initializable synchronization primitive that "spins" (i.e., executes user instructions in a tight loop) rather than blocking waiting threads using system calls. The following idiom is used to initialize SpinLock variables: ` SpinLock lock = BSLS_SPINLOCK_UNLOCKED; ` A class member d_lock of type SpinLock may be initialized using the following idiom: ` , d_lock(SpinLock::s_unlocked) `
SpinLockGuard This type implements a scoped guard for SpinLock.
SpinLock_MemberInitializer This component-private class is an empty type to work around legacy initialization syntax. The only object of this type should be Spinlock::s_unlocked, which should only ever be used to initialize member variables of type SpinLock.
StackAddressUtil This struct provides a namespace for the function to obtain return addresses from the stack.
Stopwatch The class provides an accumulator for the system, user, and wall times of the current process. A stopwatch can be in either the STOPPED (initial) state or the RUNNING state. It potentially tracks three values: the accumulated system time, the accumulated user time, and the accumulated wall time (all in seconds and all initially set to zero). Whether or not system and user times are accumulated is conditional on how the stopwatch is started (see the start method). While in the RUNNING state, a stopwatch accumulates the above values and it retains the values if put into the STOPPED state (unless reset is called). The accumulated times can be accessed at any time and in either state (RUNNING or STOPPED).
SystemClockType This struct provides a namespace for enumerating the set of system clock type for use in distinguishing which system clock to use for measuring time. See Enum in the TYPES sub-section for details.
SystemTime This struct provides a namespace for system-time-retrieval functions.
TimeInterval Each instance of this value-semantic type represents a time interval with nanosecond resolution. In the "canonical representation" of a time interval, the seconds field may have any 64-bit signed integer value, with the nanoseconds field limited to the range [ -999,999,999..999,999,999 ], and with the additional constraint that the two fields are either both non-negative or both non-positive.
TimeInterval_DurationTraits Trait metafunction that determines whether the std::chrono::duration<REP, PERIOD> object can be converted to bsls::TimeInterval either implicitly or explicitly.
TimeInterval_IsDuration Template metafunction to determine if the specified TYPE is a std::chrono::duration.
TimeInterval_RepTraits Trait metafunction that determines whether the specified REP type is considered a floating point type.
TimeUtil This struct provides a namespace for a set of platform-neutral pure procedures to access real-time system clock functionality. High-resolution time functions intended for interval-timing return an interval in nanoseconds (1 nsec = 1E-9 sec) as a platform-independent 64-bit integer.
Types Provide a namespace for a suite of typedefs that encapsulate platform-dependent types.
UnspecifiedBool This class provides a member, d_member, whose pointer-to-member may be used as an "unspecified boolean type" for implicit conversion operators.
Util This struct provides a namespace for essential low-level functions for implementing portable generic facilities such as the C++ standard library.
Util_AssertNotLvalue Metafunction that provides a dummy type when TYPE is not an lvalue.
Util_Identity This class template provides an easy way to alias a function pointer type when used as the return type of a function. The syntax for a function returning a function pointer is otherwise quite obscure, and difficult to read. As we want to return function pointers taking parameters and returning a result specified by template parameters below, it is not possible to define a simple typedef to the function type outside the function template itself.
Util_RemoveReference Metafunction providing the referenced type of the specified TYPE.

Type Aliases

NameDescription
AssertImpUtil_UseContracts Alias selecting the contracts tag type for the current build.
BuildTargetExc Tag type indicating that the build target has exceptions enabled.

Functions

NameDescription
debugprint debugprint overloads
nameOfType Return the name of the type of the object passed to this function.
operator""_h This user defined literal operator converts the specified hours value to the respective TimeInterval value. The behavior is undefined unless the specified number of hours can be converted to valid TimeInterval object. (See the "User-Defined Literals" section in the component-level documentation.)
operator""_min This user defined literal operator converts the specified minutes value to the respective TimeInterval value. The behavior is undefined unless the specified number of minutes can be converted to valid TimeInterval object. (See the "User-Defined Literals" section in the component-level documentation.)
operator""_ms This user defined literal operator converts the specified milliseconds value to the respective TimeInterval value. (See the "User-Defined Literals" section in the component-level documentation.)
operator""_ns This user defined literal operator converts the specified nanoseconds value to the respective TimeInterval value. (See the "User-Defined Literals" section in the component-level documentation.)
operator""_s This user defined literal operator converts the specified seconds value to the respective TimeInterval value. The behavior is undefined unless the specified number of seconds can be converted to valid TimeInterval object. (See the "User-Defined Literals" section in the component-level documentation.)
operator""_us This user defined literal operator converts the specified microseconds value to the respective TimeInterval value. (See the "User-Defined Literals" section in the component-level documentation.)
operator+ Addition operators
operator- Unary minus operators
operator<< Write the value of the specified timeInterval to the specified output stream in a single-line format, and return a reference providing modifiable access to stream. If stream is not valid on entry, this operation has no effect. Note that this human-readable format is not fully specified and can change without notice. Also note that this method has the same behavior as object.print(stream, 0, -1).
operator== Equality operators
operator!= Inequality operators
operator< Less-than operators
operator<= Less-than-or-equal operators
operator> Greater-than operators
operator>= Greater-than-or-equal operators