STLSoft Home
Digital Mars Home
STLSoft for Digital MarsTM
 
... Robust, Lightweight, Cross-platform, Template Software ...
Last Updated: 12th September 2004

STLSoft projects:
ATLSTL - where the Standard Template Library meets the Active Template Library COMSTL - where the Standard Template Library meets the Component Object Model .netSTL - where the Standard Template Library meets C++.NET InetSTL - where the Standard Template Library meets the Internet
MFCSTL - where the Standard Template Library meets the Microsoft Foundation Classes STLSoft - Robust, Lightweight, Cross-platform, Template Software UNIXSTL - where the Standard Template Library meets the UNIX Operating System WinSTL - where the Standard Template Library meets the Win32 API
STLSoft FAQ hosted at stlsoft.gregpeet.com
STLSoft
STLSoft.org Home 
News Group 
Mailing List 
Libraries
Index (tree view) 
Index (plain view) 
Compiler Compatibility 
Downloads 
Technical
FAQ 
White Papers 
Submissions 
Compilers 
Links
Digital Mars 
C/C++ User's Journal 
Dr. Dobb's Journal 
Guru Of The Week 
Comeau Computing 
SGI's STL 
STLport 
Boost 
Windows Developer Network 
Philosophy
The philosophy of STLSoft is very simple: providing robust and lightweight software to the development community.
STLSoft originally came into being as a means of moving the original proprietary source code from the author's company into the public domain is as clean a manner as possible. As it has evolved, however, it is able to stand on its own as a reliable source of useful, high-quality, and widely-compatible software.
A strong advantage of the STLSoft libraries is that they are, without exception, "header-only". Not only does this provide transparency to the potential user - nothing is squirrelled away in implementation files, or worse yet, inside opaque binary modules - but it also eliminates many of the practical issues that are disuasive in the adoption and use of other open-source libraries. In particular, there are no issues of global object lifetimes to worry about, concerns about coupling (with implementation files), proprietary error-handling mechanisms, memory-management, debugging facilities and very few concerns over calling conventions, As much as possible, STLSoft lets the compiler make those decisions, so you don't have to.
Projects
The STLSoft libraries are split into a number of sub-projects, corresponding to their respective technologies/operating-systems. The main project, confusingly also referred to as STLSoft (located at http://stlsoft.org) provides cross-platform, technology/API-neutral classes and functions, within the namespace stlsoft. They also support the other sub-projects:
  • ATLSTL (http://atlstl.org). The Active Template Library is the leading library for creating COM components, and ATLSTL provides software technologies for assisting in its use. Components are defined within the namespace atlstl.
  • COMSTL (http://comstl.org). The Component Object Model has become the foundational technology for component software development on the Windows platform. COMSTL provides software technologies for manipulating COM interfaces and APIs. Components are defined within the namespace comstl.
  • .netSTL (http://dotnetstl.org). The .NET platform is rapidly gaining popularity, and C++.NET is the powerhouse language of the .NET platform. .netSTL enhances the use of Managed C++ by applying STL techniques to the .NET framework. Components are defined within the namespace dotnetstl.
  • InetSTL (http://inetstl.org). The Internet is the medium of the new millenium, and Internet programming is an important part of many modern C++ programmers' daily lives. InetSTL enhances the use of C++ for Internet Programming by applying STL techniques to Internet APIs. Components are defined within the namespace inetstl.
  • MFCSTL (http://mfcstl.org). Even if it's showing its age a bit, the Microsoft Foundation Classes are still a widely used technology for the development of user interface applications and components on the Windows platform. MFCSTL provides software technologies for manipulating MFC classes and APIs. Components are defined within the namespace mfcstl.
  • UNIXSTL (http://unixstl.org) Like its stablemate WinSTL, UNIXSTL provides a number of libraries for programming with today's other main operating system. Components are defined within the namespace unixstl.
  • WinSTL (http://winstl.org). Microsoft Windows is the pre-eminent desktop platform of our age: whether you love it or hate it, you'll doubtless end up programming on it! WinSTL provides a number of libraries for standardising the dizzying array of different APIs, simplifying your work considerably. Components are defined within the namespace winstl.
Note: in fact, each of the sub-projects is defined in a nested namespace that is aliased to the given one, e.g. WinSTL components are defined within stlsoft::winstl_project, to which winstl is aliased. However, you need not concern yourself about that, and can simply use the notional namespace. (See the white-papers for details of a C/C++ User's Journal article describing this technique.)
Directory structure
After a number of false-starts through the evolution of the libraries' versions, the directory structure has evolved to the following (where <DMCDIR> is the location in which you've installed the Digital Mars compiler):
<DMCDIR>/stlsoft/ Contains all STLSoft and sub-project library files for the current release
<DMCDIR>/stlsoft/help/ Contains the Compiled HTML Help file and all HTML help files for the libraries
<DMCDIR>/stlsoft/dmconfig/ Information files and example configuration files to help you with configuring Digital Mars to work with STLSoft (see below)
<DMCDIR>/stlsoft/samples/ Non-trivial sample projects
<DMCDIR>/stlsoft/test/stlsoft/ Test files for the STLSoft main project
<DMCDIR>/stlsoft/test/atlstl/ Test files for the ATLSTL project
. . .
<DMCDIR>/stlsoft/test/winstl/ Test files for the WinSTL project
<DMCDIR>/stlsoft/inprogress/ Contains library files for works in progress, essentially beta release components. Files in this directory will likely be incorporated into the next release, unless rejected
<DMCDIR>/stlsoft/inprogress-test/stlsoft/ Test files for the beta release components in the STLSoft main project
. . .
<DMCDIR>/stlsoft/inprogress-test/winstl/ Test files for the beta release components in the WinSTL project
Installation
Because this directory structure is incorporated into the Digital Mars distributions, and the STLSoft libraries are completely header-only, you have three simple options to accessing the library files.
  • You can amend the Digital Mars C/C++ compiler's configuration file, SC.INI, to include a reference to the STLSoft directory. SC.INI contains various environment entries including PATH, BIN, LIB. All that needs to be done is to add the stlsoft directory to the INCLUDE entry, as in

    INCLUDE="%@P%\..\include";"%@P%\..\mfc\include";"%@P%\..\stl";"%@P%\..\stlsoft";%INCLUDE%

    This is the recommended approach. To help you out there is a sample SC.INI file in the <DMCDIR>/stlsoft/dmconfig/ directory.
  • You can add the actual value of <DMCDIR>/stlsoft/ to your system INCLUDE environment variable.
  • You can include the actual value of <DMCDIR>/stlsoft/ in your individual project include directories.
Furthermore, if you wish to use the beta release components in the <DMCDIR>/stlsoft/inprogress/ directory, you will need to add this to your include paths (by whatever mechanism you prefer, as above). Alternatively, you can specify relative include paths in your source files, as in

         #include <inprogress/winstl_clipboard_format_sequence.h>

but once this component has been added into the main project in a subsequent release you then would need to amend your includes appropriately.
Upgrades
At each release of the Digital Mars C/C++ compiler there will be a release of the latest STLSoft libraries (except in the case where there have been no significant changes to the STLSoft libraries within a release cycle of Digital Mars C/C++ compiler).
However, you may wish to secure updates to the libraries independent of the Digital Mars C/C++ compiler release cycle. In that case, you should visit the downloads section of the STLSoft website, where the latest release of the libraries are always available, along with prior versions.
Once you've downloaded the latest distribution from the STLSoft website, you can simply unzip the contents on-top of the <DMCDIR>/stlsoft/ on your system. The structures for the standard and Digital Mars distributions are compatible and, apart from perhaps getting some new directories under the <DMCDIR>/stlsoft/ directory, you will not damage your Digital Mars/STLSoft installation. Simple!
Documentation
Documentation is provided in five forms:
  • HTML Help Files From version 1.6.2 onwards, HTML help is available for the STLSoft main project and all sub-projects. Available as either a Compiled HTML Help module (CHM) - compatible with Windows operating systems - or a HTML document set (in zip format) - compatible with modern browsers on any operating system.
  • Structured and commented source code The only documentation that is impossible to get out-of-date is the code itself. All STLSoft code is written for maximum readability, where this does not interfere with code correctness, or does not unduly affect compiler compatibility.
  • Magazine articles. The code in the STLSoft libraries have spawned quite a few magazine articles in leading industry publications. The White Papers page contains an up-to-date list of these publications along with those presented only on this site.
  • Test programs Since the easiest way to learn about software is to see it in action, a pertinent test program for each major component of each library is included in the archive for each version of the libraries (except some early releases, prior to version 1.4). These programs contain illustrative, commented code that exercise the functionality of individual components or of libraries as a whole.
  • Sample programs Since the test programs are both simplistic and boring, there are a number of non-trivial sample programs, available from version 1.6.3 onwards.
Forthcoming Projects
Additionally, a number of other projects are slated for release in the near future:
  • DBSTL DBSTL will bring STL techniques to the use of open database standards such as ODBC and OLEDB, as well as to the use of proprietary database application interfaces. DBSTL's website will be located at http://dbstl.org
  • WTLSTL Windows Template Library is a library for generating compact efficient user-interfaces and applications, and is growing in popularity. WTLSTL will bring STL techniques and technologies to assist developers in working with WTL. WTLSTL's website will be located at http://wtlstl.org
  • XMLSTL The eXtensible Markup Language is fast becoming the language of choice for information interchange. Incorporating libraries for manipulating the implementations of DOM and SAX from both Microsoft and XMLSoft, XMLSTL will aid developers in their use of XML by standardising . XMLSTL's website will be located at http://xmlstl.org
Licenses
As of version 1.8.1 onwards, all the STLSoft are licensed using the BSD license, one of the licenses ratified by the Open Source Initiative.
STLSoft for DMC++ News
12th September 2004: STLSoft 1.8.1 is released (incorporating RangeLib, and a change of license) This major release includes a change of license for all libraries - All STLSoft libraries are (re-)released under the BSD license - along with the addition of several new components. It also includes the release of the STLSoft implementation of RangeLib, implementing the Range concept invented by Matthew Wilson and John Torjo.
11th June 2004: STLSoft 1.7.1 is finally released! This major release includes two new sub-projects - .netSTL and InetSTL - along with a host of new and updated components throughout the libraries.
22nd August 2003: STLSoft 1.6.5 released with Digital Mars C/C++ 8.35. The latest version of the STLSoft libraries is released with version 8.35 of the Digital Mars C/C++ compiler.
2nd June 2003: STLSoft is bundled with Digital Mars C/C++ compiler. The STLSoft libraries will be bundled with the Digital Mars C/C++ compiler, from version 8.34 onwards. Also, Digital Mars are generously providing an STLSoft newsgroup for discussion about the STLSoft libraries, rapid bug reporting/fixing, suggestions and complaints.
STLSoft News
For general STLSoft news check out the STLSoft website.
  Images contributed freely by Simon O'Connor from Zink  All content copyright Synesis Software Pty Ltd