Supplemental Libraries
The Dinkum Compleat Libraries include three libraries that are not
required by the C Standard or the C++ Standard. Rather, they are
useful additions that were
contemplated by these standards, as the
logical next layer of functionality above the required libraries.
Dinkumware has licensed these supplemental libraries for several
years as the Dinkum CoreX Library, so all three have been field
proven. The libraries are:
- Code Conversions. The Standard C++ library calls for each I/O
stream to convert between internal and external character encodings
with a "code conversion facet", typified by
template class codecvt. In principle, you can convert between
practically any multibyte encoding in a file and practically any
wide-character encoding within a program; but in practice an
implementation is not required to do much anything useful in this
area. The Dinkum Codecvt Library fills this need with a collection
of dozens of codecvt facets that perform all the popular conversions
you can imagine between various forms of Unicode, as well as the
earlier generation of large character sets such as Shift-JIS, JIS,
and EUC. You can even convert between strings of various encodings
using the same codecvt facets, a capability undreamed of in the
Standard C++ library. In short, if you need to deal with Unicode
or other large character sets, the Dinkum Codecvt Library is
indispensable.
- Allocators. The Standard C++ library calls for each STL container
to allocate storage through a template parameter called an "allocator",
typified by template class allocator. This default allocator typically
buys and sells storage on demand, which can cause performance problems
for large containers or ones that are continually changed. The Dinkum
Allocator Library supplies a family of allocators that enforce a
variety of storage management strategies, both for single-threaded
and multi-threaded environments. For node-based containers (such as
lists, maps, sets, and hash tables) you can realize substantial
performance improvements by selecting appropriate allocators for
each container. In short, if you need to deal with large STL
containers, the Dinkum Allocator Library is indispensable.
- Threads. The Standard C and C++ libraries do not discuss
multi-threaded execution, but every practical library supports
programs with multiple threads. The Posix threading model has long
been a de facto standard for controlling threads from a C program.
More recently, Boost threads has caught on as a popular way to
control threads from C++. The Dinkum Threads Library provides access
to both of these interfaces in a coherent package, which is also
well integrated with the multithreading machinery used "under
the hood" for many years by the Dinkum C99 and C++ Libraries.
In short, if you need to write a multithreaded program that's
not tied to a given platform, the Dinkum Threads Library is
indispensable.
Want more technical details? See our on-line Dinkum Compleat Reference.