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