Français   Deutsch   Home   Articles   Links   Résumé 

My Code

The code can be directly browsed here, or can be downloaded in on go in a tarred, bzip2'ed file. The license corresponds to the BSD license.

The code here was developed over a period of more than fifteen years; some of it was originally written in C, before I even started using C++. It has only been sporadically updated, according to the time available and my immediate needs. As such, it is in the state it is in; I do not claim that all of it is of acceptable quality for professional use. In fact, the quality varies greatly between components; I use some of the components more often than others, and these components are better maintained.

The current state of the code is somewhat transitional. Historically, my libraries supplied most of the basic classes I needed, things like String or ArrayOf. In practice, I've already replaced many of these classes with those in the standard, and long term, my guiding principle is that nothing that I maintain should do double duty with the standard library or Boost. For the moment, there are still some notable exceptions, especially with regards to Boost, either because I still have to support compilers which don't support Boost (Sun CC 5.5, in particular), or because I just haven't gotten around to rewriting the higher level code which uses them.

Likewise, there are no guarantees with regards to threading. In fact, most of the components are probably thread neutral---they don't use any static data nor other resources which might be shared, and so automatically offer the same guarantee as the SGI implementation of the STL (which is the only useful guarantee). Never the less, I've not yet done the analysis necessary to specify exactly which ones these are. (There is one exception: each time a singleton is used, I've arranged to ensure that it is initialized during static initialization---presumably before entering main, at least if the object is statically linked.)

There are several pages of documentation in the library itself, either in HTML or as plain text (not always in English, I'm afraid):

There are man-pages for the executables which are actually useful, in HTML format:

Each sub-system in the library is also documented:

With regards to portability, all of the code here has been tested with the following configurations:

i80x86/linux/gcc:
2 Intel Xeon 3.40 GHz/1024 1GB mem.
2.4.21-37.ELsmp (Red Hat Linux 3.2.3-53)
g++ 3.2.3 (Red Hat Linux 3.2.3-42)
sparc/solaris/suncc:
Sun SPARC Ultra-5 10 (sun4u), 400 MHz/256 MB mem.
Solaris 2.8 (Sun OS 5.8)
Sun CC 5.5 Patch 112817-06 (Sun Studio 8)
sparcv9/solaris/suncc:
Sun SPARC Ultra-5 10 (sun4u), 400 MHz/256 MB mem.
Solaris 2.8 (Sun OS 5.8)
Sun CC 5.5 Patch 112817-06 (Sun Studio 8)
sparc/solaris/gcc:
Sun SPARC Ultra-5 10 (sun4u), 400 MHz/256 MB mem.
Solaris 2.8 (Sun OS 5.8)
g++ 4.0.2 (with custom patch in library so that <iostream> does not include <istream>, <ostream>, etc.)
x86_64/linux/gcc:
AMD Athlon 64 3000+, 512 MB mem.
2.6.12-12mdk (Mandriva Linux release 2006.0)
g++ 4.0.1 (Mandriva Linux 4.0.1-5mdk)
i80x86/win32/vc80:
Intel Pentium 4 2.60 GHz/256 MB mem.
Microsoft Windows 2000 5.00.2195, Service Pack 4
Microsoft C/C++ 14.00.50727.42 for 80x86 (Visual Studio 8, free download)




Valid XHTML 1.0 Transitional