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