bslalg.txt

@PURPOSE: Provide algorithms and traits used by the BDE STL implementation.

@MNEMONIC: Basic Standard Library ALgorithms (bslalg)

@DESCRIPTION: This package provides facilities for implementing higher-level
 components (in particular, the standard library containers).  The facilities
 fall into three broad classes:

: o Utilities that provide efficient implementations of primitive operations on
:   generic data types (e.g., construction, copy-construction), optimized based
:   on the exposed traits of the type (e.g., bitwise-copyable, uses-allocator).
:
: o Primitive data types and fundamental algorithms that form the basis of
:   standard library containers (e.g., linked lists, hash tables, Red/Black
:   trees and deques).
:
: o Legacy traits types used to tag user-defined (client) types according to
:   properties such as whether they use a memory allocator to supply memory
:   resources, have a trivial default constructor, are POD types, etc.  These
:   traits types have been superseded by the traits in the 'bslmf' package, and
:   are implemented in terms of 'bslmf'.
:

/Hierarchical Synopsis
/---------------------
 The 'bslalg' package currently has 43 components having 9 levels of physical
 dependency.  The list below shows the hierarchical ordering of the components.
 The order of components within each level is not architecturally significant,
 just alphabetical.
..
  9. bslalg_dequeprimitives
     bslalg_rbtreeutil

  8. bslalg_arrayprimitives

  7. bslalg_autoarraymovedestructor
     bslalg_hashtableimputil

  6. bslalg_autoarraydestructor
     bslalg_hashtableanchor

  5. bslalg_arraydestructionprimitives
     bslalg_bidirectionalnode
     bslalg_constructorproxy
     bslalg_dequeiterator

  4. bslalg_hashtablebucket
     bslalg_rangecompare
     bslalg_scalarprimitives
     bslalg_selecttrait                                  !DEPRECATED!
     bslalg_typetraits                                   !DEPRECATED!

  3. bslalg_autoscalardestructor
     bslalg_bidirectionallinklistutil
     bslalg_nothrowmovableutil
     bslalg_rbtreeanchor
     bslalg_typetraitbitwisecopyable                     !DEPRECATED!
     bslalg_typetraitbitwiseequalitycomparable           !DEPRECATED!
     bslalg_typetraitbitwisemoveable                     !DEPRECATED!
     bslalg_typetraithaspointersemantics                 !DEPRECATED!
     bslalg_typetraithasstliterators                     !DEPRECATED!
     bslalg_typetraithastrivialdefaultconstructor        !DEPRECATED!
     bslalg_typetraitpair                                !DEPRECATED!
     bslalg_typetraitusesbslmaallocator                  !DEPRECATED!

  2. bslalg_bidirectionallink
     bslalg_containerbase
     bslalg_dequeimputil
     bslalg_functoradapter
     bslalg_hashutil
     bslalg_hasstliterators
     bslalg_hastrait                                     !DEPRECATED!
     bslalg_nothrowmovablewrapper
     bslalg_numericformatterutil
     bslalg_rbtreenode
     bslalg_scalardestructionprimitives                  !DEPRECATED!
     bslalg_swaputil
     bslalg_typetraitnil                                 !DEPRECATED!

  1. bslalg_arrayprimitives_cpp03                                     !PRIVATE!
     bslalg_dequeprimitives_cpp03                                     !PRIVATE!
..

