NOTE: until such time as 1.11.0 is released, this repository is considered beta-only, and you should consider STLSoft-1.10 to be the definitive STLSoft repository.
STLSoft is a suite of C and C++ libraries that provides:
- STL extensions;
- General-purpose utility components;
- Facades over operating-system and technology-specific APIs.
The overarching characteristic of STLSoft is that it is lightweight. That sounds great, but what does it actually mean? Specifically, the STLSoft libraries share the following characteristics:
- "100% header-only" - all components within the libraries are entirely defined within header files, meaning that users need only
#include
the requisite files to access the functionality; - "Intersecting Conformance" - similar, but not-identical, components from different projects (e.g. UNIXSTL and WinSTL) are structurally conformant (they share compatible syntax, and corresponding semantics, without being related by type) only to the degree of the intersection of identical functionality, rather than employing significant additional functionality to achieve total structural conformance. For example, though both the
unixstl::filesystem_traits
andwinstl::filesystem_traits
traits classes provide thestat()
andfstat()
operations,lstat()
is provided only by the former; - Maximum Cohesion with Minimal Coupling - achieved by extensive use of generalising mechanisms, such as "shims", e.g. types that manipulate character strings are able to interact with arbitrary string types, not just
char const*
andstd::string
; - Very High Efficiency - along with Robustness, all components in the libraries are implemented with a view to maximum Efficiency. This is aided by the extensive use of efficient utility classes, such as
stlsoft::auto_buffer
andstlsoft::scoped_handle
;
NOTE: It is important to understand 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.
There are three main ways to install STLSoft-1.11:
- As downloaded archive, then using environment variables;
- Cloning project, then using environment variables;
- Cloning project, then installing via CMake;
Option 3 is recommended.
See INSTALL.md for details of these options, and also for an explanation of the top-level build scripts in the project.
IMPORTANT: If you are installing STLSoft for the first time you must do the CMake-based build step specifying that you do not want to run tests - by specifying the flags
-E
and-T
to prepare_cmake.sh - otherwise you will end up with a circular dependency on xTests (which depends on STLSoft). INSTALL.md explains this in detail.
The components in STLSoft are provided in sub-projects, and in libraries.
The following significant sub-projects are provided:
- STLSoft - general-purpose components and base-level features;
- ACESTL - components to do with ACE framework;
- COMSTL - components to do with Component Object Model (COM);
- MFCSTL - components to do with Microsoft Foundation Classes (MFC);
- UnixSTL - components to do with Unix operating system APIs;
- WinSTL - components to do with Windows operating system APIs;
The significant libraries include:
- algorithms - T.B.C.
- automation - T.B.C.
- clipboard - T.B.C.
- collections - T.B.C.
- containers - general- and special-purpose containers, such as
stlsoft::frequency_map<>
; - controls - T.B.C.
- conversion - T.B.C.
- diagnostics - T.B.C.
- dl - dynamic-library loading and invocation (for both Unix and Windows);
- filesystem - T.B.C.
- function_adaptors - T.B.C.
- functional - T.B.C.
- iterator - T.B.C.
- locale - T.B.C.
- memory - T.B.C.
- meta - T.B.C.
- network - T.B.C.
- performance - T.B.C.
- process - T.B.C.
- quality - T.B.C.
- reactor - T.B.C.
- registry - T.B.C.
- resource - T.B.C.
- security - T.B.C.
- shell - T.B.C.
- shims - T.B.C.
- smartptr - T.B.C.
- speech - T.B.C.
- string - T.B.C.
- synch - T.B.C.
- system - T.B.C.
- time - T.B.C.
- typelib - T.B.C.
- view - T.B.C.
As STLSoft-1.11 approaches an official release we will provide increasing information on the above sub-projects and libraries.
T.B.C.
Defect reports, feature requests, and pull requests are welcome on https://github.com/synesissoftware/STLSoft-1.11.
If you'd like to help out with the project, please raise an issue via GitHub Issues Page - you'll be very welcome!
There are no dependencies for installation and use of STLSoft.
The component-/unit-tests depend on the xTests project:
Projects that depend on STLSoft - though for some it is only for test - include:
STLSoft is released under the 3-clause BSD license. See LICENSE for details.