dlr_libs

Introduction

This is a collection of libraries I initially wrote when I was consulting. I wanted a common platform of unencumbered code for use with different clients, so I wouldn't have to start from scratch each time. I use it as a foundation for much of my software.  I've released it under a pretty permissive license (LGPL) already, but let me know if you want different terms.

Platform

These libraries are in regular use under Linux (32- & 64-bit), and not-so-regular use under Windows (32-bit). They should be portable to any platform supporting ISO C++.

The VC++ (MS Windows) build is currently falling out of date. Building on Windows probably means updating the solution files to compile newly added source files, and may involve some light porting of new code. Note that many of the unit tests currently fail on Windows. We're correcting this bit by bit. The failures so far appear to be related to poorly designed tests and non-standard iostreams behavior.

Libraries

There are several interdependent libraries in the dlr_libs collection.  Building them all in the right order can be a pain.  If you plan to install in /usr/local, and don't need any fancy configure options, you can use the new script buildAll.py to build the libraries for you.  Simply put all of the .tar.gz files and buildAll.py in the same directory, and then run "python buildAll.py".  Note that buildAll.py will fail if, for example, the tests for dlrThread fail due to their lousy design. In this case, you can simply install dlrThread manually and rerun buildAll.py.

If you don't use buildAll.py, then -- assuming it renders correctly in your browser -- the following table illustrates the dependencies between the different libraries.


Depends_on dlrCommon
Depends_on dlrPortability
Depends_on dlrRandom
Depends_on dlrNumeric
Depends_on dlrLinearAlgebra
Depends_on dlrOptimization
Depends_on dlrUtilities
Depends_on dlrThread
Depends_on dlrGeometry
Depends_on dlrComputerVision
Depends_on dlrTest
Depends_on LAPACK
Depends_on Boost::Thread
Depends_on libpng
dlrCommon
X













dlrPortability
X
X












dlrRandom
X
X
X








X


dlrNumeric
X


X










dlrLinearAlgebra
X


X
X






X


dlrOptimization
X


X
X
X





X


dlrUtilities
X
X




X







dlrThread
X
X




X
X




X

dlrGeometry
X
X

X
X



X


X


dlrComputerVision
X
X
X
X
X
X


X
X

X

X
dlrTest
X









X




For each library below, you'll see four links:

Core Libraries

The libraries listed in this section have been around for a while. They are well tested, and their interfaces are stable. Features get added from time to time, but we're careful not to break existing user code.

Incomplete Libraries

These libraries are less mature and less stable than the core libraries, but they still contain useful code. Some effort will be put into maintaining a consistent interface.

Unstable Libraries

Libraries in this section are still very young, and their interfaces are still being explored. Feel free to play around with these libraries, but bear in mind that they may change out from under you. Of the libraries in this section, dlrThread is the closest to being stable and usable.

Old Versions

Old versions are available here:
Previous versions (up to 1.28) included all of the libraries in one download.  Version 1.28 is temporarily available here:

Please don't hesitate to make suggestions, bug-reports, and contributions.

Finally, I know the namimg (dlr*) sounds totally narcissistic. I couldn't think of anything better when I wrote the early versions, and now I'm stuck with it.

This page was updated on November 25, 2009.