/Component Synopsis
/------------------
: 'bslalg_arraydestructionprimitives':
:      Provide primitive algorithms that destroy arrays.
:
: 'bslalg_arrayprimitives':
:      Provide primitive algorithms that operate on arrays.
:
: 'bslalg_arrayprimitives_cpp03':                                     !PRIVATE!
:      Provide C++03 implementation for bslalg_arrayprimitives.h
:
: 'bslalg_autoarraydestructor':
:      Provide a proctor for destroying arrays.
:
: 'bslalg_autoarraymovedestructor':
:      Provide a proctor for destroying arrays.
:
: 'bslalg_autoscalardestructor':
:      Provide a proctor for destroying an object.
:
: 'bslalg_bidirectionallink':
:      Provide a basic link type for building doubly-linked lists.
:
: 'bslalg_bidirectionallinklistutil':
:      Provide utilities to maintain bidirectional list data structures.
:
: 'bslalg_bidirectionalnode':
:      Provide a node holding a value in a doubly-linked list.
:
: 'bslalg_constructorproxy':
:      Provide a proxy for constructing and destroying objects.
:
: 'bslalg_containerbase':
:      Provide a wrapper for STL allocators, respecting 'bslma' semantics.
:
: 'bslalg_dequeimputil':
:      Provide basic parameters and primitive data structures for deques.
:
: 'bslalg_dequeiterator':
:      Provide a primitive iterator over deque data structures.
:
: 'bslalg_dequeprimitives':
:      Provide primitive algorithms that operate on deques.
:
: 'bslalg_dequeprimitives_cpp03':                                     !PRIVATE!
:      Provide C++03 implementation for bslalg_dequeprimitives.h
:
: 'bslalg_functoradapter':
:      Provide an utility that adapts callable objects to functors.
:
: 'bslalg_hashtableanchor':
:      Provide a type holding the constituent parts of a hash table.
:
: 'bslalg_hashtablebucket':
:      Provide a bucket representation for hash table data structures.
:
: 'bslalg_hashtableimputil':
:      Provide algorithms for implementing a hash table.
:
: 'bslalg_hashutil':
:      Provide a utility of hash functions.
:
: 'bslalg_hasstliterators':
:      Provide a tag type used to detect STL-like iterators traits.
:
: 'bslalg_hastrait':                                     !DEPRECATED!
:      Provide a meta-function to detect if a type has a given trait.
:
: 'bslalg_nothrowmovableutil':
:      Provide a wrapper that asserts a noexcept move constructor.
:
: 'bslalg_nothrowmovablewrapper':
:      Provide a wrapper that asserts a noexcept move constructor.
:
: 'bslalg_numericformatterutil':
:      Provide a utility for formatting numbers into strings.
:
: 'bslalg_rangecompare':
:      Provide algorithms to compare iterator-ranges of elements.
:
: 'bslalg_rbtreeanchor':
:      Encapsulate root, first, and last nodes of a tree with a count.
:
: 'bslalg_rbtreenode':
:      Provide a base class for a red-black binary tree node.
:
: 'bslalg_rbtreeutil':
:      Provide a suite of primitive algorithms on red-black trees.
:
: 'bslalg_scalardestructionprimitives':                  !DEPRECATED!
:      Provide primitive algorithms that destroy scalars.
:
: 'bslalg_scalarprimitives':
:      Provide primitive algorithms that operate on single elements.
:
: 'bslalg_selecttrait':                                  !DEPRECATED!
:      Provide a meta-function to select a suitable trait on a type.
:
: 'bslalg_swaputil':
:      Provide a simple to use 'swap' algorithm.
:
: 'bslalg_typetraitbitwisecopyable':                     !DEPRECATED!
:      Provide a trait to mark classes as bit-wise copyable.
:
: 'bslalg_typetraitbitwiseequalitycomparable':           !DEPRECATED!
:      Provide a trait to mark classes as bit-wise eq.-comparable.
:
: 'bslalg_typetraitbitwisemoveable':                     !DEPRECATED!
:      Provide a trait to mark classes as bit-wise moveable.
:
: 'bslalg_typetraithaspointersemantics':                 !DEPRECATED!
:      Provide a trait to mark classes as having pointer semantics.
:
: 'bslalg_typetraithasstliterators':                     !DEPRECATED!
:      Provide a trait to mark classes as having STL-like iterators.
:
: 'bslalg_typetraithastrivialdefaultconstructor':        !DEPRECATED!
:      Provide a trait to mark classes as having a trivial default ctor.
:
: 'bslalg_typetraitnil':                                 !DEPRECATED!
:      Provide a trait to mark classes as having no other traits.
:
: 'bslalg_typetraitpair':                                !DEPRECATED!
:      Provide a trait to mark classes as similar to 'std::pair'.
:
: 'bslalg_typetraits':                                   !DEPRECATED!
:      Provide compile-time traits that can be associated with types.
:
: 'bslalg_typetraitusesbslmaallocator':                  !DEPRECATED!
:      Provide a trait to mark types that use 'bslma' allocators.