BDE 4.14.0 Production release
Loading...
Searching...
No Matches
bslalg.h
Go to the documentation of this file.
1/// @file bslalg.h
2///
3///
4/// @defgroup bslalg Package bslalg
5/// @brief Basic Standard Library ALgorithms (bslalg)
6/// @addtogroup bsl
7/// @{
8/// @addtogroup bslalg
9/// [bslalg]: group__bslalg.html
10/// @{
11///
12/// # Purpose {#bslalg-purpose}
13/// Provide algorithms and traits used by the BDE STL implementation.
14///
15/// # Mnemonic {#bslalg-mnemonic}
16/// Basic Standard Library ALgorithms (bslalg)
17///
18/// # Description {#bslalg-description}
19/// This package provides facilities for implementing higher-level
20/// components (in particular, the standard library containers). The facilities
21/// fall into three broad classes:
22///
23/// * Utilities that provide efficient implementations of primitive operations on
24/// generic data types (e.g., construction, copy-construction), optimized based
25/// on the exposed traits of the type (e.g., bitwise-copyable, uses-allocator).
26///
27/// * Primitive data types and fundamental algorithms that form the basis of
28/// standard library containers (e.g., linked lists, hash tables, Red/Black
29/// trees and deques).
30///
31/// * Legacy traits types used to tag user-defined (client) types according to
32/// properties such as whether they use a memory allocator to supply memory
33/// resources, have a trivial default constructor, are POD types, etc. These
34/// traits types have been superseded by the traits in the 'bslmf' package, and
35/// are implemented in terms of 'bslmf'.
36///
37///
38/// ## Hierarchical Synopsis
39///
40/// The 'bslalg' package currently has 44 components having 7 levels of physical
41/// dependency. The list below shows the hierarchical ordering of the components.
42/// The order of components within each level is not architecturally significant,
43/// just alphabetical.
44/// @code
45/// 7. bslalg_dequeprimitives
46/// bslalg_hashtableimputil
47/// bslalg_rbtreeutil
48///
49/// 6. bslalg_arrayprimitives
50/// bslalg_hashtableanchor
51///
52/// 5. bslalg_bidirectionalnode
53/// bslalg_constructorproxy
54/// bslalg_dequeiterator
55///
56/// 4. bslalg_autoarraymovedestructor
57/// bslalg_hashtablebucket
58/// bslalg_scalarprimitives
59/// bslalg_selecttrait !DEPRECATED!
60/// bslalg_typetraits !DEPRECATED!
61///
62/// 3. bslalg_autoarraydestructor
63/// bslalg_autoscalardestructor
64/// bslalg_bidirectionallinklistutil
65/// bslalg_nothrowmovableutil
66/// bslalg_rbtreeanchor
67/// bslalg_typetraitbitwisecopyable !DEPRECATED!
68/// bslalg_typetraitbitwiseequalitycomparable !DEPRECATED!
69/// bslalg_typetraitbitwisemoveable !DEPRECATED!
70/// bslalg_typetraithaspointersemantics !DEPRECATED!
71/// bslalg_typetraithasstliterators !DEPRECATED!
72/// bslalg_typetraithastrivialdefaultconstructor !DEPRECATED!
73/// bslalg_typetraitpair !DEPRECATED!
74/// bslalg_typetraitusesbslmaallocator !DEPRECATED!
75///
76/// 2. bslalg_arraydestructionprimitives
77/// bslalg_bidirectionallink
78/// bslalg_containerbase
79/// bslalg_dequeimputil
80/// bslalg_functoradapter
81/// bslalg_hashutil
82/// bslalg_hasstliterators
83/// bslalg_hastrait !DEPRECATED!
84/// bslalg_nothrowmovablewrapper
85/// bslalg_numericformatterutil
86/// bslalg_rangecompare
87/// bslalg_rbtreenode
88/// bslalg_scalardestructionprimitives !DEPRECATED!
89/// bslalg_swaputil
90/// bslalg_synththreewayutil
91/// bslalg_typetraitnil !DEPRECATED!
92///
93/// 1. bslalg_arrayprimitives_cpp03 !PRIVATE!
94/// bslalg_dequeprimitives_cpp03 !PRIVATE!
95/// @endcode
96///
97/// ## Component Synopsis
98///
99/// @ref bslalg_arraydestructionprimitives :
100/// Provide primitive algorithms that destroy arrays.
101///
102/// @ref bslalg_arrayprimitives :
103/// Provide primitive algorithms that operate on arrays.
104///
105/// 'bslalg_arrayprimitives_cpp03': !PRIVATE!
106/// Provide C++03 implementation for bslalg_arrayprimitives.h
107///
108/// @ref bslalg_autoarraydestructor :
109/// Provide a proctor for destroying arrays.
110///
111/// @ref bslalg_autoarraymovedestructor :
112/// Provide a proctor for destroying arrays.
113///
114/// @ref bslalg_autoscalardestructor :
115/// Provide a proctor for destroying an object.
116///
117/// @ref bslalg_bidirectionallink :
118/// Provide a basic link type for building doubly-linked lists.
119///
120/// @ref bslalg_bidirectionallinklistutil :
121/// Provide utilities to maintain bidirectional list data structures.
122///
123/// @ref bslalg_bidirectionalnode :
124/// Provide a node holding a value in a doubly-linked list.
125///
126/// @ref bslalg_constructorproxy :
127/// Provide a proxy for constructing and destroying objects.
128///
129/// @ref bslalg_containerbase :
130/// Provide a wrapper for STL allocators, for container use.
131///
132/// @ref bslalg_dequeimputil :
133/// Provide basic parameters and primitive data structures for deques.
134///
135/// @ref bslalg_dequeiterator :
136/// Provide a primitive iterator over deque data structures.
137///
138/// @ref bslalg_dequeprimitives :
139/// Provide primitive algorithms that operate on deques.
140///
141/// 'bslalg_dequeprimitives_cpp03': !PRIVATE!
142/// Provide C++03 implementation for bslalg_dequeprimitives.h
143///
144/// @ref bslalg_functoradapter :
145/// Provide an utility that adapts callable objects to functors.
146///
147/// @ref bslalg_hashtableanchor :
148/// Provide a type holding the constituent parts of a hash table.
149///
150/// @ref bslalg_hashtablebucket :
151/// Provide a bucket representation for hash table data structures.
152///
153/// @ref bslalg_hashtableimputil :
154/// Provide algorithms for implementing a hash table.
155///
156/// @ref bslalg_hashutil :
157/// Provide a utility of hash functions.
158///
159/// @ref bslalg_hasstliterators :
160/// Provide a tag type used to detect STL-like iterators traits.
161///
162/// @ref bslalg_hastrait : !DEPRECATED!
163/// Provide a meta-function to detect if a type has a given trait.
164///
165/// @ref bslalg_nothrowmovableutil :
166/// Provide a wrapper that asserts a noexcept move constructor.
167///
168/// @ref bslalg_nothrowmovablewrapper :
169/// Provide a wrapper that asserts a noexcept move constructor.
170///
171/// @ref bslalg_numericformatterutil :
172/// Provide a utility for formatting numbers into strings.
173///
174/// @ref bslalg_rangecompare :
175/// Provide algorithms to compare iterator-ranges of elements.
176///
177/// @ref bslalg_rbtreeanchor :
178/// Encapsulate root, first, and last nodes of a tree with a count.
179///
180/// @ref bslalg_rbtreenode :
181/// Provide a base class for a red-black binary tree node.
182///
183/// @ref bslalg_rbtreeutil :
184/// Provide a suite of primitive algorithms on red-black trees.
185///
186/// @ref bslalg_scalardestructionprimitives : !DEPRECATED!
187/// Provide primitive algorithms that destroy scalars.
188///
189/// @ref bslalg_scalarprimitives :
190/// Provide primitive algorithms that operate on single elements.
191///
192/// @ref bslalg_selecttrait : !DEPRECATED!
193/// Provide a meta-function to select a suitable trait on a type.
194///
195/// @ref bslalg_swaputil :
196/// Provide a simple to use `swap` algorithm.
197///
198/// @ref bslalg_synththreewayutil :
199/// Provide implementation utilities for `operator<=>`.
200///
201/// @ref bslalg_typetraitbitwisecopyable : !DEPRECATED!
202/// Provide a trait to mark classes as bit-wise copyable.
203///
204/// @ref bslalg_typetraitbitwiseequalitycomparable : !DEPRECATED!
205/// Provide a trait to mark classes as bit-wise eq.-comparable.
206///
207/// @ref bslalg_typetraitbitwisemoveable : !DEPRECATED!
208/// Provide a trait to mark classes as bit-wise moveable.
209///
210/// @ref bslalg_typetraithaspointersemantics : !DEPRECATED!
211/// Provide a trait to mark classes as having pointer semantics.
212///
213/// @ref bslalg_typetraithasstliterators : !DEPRECATED!
214/// Provide a trait to mark classes as having STL-like iterators.
215///
216/// @ref bslalg_typetraithastrivialdefaultconstructor : !DEPRECATED!
217/// Provide a trait to mark classes as having a trivial default ctor.
218///
219/// @ref bslalg_typetraitnil : !DEPRECATED!
220/// Provide a trait to mark classes as having no other traits.
221///
222/// @ref bslalg_typetraitpair : !DEPRECATED!
223/// Provide a trait to mark classes as similar to `std::pair`.
224///
225/// @ref bslalg_typetraits : !DEPRECATED!
226/// Provide compile-time traits that can be associated with types.
227///
228/// @ref bslalg_typetraitusesbslmaallocator : !DEPRECATED!
229/// Provide a trait to mark types that use `bslma` allocators.
230///
231/// @}
232/** @} */