/**	@mainpage	The dktools project.

The dktools project consists of a set of libraries and some applications
using these libraries. The doxygen documentation only covers the libraries,
the programs have a separate documentation.

The libraries address the following problem fields:

- Internationalization:<br>
  Some computer systems use 8 bit characters and UTF-8 encoding for
  internationalized programs. Other systems use 16 bit characters
  and UTF-16 encoding.<br>
  The dkChar data type is defined to char for Linux/UNIX systems and
  to wchar_t on Windows systems.<br>
  Functions for conversion between different character sizes and
  encondings are available.
- Resource file and configuration file search:<br>
  Functions to search for resource file depending on
  application name, application group name, users language and users region.
- Logging:<br>
  Write error messages to log file, stderr. Keep log file on errors,
  delete it after successful operation.<br>
  The functions below use the log mechanism.
- Sorted storage and searching:<br>
  Save pointers to arbitrary objects in a storage, just provide an
  evaluation or comparison function for sorting. Use iterators to traverse
  the storage.
- Networking:<br>
  Use BSD sockets or Winsock sockets for network access with IPv4 and IPv6.
  An IPv4-only module for backward compatibility is available too.
- Mathematical operations with error checking:<br>
  Operations on different integer types, output to string, output to file,
  conversion from double to integer.
- Bit fields, bit matrices:<br>
  Bit matrices can be used to find indirect predecessor-successor
  relationships.
- Streams:<br>
  Write data to or read data from generic streams using a unified API.
  Implementations are available for files, gzip- and bzip2-compressed files.
- Encoding:<br>
  Encode binary data using ASCII85 or reverse ASCII85 encoding and
  decode data. Dealing with ANSI encoding.
- String functions:<br>
  String functions for 8, 16 and 32 bit character strings.
- Key/value pairs:<br>
  Split strings into key/value pairs.
- System functions:<br>
  Enable/disable keyboard echo. Traverse directories (list all files and
  subdirectories). Signal handling. Number of cores, number of threads.
- Output filtering:<br>
  Write compressed chunks to output file, needed i.e. to create
  PDF files.
- Text conversion:<br>
  Conversion to HTML or LaTeX.
- Graphics operations:<br>
  Find bounding box for graphics elements. Calculations with X-splines
  and Bezier splines. Coordinates transformation.<br>
  Read and process fig files.<br>
  Deal with bitmap graphics files (read, analyze, resample bits per
  component).<br>
  Save bitmap graphics as PS/EPS/PDF.
- Checksums:<br>
  Create checksums for data chunks, encode them.
- Random:<br>
  Use different PRNGs, use strongest available one.
- Simple database APIs:<br>
  Access NDBM, Berkeley DB and in-memory databases.
- GUI programming using wxWidgets:<br>
  Enhanced base classes for frames and dialogues, helper classes for
  file search, internationalization and logging.
  Help controller to open a *.chm or *.htb file...

Application programmers who want to use the libraries should read
the doxygen-generated documentation for the *.h files, everything exported
by the modules is documented here.

The documentation for the *.c files also documents the internals.

The library modules have a leading "dk3" in the file name.

  - The dk3c library (multiple purpose library modules)
    - dk3app.h - Application support
    - dk3srch.h - Search results for application
    - dk3opt.h - Command line options
    - dk3sto.h - Sorted storage and searching
    - dk3strm.h - Stream I/O
    - dk3enc.h - Encoding changes
    - dk3echo.h - Keyboard echo
    - dk3bf.h - Bit fields and bit matrices
    - dk3bits.h - Bit selections
    - dk3uc2l.h - Conversion to LaTeX
    - dk3dir.h - Traversing directories
    - dk3bb.h - Bounding boxes
    - dk3bezcu.h - Bezier splines
    - dk3xsp.h - X-Splines
    - dk3signl.h - Signal handling
    - dk3ct.h - Coordinates transformation
    - dk3ma.h - Math. operations with error checking. The header file
      defines functions for serveral object modules:
      - dk3mas - Operations on short
      - dk3maus - Operations on unsigned short
      - dk3mai - Operations on int
      - dk3maui - Operations on unsigned
      - dk3mal - Operations on long, long long, and intmax_t
      - dk3maul - Operations on unsigned long, unsigned long long, and
        uintmax_t
      - dk3mastr - Convert integer types to and from string
      - dk3mad - Operations on double
      - dk3madsc - Convert double to short and unsigned short
      - dk3madic - Convert double to int and unsigned
      - dk3madlc - Convert double to long, unsigned long, long long,
        unsigned long long, intmax_t, and uintmax_t
      - dk3madfo - File output for double
      - dk3madso - String output for double
      - dk3madsi - String input for double
    - dk3cores.h - Find number of processor cores
    - dk3ufi.h - Unique file identifier
    - dk3sf.h - System functions
    - dk3str.h - String functions
    - dk3strkv.h - Break text line into array of key/value pairs
    - dk3kv.h - Key/value pairs
    - dk3se.h - Write strings in ANSI encoding
    - dk3mem.h - Dynamic memory
    - dk3wreg.h - Functions for dealing with Windows registry
      (on Windows systems).
    - dk3inst.h - Installation directories
    - dk3trace.h - Trace support (when producing binaries for debugging)
    The dk3md module is no longer linked into the library.
    Sizes and thus maximum differs between systems, I did not (yet) find
    a portable way to estimate the maximum long double value from
    within the configure script.

  - The dk3of library (Output filtering modules for compression)
    - dk3of.h - Output filters
    - dk3strmb.c module - Output filters using libbz2
    - dk3strmg.c module - Output filters using the gzip library

  - The dk3csrnd library (Checksumming and random data generation using the OpenSSL library)
    - dk3chks.h - Data checksumming
    - dk3appr.c module - Random data generation

  - The dk3fig library (Handling Fig files)
    - dk3figbb.h - Find bounding box for Fig file
    - dk3figpr.h - Prepare Fig file after reading it
    - dk3figah.h - Generate arrowheads for Fig file
    - dk3figrd.h - Read Fig file
    - dk3figto.h - Tool functions for dealing with Fig files
    - dk3fig.h - Data types for dealing with Fig graphics
    - dk3font.h - Dealing with PS fonts

  - The dk3bif library (Reading bitmap image files)
    - dk3bif.h - Bitmap image files
    - dk3bifa.h - Bitmap image file analysis
    - dk3pixre.h - Pixel resampling (change bits per component)

  - The dk3bmpp library (Conversion from bitmaps to PS/PDF).
    - dk3bm.h - Bitmap to EPS/PDF conversion
    - dk3bmeo.h - Bitmap to EPS/PDF conversion options
    - dk3bmeps.h - Bitmap to EPS/PDF conversion strings
    - dk3bmj.h - Bitmap to EPS/PDF conversion job
    - dk3pdf.h - Create PDF file (only non-text graphics elements)
    - dk3paper.h - Paper sizes

  - The dk3dbi library (interface to multiple databases)
    - dk3dbi.h - Generic interface to NDBM, Berkeley DB and in-memory DB

  - The dk3net library (Client and server side networking)
    - dk3sock.h - Access to BSD sockets and Winsock functions
    For older systems running IPv4 only, there is a dk3sock4 module.

  - The dk3wx library (GUI modules using the wxWidgets libraries)
    - DkWxFrame - Base class for application main windows (frames).
    - DkWxDialog - Base class for dialogs.
    - DkWxAppHelper - Application helper, used by both classes above.
    - DkWxHelpController - Help controller for both *.chm and *.htb help files.
    - DkWxProgressDialog - Progress dialog to show background thread state.
    - DkWxCommunicator - Communication between progress dialog and background thread.
    - DkWxProcessingController - Avoid multiple instances of timer handler at same time.
    - DkWxProcessingIdleController - Avoid multiple instances of idle handler at same time.
    - DkWxBufferedControl - Base class for triple-buffered controls.
    - DkWxColorView - Control to show a color setting.
    - dk3wxs.h - Operations and conversions with wxChar strings.

*/

