TODO items (listed by general priority):
========================================

-Linux symbol support

-Win32 use dbghelp for symbol support

-Win64 support

-In-kernel suppor-In-kernel support

-prevent inclusion of duma_sem.h from outside duma headers

-memccpy(), bcopy() + test for all overloaded string functions

-Interface to cause verification walk

-add additional target/compiler switches in GNUmakefile to build with
 1- native Solaris compiler / linker
 2- Microsoft compiler cl / link

-integrate modifications of
http://tutorial.gsse.at/dynamicmemory/
http://tutorial.gsse.at/uploads/media/duma_iue.tgz

-enhance detection of DUMA_MIN_ALIGNMENT in createconf
  use defines specifying the target architecture
  use compiler attributes which specify the necessary alignment

-add autoconf/automake build process

-use libtool to build shared libraries in Makefile
 depends on autoconf/automake

-use configure to detect if f.e. pthread.h is installed and in search path
 check if pthread available before using it in Makefile
 depends on autoconf/automake

-add feature to enable floating point exceptions
 by default C programs work with quiet NANs or similar values after an error
 this feature shall allow detecting of floating point division by zero, overflow, ..

-test duma on several freely available/downloadable compilers:
  1- OpenWatcom C/C++ compiler from http://www.openwatcom.org/
  2- Digital MARS C/C++ compiler from http://www.digitalmars.com/
  3- Intel C++ compiler from http://www.intel.com/cd/software/products
                                /asmo-na/eng/compilers/clin/219856.htm
  4- Borland C++ Builder from
     http://www.borland.com/products/downloads/download_cbuilder.html
  5- Macintosh Programmer's Workshop from
     http://developer.apple.com/tools/mpw-tools/
  6- TenDRA C/C++ compiler from http://www.tendra.org/
     or http://www.cse.unsw.edu.au/~patrykz/TenDRA/

-test cmake, dmake, pmake, smake
 maybe no more necessary when build is done via autoconf/automake

-find solution for errors, when duma used in combination with STL (and MFC)
 under MS Visual C++ on Windows

-make new variants behave fully C++ conform
 at least new_handler() gets called now

-implement a list structure over pages rather than an array for all slots.
  this would save copying all slot entries, when list grows

-store __func__ additionally to __FILE__ and __LINE__
 depends on storing full filename (not just pointer) in slot

-modification of manual page duma.3

-check documents for line lengths of 80 coloumns

-check and replace tabs in documents

-config for
 long int sysconf (int parameter)  	Function
  This function is used to inquire about runtime system parameters. The 
  parameter argument should be one of the _SC_ symbols listed below.
  The normal return value from sysconf is the value you requested. A value
  of -1 is returned both if the implementation does not impose a limit, and
  in case of an error.
  The following errno error conditions are defined for this function:
  EINVAL           The value of the parameter is invalid.
  enums:
    _SC_PAGESIZE     Inquire about the virtual memory page size of the machine. 
              getpagesize returns the same value (see Query Memory Parameters).
    _SC_PHYS_PAGES   Inquire about the number of physical pages in the system.
    _SC_AVPHYS_PAGES Inquire about the number of available physical pages in
              the system.

-config for The ulimit Function:
  The ulimit function can be used to get and set certain process limits.
    #include <ulimit.h>
    long ulimit (int cmd, /* long newlimit */...);
    Returns: the value of the requested limit if OK, -1 on error
  The ulimit function allows a process to get or set some of its limits. The 
  operation performed is determined by the value of the cmd argument, which 
  must be one of the following four values:
    UL_GMEMLIM This returns the maximum amount of memory the process may use.
  On successful completion, the requested limit is returned. Otherwise, -1 is 
  returned and the limit is not changed.


====================
PRI LOW
====================


-get duma running/compiling on all platforms which are supported on
 sourceforge.net's compile farms. see
 http://sourceforge.net/docman/display_doc.php?docid=762&group_id=1
 --> outdated: sourceforge's compile farm is no more available

-use configuration file, which is read directly with system calls as
 replacement for the environment switches which use calls to the C library.
 this is to avoid hangs in the C library's getenv() function.
 --> outdated: now using char **environ variable instead getenv()

-document 'J. "MUFTI" Scheurich' way of compiling/using DUMA's memory
 replacement functions only from own source files. Thus usage of DUMA
 for several system libraries is avoided.
 --> outdated with preprocessor option DUMA_NO_GLOBAL_MALLOC_FREE
   and compiler options "-include" (gcc) and "/FI" (MS Visual C++)

-Similar to `DUMA_NO_GLOBAL_MALLOC_FREE`, it would be really nice if
there were a `DUMA_NO_GLOBAL_NEW_DELETE` option, which would disable
the DUMA implementations of `new`, `new[]`, `delete`, and `delete[]`
from being included into the library.


====================
DONE
====================

-define new thread-safe macros,
 which don't have to use the global variable DUMA_PROTECT_BELOW:
 1- NEW_PROTECT_BELOW: a 'new' replacement which protects the lower bound
 2- NEW_PROTECT_ABOVE: a 'new' replacement which protects the upper bound
 3- MALLOC_PROTECT_BELOW: a 'malloc' replacement which protects the lower bound
 4- MALLOC_PROTECT_ABOVE: a 'malloc' replacement which protects the upper bound
 --> done other way: thread safe macro DUMA_SET_PROTECT_BELOW(V) saves setting in TLS

-implement/use TLS - Thread Local Storage for some variables
 f.e. file/line information per delete operator
 --> done

-use "-include" option of preprocessor, when having gcc
 see http://gcc.gnu.org/onlinedocs/gcc-2.95.3/gcc_2.html#SEC11
 see http://gcc.gnu.org/onlinedocs/gcc-3.0.4/gcc_3.html#SEC14
 see http://gcc.gnu.org/onlinedocs/gcc-4.0.1/gcc/Preprocessor-Options.html
 --> done: see example_makes/ex6/Makefile

-use "/FI" option of preprocessor, when having ms visual c++
 see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore
                                                      /html/_core_.2f.fi.asp
 --> done: see win32-msvc.net/example6/example6.sln project settings

-provide a function/macro, which tests the non-protectable side of an
 allocated memory block for illegal writes.
 --> done: duma_check(), duma_checkAll(), DUMA_CHECK() and DUMA_CHECKALL()

-check and replace tabs in documents
 done in version 2.5.7

- gain thread safety: get testmt.c work properly
 done in version 2.5.11

- add environment variable DUMA_CHECK_FREQ to autmatically check
  no man's land at each n'th allocation/deallocation.
  n=0 for no automatic checks

 done for version 2.5.12

- enhance testmt.c to run on Windows without pthread library
 done for version 2.5.15
 