DINKUMWARE Ltd -- Leaders in Standard Library implementation. DINKUMWARE Ltd - www.dinkumware.com, Concord MA USA
Home Order On-Line Dinkum Compleat Reference Dinkum Reports Dinkum C++ tr1 Dinkum C++ Dinkum C99 Dinkum Supplemental Dinkum Exam
 

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.