Feature Index¶
Allocators¶
BDE objects that allocate memory are designed to use a user-defined memory allocating mechanism (i.e., an allocator) that is specified on object construction. Note that, unlike allocators specified as class-template parameters (à la policy-based design), specifying an allocator this way does not define a new type. Different objects of the same type can use different allocator mechanisms, and still fully interact with each other.
Protocol, allocators, guards, and proctors: bslma
Concrete allocators and pools: bdlma
Allocator that records stack trace on allocations: balst_stacktracetestallocator.
Date and Time¶
BDE Provides types for representing dates, times, and calendars, as well as common facilities for operating on these types (e.g., obtaining the current system time, converting time values between time zones).
Calendars¶
A range of dates with weekly designated non-business days (i.e., weekend days) and other designated special days (i.e., holidays).
Calendar protocols and types: bdlt.
Current Date and Time¶
Current Date/time: bdlt_currenttime.
Current Time Zone Offset: bdlt_localtimeoffset.
Current Epoch Time: bsls_systemtime.
Date and Time¶
Vocabulary types and utilities: bdlt and baltzo_localdatetime.
Time Zones¶
Vocabulary type: baltzo_localdatetime.
Olson time zones: baltzo.
Mapping Olson time zones with Windows time zones: baltzo_windowstimezoneutil.
Timing¶
Process user/system/wall times: bsls_stopwatch.
Manage actions at specified times: bdlmt_eventscheduler and bdlmt_timereventscheduler.
Conversions¶
Convert date/time values between BDE vocabulary types and ISO8601-formatted strings: bdlt_iso8601util and bdlt_iso8601utilconfiguration.
Decimal Floating-Point¶
Libraries specialized for accurate base-10 arithmetic (IEEE-754 2008): bdldfp.
Defensive Programming¶
Redundant code providing optional run-time checks to validate preconditions (and invariants):
Macros: bsls_assert and bsls_review.
Glossary of BDE Terminology¶
Component: bsldoc_glossary.
Messaging¶
Serialization of values in different formats:
JSON: baljsn.
XML: balxml.
BER: balber_berdecoder and balber_berencoder.
BDE externalization format: bdex.
Miscellaneous¶
Bit manipulation: bdlb_bitutil.
Hash functions: bdlb_hashutil.
Template for nullable types: bdlb_nullablevalue.
Discriminated
union
-like type: bdlb_variant.
OS Operations¶
Platform-independent operations on files/pathnames/memory/processes/pipes: bdls.
Messages over named pipes: balb_pipecontrolchannel.
Parsing¶
Perl regular expressions: bdlpcre_regex.
String tokenisation: bdlb_tokenizer.
Numeric parsing: bdlb_numericparseutil.
Smart Pointers¶
Mechanisms for managing resource recovery:
Pointer with user-supplied deleter: bslma_managedptr.
Thread-safe, reference-counted pointers: bslstl_sharedptr.
Test Apparatus¶
Standard test driver:
ASSERT
,ASSERTV
, and print macros: bslim_testutil.Track memory usage: bslma_testallocator.
Macros for “negative” testing: bsls_asserttest.
Macros for testing protocols: bsls_protocoltest.
Macros for template testing: bsltf_templatetestfacility.
Threads¶
Concurrent programming:
Thread Primitives: Atomic integers: bsls_atomic.
Thread Primitives: Mutexes, semaphores, read-write locks, and thread-management: bslmt.
Thread-Safe Containers: bdlcc.
Thread Pools and Event Schedulers: bdlmt.