LDK
0.3
Unless otherwise noted, this software is Copyright (C) 2003-2006 Lorien Dunn.
Contact: loriendunn AT users DOT sourceforge DOT net
Sourceforge project page http://sourceforge.net/projects/ldk
Notes:
- See Install.txt for build instructions
- LDK must be initialised with LDK::initialise before use.
- This documentation is a work in progress and is uncovering some doxygen bugs. In particular the Timing module isn't showing up. Please be patient.
A 64-bit clean (hopefully!), portable, object oriented library of tightly integrated low-level classes, templates and functions targetting realtime multithreaded applications such as midi sequencers and audio synthesisers. Likely to be useful for next-gen game and simulation engines. It has been designed to be the base of a real-time audio synthesis scripting language.
Features include:
- Thread local storage.
- A template Atomic type
- Global and thread-local generic Singleton classes.
- A very fast, flexible, low latency (soft-RTOS) and quite reasonably resource conservative thread local memory pool based generic allocation system which takes advantage of the compilers' innate knowledge of the size of types to shift some of the allocation load to compile time.
- Custom STL memory allocator templates that take partial (run-time only) advantage of the allocation system.
- Debug build memory leak tracking that reports filename and line number of each leaked allocation.
- Several reference counted smart pointers (intrusive and non-intrusive).
- Multiple accurate, reapeatable and pauseable timers with variable tick times.
- Thread local scheduling and co-operative multitasking.
- Thread, Mutex and Lock classes.
- A lockless queue class for low latency inter-thread communication.
- An SSE 4 float vector class.
- An arbitary size numeric vector using SSE instructions and expression templates.
- Object oriented filesystem virtualisation able to read from zip files and numerous game formats (via an enhanced wrapping of physfs). Also supports transparent on-read translation of windows text files on unix systems and vice/versa. Provides per-thread re-directable stdio.
- A templated Hash table (with a partial specialisation for const char*).
- An arbitary size single dimension numeric vector class using SSE instructions and expression templates.
- XML reading, parsing and writing (via a hacked TinyXml).
- Template based XML object serialisation (via a hacked TinyBind).
- Exception based error reporting.
- Liberal use of the assert macro throughout.
- Makes use of an advanced, easily extensable build system (scons, build scripts are in python) with short, clearly separated build scripts for each platform.
- The beginnings of a regression test suite. The included tests indicate the core of the library is highly functional. Uses cxxtestgen and python to largely automate the adding of new tests. Please show me my code is broken with new tests!
Planned future features include UTF-8 (unicode) and plugin support.
This code has been known to compile and work with:
- GNU G++ 4.2 on x86 GNU-Linux
- GNU G++ 3.3 on x86 GNU-Linux.
- GNU G++ 3.4 on x86-64 GNU-Linux.
- GNU G++ 4.1 on x86-64 GNU-Linux.
- Intel C++ 8.0 on x86 GNU-Linux and win32.
- MinGW G++ 3.4
- MSVC.net 2003
- MSVC.net 2005
Generated on Fri Aug 17 18:32:26 2007 for LDK by
1.5.1