The overarching characteristic of STLSoft is that it is lightweight. That sounds rather super, but what does it actually mean? Specifically, the STLSoft libraries share the following characteristics:
#include
the requisite files to access the functionality.stat()
and fstat()
operations, lstat()
is provided only by unixstl::filesystem_traits.char const*
and std::string
.It is important to note that STLSoft is not a framework. Each library component is as "thin" as possible to provide its given function. The intent is that STLSoft components are used as building blocks for writing higher level components - applications, classes, libraries, servers. STLSoft has been used extensively in the development of software in all these guises.
To be completed
The STLSoft libraries may be viewed in terms of projects, libraries, concepts, patterns, principles, and techniques. They are organised in two ways: projects and libraries:
Naturally, a project will contain components from many different libraries. For example, the UNIXSTL project currently contains components from the Synchronisation, File System, DL, Performance, String, and Time libraries.
What may not be as obvious is that a library may contain components from several different projects. For example, the Synchronisation library currently contains components from the , UNIXSTL project and WinSTL projects.
For all intents and purposes we can view the STLSoft libraries as a matrix of vertical context, the projects, and horizontal context, the libraries. A small subset of such a matrix might look as follows:
COMSTL | UNIXSTL | WinSTL | |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
Memory | comstl::task_allocator | To be completed |
winstl::global_allocator, winstl::netapi_allocator, winstl::processheap_allocator, winstl::shell_allocator |
To be completed |
To be completed |
To be completed |
To be completed |
Performance | - | unixstl::performance_counter | winstl::performance_counter, winstl::highperformance_counter, winstl::threadtimes_counter, winstl::processtimes_counter |
String | To be completed |
To be completed |
To be completed |
Synchronisation | To be completed |
unixstl::process_mutex, unixstl::spin_mutex, unixstl::thread_mutex, unixstl::tss_index | winstl::process_mutex, winstl::spin_mutex, winstl::thread_mutex, winstl::tss_index |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
To be completed |
Please note that version 1.9.1 brings with it a huge amount of refinement, including new components, a different directory structure and, last but not least, vastly improved documentation (of which you are currently looking at the latest revision).
include
directory is in the include path for your compiler(s) and including the required header files.
However, several of the dependent projects that are written by contributors to STLSoft assume the definition of an environment variable STLSOFT
, whose value is the parent directory of the include
directory, under which the project directories - include/stlsoft
, include/acestl
, include/comstl
, and so on - reside. This facilitates the specification of include paths in dependent projects as -I$STLSOFT/include
(UNIX) / -I%STLSOFT%\include
(Windows). This is a good strategy generally, unless you choose to unzip the libraries under a directory included in your system INCLUDE
paths.
For example, let's say you've unzipped the STLSoft distribution into D:\3Pty\STLSoft\1.9
, such that you the following directory structure is evident:
D:\3Pty\STLSoft\1.9
D:\3Pty\STLSoft\1.9\examples
. . .
D:\3Pty\STLSoft\1.9\extras
. . .
D:\3Pty\STLSoft\1.9\include
D:\3Pty\STLSoft\1.9\include\stlsoft
D:\3Pty\STLSoft\1.9\include\acestl
. . .
D:\3Pty\STLSoft\1.9\include\unixstl
D:\3Pty\STLSoft\1.9\include\winstl
. . .
D:\3Pty\STLSoft\1.9\samples
. . .
D:\3Pty\STLSoft\1.9\test
. . .
D:\3Pty\STLSoft\1.9\unittest
In this case, you would define the environment variable STLSOFT
with the value D:\3Pty\STLSoft\1.9
. Now, when version 1.10 is released, you can unzip it into D:\3Pty\STLSoft\1.10
, and change the definition of STLSOFT
accordingly. In this way you make it possible (and simple!) to revert back to using version 1.9 should you need to do so.
If you're a user, and you'd like to have your project mentioned here, post a message on the STLSoft newsgroup.