/** @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.
*/