[#BloombergLP-bsls]
= xref:BloombergLP.adoc[BloombergLP]::bsls
:relfileprefix: ../
:mrdocs:

Namespace for platform&hyphen;trait definitions&period;

== Types

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AlignedBuffer.adoc[`AlignedBuffer`] 
| Uninitialized buffer of specified `SIZE` and `ALIGNMENT`&period;
| xref:BloombergLP/bsls/AlignedBuffer_Data.adoc[`AlignedBuffer&lowbar;Data`] 
| Private char array of specified `SIZE` aligned to `ALIGNMENT`&period;
| xref:BloombergLP/bsls/Alignment.adoc[`Alignment`] 
| This `struct` provides a namespace for enumerating the set of strategies for aligning arbitrary blocks of memory&period;
| xref:BloombergLP/bsls/AlignmentFromType.adoc[`AlignmentFromType`] 
| This `struct` computes the required alignment for the specified `TYPE`&period;
| xref:BloombergLP/bsls/AlignmentImpCalc-098.adoc[`AlignmentImpCalc`] 
| This `struct` provides an enumerator `VALUE` that is initialized to the required alignment for the specified `TYPE`&period;
| xref:BloombergLP/bsls/AlignmentImpMatch.adoc[`AlignmentImpMatch`] 
| Namespace for a set of overloaded `match` functions, as defined by the macro `BSLS&lowbar;ALIGNMENTIMP&lowbar;MATCH&lowbar;FUNC`&period;
| xref:BloombergLP/bsls/AlignmentImpPriorityToType-059.adoc[`AlignmentImpPriorityToType`] 
| Specializations of this `struct` provide a primitive type (as a `Type` `typedef`) that corresponds to the specified `PRIORITY` level&period;
| xref:BloombergLP/bsls/AlignmentImpTag.adoc[`AlignmentImpTag`] 
| This `struct` defines a unique type having the specified compile&hyphen;time `SIZE`&period;
| xref:BloombergLP/bsls/AlignmentImp_Priority-0e.adoc[`AlignmentImp&lowbar;Priority`] 
| Unique type used as a trailing overload&hyphen;resolution parameter&period;
| xref:BloombergLP/bsls/AlignmentToType-0c.adoc[`AlignmentToType`] 
| This `struct` provides a `typedef`, `Type`, that aliases a type having the specified `ALIGNMENT` requirement&period;
| xref:BloombergLP/bsls/AlignmentUtil.adoc[`AlignmentUtil`] 
| This `struct` provides a namespace for a suite of compile&hyphen;time constants, types, and pure procedures that provide platform&hyphen;dependent alignment information&period;
| xref:BloombergLP/bsls/Assert.adoc[`Assert`] 
| Utility that administers the process&hyphen;wide assertion&hyphen;failure handler&period;
| xref:BloombergLP/bsls/AssertFailureHandlerGuard.adoc[`AssertFailureHandlerGuard`] 
| Guard that temporarily replaces the assertion&hyphen;failure handler&period;
| xref:BloombergLP/bsls/AssertImpUtil.adoc[`AssertImpUtil`] 
| This &quot;implementation utility&quot; `struct` provides static functions with shared functionality that is made use of by both `bsls&lowbar;assert` and `bsls&lowbar;review`&period;
| xref:BloombergLP/bsls/AssertImpUtil_UseContractsNo.adoc[`AssertImpUtil&lowbar;UseContractsNo`] 
| Tag type indicating language&hyphen;level contracts are not enabled&period;
| xref:BloombergLP/bsls/AssertTest.adoc[`AssertTest`] 
| Utility providing methods for negative testing of assertion macros&period;
| xref:BloombergLP/bsls/AssertTestException.adoc[`AssertTestException`] 
| Immutable exception conveying failed&hyphen;assertion context to a test handler&period;
| xref:BloombergLP/bsls/AssertTestException_String.adoc[`AssertTestException&lowbar;String`] 
| This non&hyphen;assignable class owns a null&hyphen;terminated string, provides no accessors to manipulate that string, and allocates a new copy of that string when copied&period;
| xref:BloombergLP/bsls/AssertTestHandlerGuard.adoc[`AssertTestHandlerGuard`] 
| Guard that installs the negative&hyphen;testing assertion and review handlers&period;
| xref:BloombergLP/bsls/AssertViolation.adoc[`AssertViolation`] 
| This class is an unconstrained _in&hyphen;core_ value&hyphen;semantic class that characterizes the details of a assert failure that has occurred&period;
| xref:BloombergLP/bsls/AtomicBool.adoc[`AtomicBool`] 
| Atomic boolean providing sequentially consistent operations by default&period;
| xref:BloombergLP/bsls/AtomicInt.adoc[`AtomicInt`] 
| Atomic integer providing sequentially consistent operations by default&period;
| xref:BloombergLP/bsls/AtomicInt64.adoc[`AtomicInt64`] 
| Atomic 64&hyphen;bit integer with sequentially consistent operations by default&period;
| xref:BloombergLP/bsls/AtomicOperations.adoc[`AtomicOperations`] 
| Namespace for a suite of platform atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics.adoc[`AtomicOperations&lowbar;ALL&lowbar;ALL&lowbar;ClangIntrinsics`] 
| Platform&hyphen;specific atomic operations using clang `&lowbar;&lowbar;c11&lowbar;atomic&lowbar;&ast;` intrinsics&period;
| xref:BloombergLP/bsls/AtomicOperations_Default32.adoc[`AtomicOperations&lowbar;Default32`] 
| Default atomic operations for a generic 32&hyphen;bit platform&period;
| xref:BloombergLP/bsls/AtomicOperations_Default64-0b.adoc[`AtomicOperations&lowbar;Default64`] 
| Default atomic operations for a generic 64&hyphen;bit platform&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt-08.adoc[`AtomicOperations&lowbar;DefaultInt`] 
| Default implementations of non&hyphen;essential 32&hyphen;bit integer atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultInt64-0a.adoc[`AtomicOperations&lowbar;DefaultInt64`] 
| Default implementations of non&hyphen;essential 64&hyphen;bit integer atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultPointer32.adoc[`AtomicOperations&lowbar;DefaultPointer32`] 
| Default implementations of non&hyphen;essential 32&hyphen;bit pointer atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultPointer64-061.adoc[`AtomicOperations&lowbar;DefaultPointer64`] 
| Default implementations of non&hyphen;essential 64&hyphen;bit pointer atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultUint-0d7.adoc[`AtomicOperations&lowbar;DefaultUint`] 
| Default implementations of non&hyphen;essential 32&hyphen;bit unsigned atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_DefaultUint64-00.adoc[`AtomicOperations&lowbar;DefaultUint64`] 
| Default implementations of non&hyphen;essential 64&hyphen;bit unsigned atomic operations&period;
| xref:BloombergLP/bsls/AtomicOperations_X64_ALL_GCC.adoc[`AtomicOperations&lowbar;X64&lowbar;ALL&lowbar;GCC`] 
| 
| xref:BloombergLP/bsls/AtomicPointer.adoc[`AtomicPointer`] 
| Atomic pointer providing sequentially consistent operations by default&period;
| xref:BloombergLP/bsls/AtomicUint.adoc[`AtomicUint`] 
| Atomic unsigned integer with sequentially consistent operations by default&period;
| xref:BloombergLP/bsls/AtomicUint64.adoc[`AtomicUint64`] 
| Atomic 64&hyphen;bit unsigned integer with sequentially consistent ops by default&period;
| xref:BloombergLP/bsls/Atomic_TypeTraits-03.adoc[`Atomic&lowbar;TypeTraits`] 
| Forward declaration of atomic type traits for implementation class `IMP`&period;
| xref:BloombergLP/bsls/BlockGrowth.adoc[`BlockGrowth`] 
| This struct provides a namespace for memory block growth strategies for pools, allocators, containers, etc&period;
| xref:BloombergLP/bsls/BslExceptionUtil.adoc[`BslExceptionUtil`] 
| This `struct` provides a namespace for `static` utility functions that throw standard library exceptions&period;
| xref:BloombergLP/bsls/BslLock.adoc[`BslLock`] 
| Light&hyphen;weight, portable wrapper of an OS&hyphen;level mutex&period;
| xref:BloombergLP/bsls/BslLockGuard.adoc[`BslLockGuard`] 
| RAII guard that acquires and releases a `bsls&colon;&colon;BslLock`&period;
| xref:BloombergLP/bsls/BslLockImpl_pthread.adoc[`BslLockImpl&lowbar;pthread`] 
| This class provides a non&hyphen;recursive pthread mutex for intra&hyphen;process use&period;
| xref:BloombergLP/bsls/BslOnce.adoc[`BslOnce`] 
| Gate&hyphen;keeper that ensures a block of code is executed only once&period;
| xref:BloombergLP/bsls/BslOnceGuard.adoc[`BslOnceGuard`] 
| This class provides a guard for managing a `BslOnce` for the purpose of executing a block of code (only) once&period;
| xref:BloombergLP/bsls/BslSourceNameParserUtil.adoc[`BslSourceNameParserUtil`] 
| Namespace for utilities that parse BDE&hyphen;style source file names&period;
| xref:BloombergLP/bsls/BslTestUtil.adoc[`BslTestUtil`] 
| Utilities for writing `bsl` test drivers without iostream&period;
| xref:BloombergLP/bsls/BuildTargetExcYes.adoc[`BuildTargetExcYes`] 
| Tag type indicating that the build target has exceptions enabled&period;
| xref:BloombergLP/bsls/ByteOrderUtil.adoc[`ByteOrderUtil`] 
| This `class` provides a namespace for functions used for reversing the byte order of values having integral type&period;
| xref:BloombergLP/bsls/FuzzTestHandlerGuard.adoc[`FuzzTestHandlerGuard`] 
| Guard that installs and restores fuzz&hyphen;test assertion and precondition handlers&period;
| xref:BloombergLP/bsls/FuzzTestPreconditionException.adoc[`FuzzTestPreconditionException`] 
| Immutable exception conveying failed&hyphen;precondition context to a test handler&period;
| xref:BloombergLP/bsls/FuzzTestPreconditionTracker.adoc[`FuzzTestPreconditionTracker`] 
| This utility class is used by the preprocessor macros to appropriately handle precondition violations that occur in different levels and components&period;
| xref:BloombergLP/bsls/FuzzTest_TestUtil.adoc[`FuzzTest&lowbar;TestUtil`] 
| Provide sample functions that trigger assert and review violations&period;
| xref:BloombergLP/bsls/Log.adoc[`Log`] 
| This class provides a namespace for low&hyphen;level logging utilities&period;
| xref:BloombergLP/bsls/LogSeverity.adoc[`LogSeverity`] 
| This `struct` provides a namespace for enumerating logging severity levels&period;
| xref:BloombergLP/bsls/NameOf.adoc[`NameOf`] 
| Provide a means to display the type name of its template parameter `TYPE`&period;
| xref:BloombergLP/bsls/NameOf_Base.adoc[`NameOf&lowbar;Base`] 
| This `class` provide non&hyphen;template implementation code for the `NameOf` template class&period;
| xref:BloombergLP/bsls/ObjectBuffer.adoc[`ObjectBuffer`] 
| Raw buffer sized and aligned to hold an object of type `TYPE`&period;
| xref:BloombergLP/bsls/OutputRedirector.adoc[`OutputRedirector`] 
| Redirect `stdout` or `stderr` to a temporary capture file&period;
| xref:BloombergLP/bsls/PerformanceHint.adoc[`PerformanceHint`] 
| This `struct` provides a namespace for a suite of functions that give performance hints to the compiler or hardware&period;
| xref:BloombergLP/bsls/Platform.adoc[`Platform`] 
| Namespace for platform&hyphen;trait definitions&period;
| xref:BloombergLP/bsls/PlatformUtil.adoc[`PlatformUtil`] 
| Provide a namespace for a suite of `typedef`s and pure procedures that encapsulate, platform&hyphen;dependent types and APIs&period;
| xref:BloombergLP/bsls/PointerCastUtil.adoc[`PointerCastUtil`] 
| This `struct` provides a namespace for a `static` utility function that allows casting between function and data pointers&period;
| xref:BloombergLP/bsls/PreconditionsHandler.adoc[`PreconditionsHandler`] 
| Utility for managing begin&sol;end precondition handler callbacks&period;
| xref:BloombergLP/bsls/ProtocolTest.adoc[`ProtocolTest`] 
| Mechanism that tests protocol&hyphen;class concerns via `test&ast;` methods and `operator&hyphen;&gt;`&period;
| xref:BloombergLP/bsls/ProtocolTestImp.adoc[`ProtocolTestImp`] 
| Base class for a test implementation of the `BSLS&lowbar;PROTOCOL` protocol&period;
| xref:BloombergLP/bsls/ProtocolTest_AsBigAsT.adoc[`ProtocolTest&lowbar;AsBigAsT`] 
| This auxiliary structure has a size no less than the size of (template parameter) `T`&period;
| xref:BloombergLP/bsls/ProtocolTest_Dtor.adoc[`ProtocolTest&lowbar;Dtor`] 
| Helper that verifies a protocol destructor is declared `virtual`&period;
| xref:BloombergLP/bsls/ProtocolTest_IsAbstract.adoc[`ProtocolTest&lowbar;IsAbstract`] 
| Compile&hyphen;time metafunction that reports whether `T` is an abstract type&period;
| xref:BloombergLP/bsls/ProtocolTest_MethodReturnRefType.adoc[`ProtocolTest&lowbar;MethodReturnRefType`] 
| Proxy return type convertible to any reference type&period;
| xref:BloombergLP/bsls/ProtocolTest_MethodReturnType.adoc[`ProtocolTest&lowbar;MethodReturnType`] 
| Proxy return type convertible to any non&hyphen;reference type&period;
| xref:BloombergLP/bsls/ProtocolTest_Status.adoc[`ProtocolTest&lowbar;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&period;
| xref:BloombergLP/bsls/Review.adoc[`Review`] 
| Utility that administers the process&hyphen;wide review&hyphen;failure handler&period;
| xref:BloombergLP/bsls/ReviewFailureHandlerGuard.adoc[`ReviewFailureHandlerGuard`] 
| Guard that temporarily replaces the review failure handler&period;
| xref:BloombergLP/bsls/ReviewViolation.adoc[`ReviewViolation`] 
| This class is an unconstrained _in&hyphen;core_ value&hyphen;semantic class that characterizes the details of a review failure that has occurred&period;
| xref:BloombergLP/bsls/SpinLock.adoc[`SpinLock`] 
| Statically&hyphen;initializable mutex that spins instead of blocking&period;
| xref:BloombergLP/bsls/SpinLockGuard.adoc[`SpinLockGuard`] 
| This type implements a scoped guard for `SpinLock`&period;
| xref:BloombergLP/bsls/SpinLock_MemberInitializer.adoc[`SpinLock&lowbar;MemberInitializer`] 
| Empty tag type for legacy `SpinLock` member initialization&period;
| xref:BloombergLP/bsls/StackAddressUtil.adoc[`StackAddressUtil`] 
| This struct provides a namespace for the function to obtain return addresses from the stack&period;
| xref:BloombergLP/bsls/Stopwatch.adoc[`Stopwatch`] 
| This class accumulates system, user, and wall times of the current process&period;
| xref:BloombergLP/bsls/SystemClockType.adoc[`SystemClockType`] 
| This `struct` provides a namespace for enumerating the set of system clock types&period;
| xref:BloombergLP/bsls/SystemTime.adoc[`SystemTime`] 
| This `struct` provides a namespace for system&hyphen;time&hyphen;retrieval functions&period;
| xref:BloombergLP/bsls/TimeInterval.adoc[`TimeInterval`] 
| A time interval with nanosecond resolution&period;
| xref:BloombergLP/bsls/TimeInterval_DurationTraits.adoc[`TimeInterval&lowbar;DurationTraits`] 
| Trait metafunction that determines whether the `std&colon;&colon;chrono&colon;&colon;duration&lt;REP, PERIOD&gt;` object can be converted to `bsls&colon;&colon;TimeInterval` either implicitly or explicitly&period;
| xref:BloombergLP/bsls/TimeInterval_IsDuration-032.adoc[`TimeInterval&lowbar;IsDuration`] 
| Template metafunction to determine if the specified `TYPE` is a `std&colon;&colon;chrono&colon;&colon;duration`&period;
| xref:BloombergLP/bsls/TimeInterval_RepTraits.adoc[`TimeInterval&lowbar;RepTraits`] 
| Trait metafunction that determines whether the specified `REP` type is considered a floating point type&period;
| xref:BloombergLP/bsls/TimeUtil.adoc[`TimeUtil`] 
| This `struct` provides a namespace for platform&hyphen;neutral system&hyphen;clock procedures&period;
| xref:BloombergLP/bsls/Types.adoc[`Types`] 
| Provide a namespace for a suite of `typedef`s that encapsulate platform&hyphen;dependent types&period;
| xref:BloombergLP/bsls/UnspecifiedBool-03.adoc[`UnspecifiedBool`] 
| This class provides a member, `d&lowbar;member`, whose pointer&hyphen;to&hyphen;member may be used as an &quot;unspecified boolean type&quot; for implicit conversion operators&period;
| xref:BloombergLP/bsls/Util.adoc[`Util`] 
| This `struct` provides a namespace for essential low&hyphen;level functions for implementing portable generic facilities such as the C&plus;&plus; standard library&period;
| xref:BloombergLP/bsls/Util_AssertNotLvalue-04.adoc[`Util&lowbar;AssertNotLvalue`] 
| Metafunction that provides a dummy `type` when `TYPE` is not an lvalue&period;
| xref:BloombergLP/bsls/Util_Identity.adoc[`Util&lowbar;Identity`] 
| Identity metafunction that aliases its template parameter as `type`&period;
| xref:BloombergLP/bsls/Util_RemoveReference-0b.adoc[`Util&lowbar;RemoveReference`] 
| Metafunction providing the referenced type of the specified `TYPE`&period;
|===


== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AssertImpUtil_UseContracts.adoc[`AssertImpUtil&lowbar;UseContracts`] 
| Alias selecting the contracts tag type for the current build&period;
| xref:BloombergLP/bsls/BuildTargetExc.adoc[`BuildTargetExc`] 
| Tag type indicating that the build target has exceptions enabled&period;
|===


== Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/debugprint-0d3.adoc[`debugprint`] 
| `debugprint` overloads
| xref:BloombergLP/bsls/nameOfType.adoc[`nameOfType`] 
| Return the name of the type of the object passed to this function&period;
| xref:BloombergLP/bsls/operator_h.adoc[`operator&quot;&quot;&lowbar;h`] 
| Convert the specified `hours` literal to a `TimeInterval`&period;
| xref:BloombergLP/bsls/operator_min.adoc[`operator&quot;&quot;&lowbar;min`] 
| Convert the specified `minutes` literal to a `TimeInterval`&period;
| xref:BloombergLP/bsls/operator_ms.adoc[`operator&quot;&quot;&lowbar;ms`] 
| Convert the specified `milliseconds` literal to a `TimeInterval`&period;
| xref:BloombergLP/bsls/operator_ns.adoc[`operator&quot;&quot;&lowbar;ns`] 
| Convert the specified `nanoseconds` literal to a `TimeInterval`&period;
| xref:BloombergLP/bsls/operator_s.adoc[`operator&quot;&quot;&lowbar;s`] 
| Convert the specified `seconds` literal to a `TimeInterval`&period;
| xref:BloombergLP/bsls/operator_us.adoc[`operator&quot;&quot;&lowbar;us`] 
| Convert the specified `microseconds` literal to a `TimeInterval`&period;
| xref:BloombergLP/bsls/operator_plus-08.adoc[`operator&plus;`] 
| Addition operators
| xref:BloombergLP/bsls/operator_minus-005.adoc[`operator&hyphen;`] 
| Unary minus operators
| xref:BloombergLP/bsls/operator_lshift.adoc[`operator&lt;&lt;`] 
| Write the specified `timeInterval` to the specified output `stream`&period;
| xref:BloombergLP/bsls/operator_eq-07.adoc[`operator&equals;&equals;`] 
| Equality operators
| xref:BloombergLP/bsls/operator_not_eq-0a.adoc[`operator!&equals;`] 
| Inequality operators
| xref:BloombergLP/bsls/operator_lt-05.adoc[`operator&lt;`] 
| Less&hyphen;than operators
| xref:BloombergLP/bsls/operator_le-09.adoc[`operator&lt;&equals;`] 
| Same as the preceding overload&period;
| xref:BloombergLP/bsls/operator_gt-08.adoc[`operator&gt;`] 
| Same as the preceding overload&period;
| xref:BloombergLP/bsls/operator_ge-041.adoc[`operator&gt;&equals;`] 
| Same as the preceding overload&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
