Skip to content
synesissoftwarePublic

About

A collection of C and C++ 100% header-only libraries providing STL extensions, general utilities, compiler/language/platform discrimination, and zero-overhead façades over various operating-system and third-party APIs.

Topics

Resources

Stars

4 stars

Watchers

3 watching

Forks

Latest commit

 

History

236 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

STLSoft

… robust, lightweight, cross-platform, template software …

C C++ License GitHub release Last Commit CI

Table of Contents

Introduction

STLSoft is a suite of C and C++ libraries (currently the 1.11 line) 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. Specifically, the libraries share the following characteristics:

  • 100% header-only — all components are entirely defined within header files, so users need only #include the requisite files to access the functionality;
  • Intersecting Conformance — similar, but not identical, components from different sub-projects (e.g. UnixSTL and WinSTL) are structurally conformant (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 unixstl::filesystem_traits and winstl::filesystem_traits provide stat() and fstat(), 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 can interact with arbitrary string types, not just char const* and std::string;
  • Very High Efficiency — along with Robustness, components are implemented with a view to maximum Efficiency, aided by efficient utility classes such as stlsoft::auto_buffer and stlsoft::scoped_handle;

NOTE: STLSoft is not a framework. Each library component is as thin as possible for its given function. The intent is that STLSoft components are used as building blocks for higher-level software — applications, classes, libraries, servers. STLSoft has been used extensively in all these guises.

Further reading: CONCEPTS.md, FAQ.md, INSTALL.md, http://www.stlsoft.org/.

Installation

Detailed instructions — via CMake, and via environment variables (archive or clone) — are provided in the accompanying INSTALL.md file, including an explanation of the top-level build scripts.

In short, there are three main ways to install STLSoft:

  1. As a downloaded archive, then using environment variables;
  2. Cloning the project, then using environment variables;
  3. Cloning the project, then installing via CMake;

Option 3 is recommended.

IMPORTANT: If you are installing STLSoft for the first time, you must do the CMake-based prepare step specifying that you do not want to run tests — by passing the flags -E and -T to prepare_cmake.sh — otherwise you will hit a circular dependency on xTests (which depends on STLSoft). INSTALL.md explains the full first-time ordering.

Components

The components in STLSoft are organised as sub-projects (technology / platform facets) that share libraries (functional areas). Many libraries appear in more than one sub-project with intersecting conformance — for example filesystem and dl under PlatformSTL, UnixSTL, and WinSTL.

Subprojects

The following significant sub-projects are provided:

  • STLSoft — general-purpose components and base-level features, such as stlsoft::auto_buffer<>, stlsoft::scoped_handle<>, and STLSOFT_ASSERT();
  • ACESTL — components for the ACE framework, such as acestl::message_queue_sequence<>;
  • ATLSTL — components for the Active Template Library (ATL), such as atlstl::get_MemberValue();
  • COMSTL — components for the Component Object Model (COM), such as comstl::interface_cast and comstl::enumerator_sequence<>;
  • InetSTL — components for internet APIs, such as inetstl::session and inetstl::ftpdir_sequence;
  • MFCSTL — components for the Microsoft Foundation Classes (MFC), such as mfcstl::CArray_cadaptor<>;
  • PlatformSTL — platform-selected facades over UnixSTL or WinSTL (by structural conformance), such as platformstl::readdir_sequence and platformstl::stopwatch;
  • UnixSTL — components for Unix operating-system APIs, such as unixstl::glob_sequence and unixstl::dl_call();
  • WinSTL — components for Windows operating-system APIs, such as winstl::clipboard_scope and winstl::findfile_sequence;

Libraries

The significant libraries include (examples are illustrative, not exhaustive):

  • algorithms — POD and unordered-sequence algorithms, such as stlsoft::pod_copy_n() and stlsoft::find_first_duplicate();
  • automation — ATL Automation property and enumerator helpers, such as atlstl::get_MemberValue();
  • clipboard — Windows clipboard RAII and enumeration, such as winstl::clipboard_scope;
  • collections — sequence and veneer adaptors (arrays, COM enumerators, ACE queues, MFC containers), such as stlsoft::array_view<> and comstl::enumerator_sequence<>;
  • containers — general- and special-purpose containers, such as stlsoft::frequency_map<> and stlsoft::unicode_point_map;
  • controls — STL sequences over Win32 common controls, such as winstl::listview_sequence;
  • conversion — casts and converters, such as stlsoft::sap_cast<>(), stlsoft::format_bytes(), and comstl::interface_cast;
  • diagnostics — stopwatches, timing histograms, and debug emitters, such as platformstl::stopwatch and stlsoft::doomgram;
  • dl — dynamic-library loading and invocation (Unix and Windows), such as platformstl::dl_module and winstl::dl_call();
  • filesystem — directory/glob sequences, paths, and mapped files, such as platformstl::readdir_sequence, unixstl::glob_sequence, and platformstl::memory_mapped_file;
  • functional — function/method adaptors and predicates, such as stlsoft::noop_function;
  • iterator — output and transforming iterators, such as stlsoft::FILE_iterator and stlsoft::string_concatenator_iterator;
  • locale — scoped C locale changes, such as stlsoft::locale_scope;
  • memory — buffers and allocators, such as stlsoft::auto_buffer<> and comstl::task_allocator<>;
  • meta — compile-time type traits and selectors, such as stlsoft::is_same_type<>;
  • network — internet/ACE session and connection facades, such as inetstl::session and inetstl::connection;
  • performance — performance counters (often aliased to platform stopwatches), such as platformstl::performance_counter;
  • process — Windows process-creation helpers, such as winstl::create_process();
  • quality — contract-enforcement and coverage macros, such as STLSOFT_COVER_MARK_LINE();
  • reactor — ACE reactor custom-event handling, such as acestl::custom_event_handler;
  • registry — Windows registry keys, values, and sequences, such as winstl::reg_key and winstl::reg_value_sequence;
  • resource — Windows resource-loading helpers, such as winstl::load_custom_resource();
  • security — COM/Win security initialisation and token/ACL views, such as comstl::CoInitSecurity() and winstl::token_information<>;
  • shell — Windows Shell helpers, such as winstl::browse_for_folder();
  • shims — generalising access, attribute, and logical shims (overloads across sub-projects), such as stlsoft::c_str_ptr() and stlsoft::get_ptr();
  • smartptr — scoped and reference-counted handles, such as stlsoft::scoped_handle<> and stlsoft::ref_ptr<>;
  • speech — lightweight SAPI helpers, such as comstl::sapi_speak();
  • string — lightweight strings, views, and tokenisers, such as stlsoft::basic_simple_string<> and stlsoft::string_tokeniser<>;
  • synch — mutexes, spin locks, and lock scopes, such as platformstl::thread_mutex and stlsoft::lock_scope<>;
  • system — environment, home directory, and process-id sequences, such as platformstl::home_directory and platformstl::pid_sequence;
  • time — time formatting and comparison helpers, such as stlsoft::fast_strftime();
  • typelib — COM type-library helpers, such as comstl::TypeInfo_resource_scope;
  • view — transforming views, such as stlsoft::member_selector_view<>;

Notable components

The tables below list the significant components of STLSoft by header stem (a .h and .hpp pair counts once), each with the release in which it first appeared. Badges are coloured by era: dark grey for 1.9.118 and earlier, orange for 1.9.119+, blue for 1.10+, green for 1.11+. Tag history in this repository begins at 1.9.118, so since values for earlier components are estimates derived from header Created: dates and CHANGES.md (≤1.9.1-beta1 means created before the first release recorded there). Enhanced is the latest tag at which the header's major or minor version changed, i.e. a significant enhancement; - means no such change since 1.9.118 (or since introduction).

New in 1.11

Component Sub-project Since
platformstl/process/functions PlatformSTL since 1.11.1-rc8
platformstl/system/directory_functions PlatformSTL since 1.11.1-alpha8
platformstl/system/environment_variable_scope PlatformSTL since 1.11.1-beta5
platformstl/system/pid_sequence PlatformSTL since 1.11.1-rc3
stlsoft/containers/unicode_point_map STLSoft since 1.11.1-alpha26
stlsoft/conversion/integer_to_string/integer_to_base32_string STLSoft since 1.11.1-alpha1
stlsoft/conversion/integer_to_string/integer_to_base36_string STLSoft since 1.11.1-alpha1
stlsoft/diagnostics/doomgram STLSoft since 1.11.1-alpha27
stlsoft/diagnostics/gram_scope STLSoft since 1.11.1-alpha27
stlsoft/diagnostics/gram_utils STLSoft since 1.11.1-alpha27
stlsoft/diagnostics/std_chrono_hrc_stopwatch STLSoft since 1.11.1-alpha4
stlsoft/filesystem/io_functions/read_line STLSoft since 1.11.1-alpha2
stlsoft/filesystem/io_functions/write_string STLSoft since 1.11.1-alpha2
stlsoft/smartptr/scoped_handle/scoped_handle_cc STLSoft since 1.11.1-alpha16
stlsoft/traits/integral_traits STLSoft since 1.11.1-alpha26
stlsoft/view/transforming/member_selector_view STLSoft since 1.11.1-rc2
unixstl/process/functions UnixSTL since 1.11.1-rc8
unixstl/system/pid_sequence UnixSTL since 1.11.1-rc3
unixstl/time/comparison_functions UnixSTL since 1.11.1-alpha27
winstl/diagnostics/printf_debug_string WinSTL since 1.11.1-rc3
winstl/filesystem/readdir_sequence WinSTL since 1.11.1-alpha27
winstl/i18n/codepage_sequence WinSTL since 1.11.1-rc3

New in 1.10

Components first written for 1.10 (files merely relocated by the 1.10 reorganisation are not listed unless they are also notable legacy components below):

Component Sub-project Since Enhanced
comstl/exception/policy/HRESULT_to_string_translation_policy COMSTL since 1.10.1-beta1 -
platformstl/exception/access_exception PlatformSTL since 1.10.1-beta1 -
platformstl/exception/entry_not_found_exception PlatformSTL since 1.10.1-beta1 -
platformstl/exception/file_not_found_exception PlatformSTL since 1.10.1-beta1 -
platformstl/exception/filesystem_exception PlatformSTL since 1.10.1-beta1 -
platformstl/exception/invalid_entry_type_exception PlatformSTL since 1.10.1-beta1 -
platformstl/exception/invalid_file_type_exception PlatformSTL since 1.10.1-beta1 -
platformstl/exception/security_exception PlatformSTL since 1.10.1-beta1 -
platformstl/filesystem/handles/memory_mapped_file_view_handle PlatformSTL since 1.10.1-beta1 -
platformstl/filesystem/path_buffer PlatformSTL since 1.10.1-beta26 -
platformstl/filesystem/readonly_memory_mapped_file PlatformSTL since 1.10.1-beta1 -
platformstl/system/environment_variable PlatformSTL since 1.10.1-beta23 enh 1.11.1-beta5
platformstl/system/home_directory PlatformSTL since 1.10.1-beta1 -
stlsoft/conversion/char2str STLSoft since 1.10.1-beta25 -
stlsoft/conversion/integer_to_string/integer_to_zeropadded_decimal_string STLSoft since 1.10.1-beta1 -
stlsoft/conversion/itoslice STLSoft since 1.10.1-beta1 -
stlsoft/conversion/sas_to_string STLSoft since 1.10.1-beta12 enh 1.10.1-beta22
stlsoft/conversion/string_to_bool STLSoft since 1.10.1-beta1 -
stlsoft/conversion/string_to_integer_range STLSoft since 1.10.1-beta22 -
stlsoft/exception/library_identifier_provider STLSoft since 1.10.1-beta1 enh 1.11.1-alpha24
stlsoft/exception/project_identifier_provider STLSoft since 1.10.1-beta1 enh 1.11.1-alpha24
stlsoft/filesystem/path_buffer STLSoft since 1.10.1-beta23 enh 1.10.1-beta26
stlsoft/iterator/associative_select_iterator STLSoft since 1.10.1-beta15 -
stlsoft/iterator/string_concatenator_iterator STLSoft since 1.10.1-beta15 -
stlsoft/locale/exception/locale_exception STLSoft since 1.10.1-beta12 -
stlsoft/locale/locale_scope STLSoft since 1.10.1-beta12 -
stlsoft/meta/detector/has_sentry STLSoft since 1.10.10 -
stlsoft/shims/attribute/get_top STLSoft since 1.10.1-beta15 -
stlsoft/smartptr/scoped_lambda STLSoft since 1.10.1-beta1 -
stlsoft/string/c_string/strnchr STLSoft since 1.10.1-beta22 -
stlsoft/string/c_string/strnicmp STLSoft since 1.10.1-beta26 -
stlsoft/string/c_string/strnistrn STLSoft since 1.10.1-beta22 -
stlsoft/string/c_string/strnpbrkn STLSoft since 1.10.1-beta25 -
stlsoft/string/c_string/strnrchr STLSoft since 1.10.1-beta26 -
stlsoft/string/c_string/strnstrn STLSoft since 1.10.1-beta22 -
stlsoft/system/environment/functions STLSoft since 1.10.1-beta16 -
stlsoft/time/fast_strftime STLSoft since 1.10.1-beta15 enh 1.10.1-beta28
unixstl/exception/access_exception UnixSTL since 1.10.1-beta1 -
unixstl/exception/entry_not_found_exception UnixSTL since 1.10.1-beta1 -
unixstl/exception/file_not_found_exception UnixSTL since 1.10.1-beta1 -
unixstl/exception/filesystem_exception UnixSTL since 1.10.1-beta1 -
unixstl/exception/invalid_entry_type_exception UnixSTL since 1.10.1-beta1 -
unixstl/exception/invalid_file_type_exception UnixSTL since 1.10.1-beta1 -
unixstl/exception/security_exception UnixSTL since 1.10.1-beta1 -
unixstl/filesystem/handles/memory_mapped_file_view_handle UnixSTL since 1.10.1-beta1 -
unixstl/filesystem/path_buffer UnixSTL since 1.10.1-beta24 -
unixstl/filesystem/path_classify_functions UnixSTL since 1.10.1-beta26 -
unixstl/synch/common UnixSTL since 1.10.1-beta1 -
unixstl/system/directory_functions UnixSTL since 1.10.1-beta1 enh 1.11.1-rc9
unixstl/system/home_directory UnixSTL since 1.10.1-beta1 enh 1.10.1-beta10
winstl/control_panel/control_panel.fwd WinSTL since 1.10.1-beta1 -
winstl/conversion/a2w WinSTL since 1.10.1-beta1 -
winstl/conversion/w2a WinSTL since 1.10.1-beta1 -
winstl/exception/entry_not_found_exception WinSTL since 1.10.1-beta1 -
winstl/exception/file_not_found_exception WinSTL since 1.10.1-beta1 -
winstl/exception/filesystem_exception WinSTL since 1.10.1-beta1 -
winstl/exception/invalid_entry_type_exception WinSTL since 1.10.1-beta1 -
winstl/exception/invalid_file_type_exception WinSTL since 1.10.1-beta1 -
winstl/exception/security_exception WinSTL since 1.10.1-beta1 -
winstl/filesystem/file_information_functions WinSTL since 1.10.1-beta14 enh 1.10.1-beta15
winstl/filesystem/path_buffer WinSTL since 1.10.1-beta23 -
winstl/filesystem/path_classify_functions WinSTL since 1.10.1-beta26 -
winstl/security/functions WinSTL since 1.10.1-beta16 -
winstl/synch/common WinSTL since 1.10.1-beta1 -
winstl/synch/diagnostics/failure_handling WinSTL since 1.10.1-beta1 -
winstl/system/host_name WinSTL since 1.10.1-beta1 enh 1.10.1-beta10
winstl/system/memory_functions WinSTL since 1.10.1-beta1 -
winstl/system/system_information_functions WinSTL since 1.10.1-beta1 -
winstl/system/user_name WinSTL since 1.10.1-beta1 enh 1.10.1-beta10
winstl/time/creation_functions WinSTL since 1.10.1-beta9 -
winstl/time/localisation_functions WinSTL since 1.10.1-beta1 -
winstl/time/validation_functions WinSTL since 1.10.1-beta1 -

Notable legacy components

Legacy (1.9 and earlier) components that are used by other STLSoft components, used by other Synesis projects, or otherwise important:

Component Sub-project Since Enhanced
acestl/collections/message_queue_sequence ACESTL since ≤1.9.1-beta1 -
atlstl/shims/access/string ATLSTL since ≤1.9.1-beta1 -
atlstl/window/window ATLSTL since 1.9.1-beta29 -
comstl/collections/collection_sequence COMSTL since ≤1.9.1-beta1 -
comstl/collections/enumerator_sequence COMSTL since ≤1.9.1-beta1 -
comstl/collections/safearray_sequence COMSTL since ≤1.9.1-beta1 -
comstl/conversion/interface_cast COMSTL since ≤1.9.1-beta1 enh 1.11.1-alpha28
comstl/error/errorinfo_desc COMSTL since ≤1.9.1-beta1 enh 1.10.1
comstl/error/errorinfo_functions COMSTL since ≤1.9.1-beta1 -
comstl/error/excepinfo_functions COMSTL since 1.9.6 -
comstl/functional/interface_functionals COMSTL since ≤1.9.1-beta1 -
comstl/memory/functions COMSTL since ≤1.9.1-beta1 -
comstl/memory/task_allocator COMSTL since ≤1.9.1-beta1 -
comstl/security/security_initialisers COMSTL since ≤1.9.1-beta1 -
comstl/shims/access/string COMSTL since ≤1.9.1-beta1 -
comstl/smartptr/interface_ptr COMSTL since ≤1.9.1-beta1 enh 1.11.1-alpha28
comstl/speech/sapi_util COMSTL since 1.9.1-beta20 -
comstl/string/BSTR_functions COMSTL since ≤1.9.1-beta1 enh 1.10.1
comstl/string/bstr COMSTL since ≤1.9.1-beta1 -
comstl/string/olestring_functions COMSTL since ≤1.9.1-beta1 -
inetstl/filesystem/filesystem_traits InetSTL since ≤1.9.1-beta1 enh 1.10.1
inetstl/filesystem/findfile_sequence InetSTL since ≤1.9.1-beta1 -
inetstl/filesystem/ftpdir_sequence InetSTL since 1.9.1-beta3 -
inetstl/network/connection InetSTL since ≤1.9.1-beta1 -
inetstl/network/session InetSTL since ≤1.9.1-beta1 -
mfcstl/collections/CArray_adaptors MFCSTL since ≤1.9.1-beta1 -
mfcstl/collections/CList_adaptors MFCSTL since ≤1.9.1-beta1 -
mfcstl/memory/afx_allocator MFCSTL since ≤1.9.1-beta1 -
mfcstl/shims/access/string MFCSTL since ≤1.9.1-beta1 -
mfcstl/shims/access/string/CException MFCSTL since 1.9.101 -
platformstl/dl/module PlatformSTL since ≤1.9.1-beta1 enh 1.11.1-alpha24
platformstl/filesystem/current_directory_scope PlatformSTL since ≤1.9.1-beta1 -
platformstl/filesystem/cwd_stack PlatformSTL since 1.9.1-beta15 enh 1.11.1-alpha28
platformstl/filesystem/directory_functions PlatformSTL since 1.9.1-beta7 -
platformstl/filesystem/file_lines PlatformSTL since 1.9.7 enh 1.11.1-alpha24
platformstl/filesystem/file_path_buffer PlatformSTL since ≤1.9.1-beta1 -
platformstl/filesystem/filesystem_traits PlatformSTL since ≤1.9.1-beta1 -
platformstl/filesystem/memory_mapped_file PlatformSTL since ≤1.9.1-beta1 -
platformstl/filesystem/path PlatformSTL since ≤1.9.1-beta1 -
platformstl/filesystem/pipe PlatformSTL since ≤1.9.1-beta1 -
platformstl/filesystem/readdir_sequence PlatformSTL since 1.9.1-beta6 -
platformstl/performance/performance_counter PlatformSTL since ≤1.9.1-beta1 -
platformstl/synch/atomic_functions PlatformSTL since ≤1.9.1-beta1 -
platformstl/synch/process_mutex PlatformSTL since ≤1.9.1-beta1 -
platformstl/synch/semaphore PlatformSTL since 1.9.1-beta7 -
platformstl/synch/sleep_functions PlatformSTL since 1.9.1-beta9 -
platformstl/synch/spin_mutex PlatformSTL since ≤1.9.1-beta1 enh 1.10.1
platformstl/synch/thread_mutex PlatformSTL since ≤1.9.1-beta1 -
platformstl/synch/tss_index PlatformSTL since ≤1.9.1-beta1 -
platformstl/system/console_functions PlatformSTL since 1.9.120 enh 1.11.1-alpha24
platformstl/system/environment_map PlatformSTL since ≤1.9.1-beta1 enh 1.10.1
platformstl/system/environment_variable_traits PlatformSTL since ≤1.9.1-beta1 -
platformstl/system/system_traits PlatformSTL since 1.9.1-beta12 -
rangelib/associative_range RangeLib since ≤1.9.1-beta1 -
rangelib/filtered_range RangeLib since ≤1.9.1-beta1 -
rangelib/indexed_range RangeLib since ≤1.9.1-beta1 -
rangelib/integral_range RangeLib since ≤1.9.1-beta1 -
rangelib/iterator_range RangeLib since ≤1.9.1-beta1 -
rangelib/operator_adaptors RangeLib since ≤1.9.1-beta1 -
rangelib/range_categories RangeLib since ≤1.9.1-beta1 -
rangelib/rangelib RangeLib since ≤1.9.1-beta1 -
rangelib/sequence_range RangeLib since ≤1.9.1-beta1 -
stlsoft/algorithms/bounded STLSoft since ≤1.9.1-beta1 -
stlsoft/algorithms/debug STLSoft since ≤1.9.1-beta1 -
stlsoft/algorithms/pod STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha28
stlsoft/algorithms/unordered STLSoft since ≤1.9.1-beta1 -
stlsoft/collections/array_view STLSoft since ≤1.9.1-beta1 -
stlsoft/containers/fixed_array STLSoft since ≤1.9.1-beta1 -
stlsoft/containers/frequency_map STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha24
stlsoft/containers/pod_vector STLSoft since ≤1.9.1-beta1 enh 1.10.5
stlsoft/containers/static_array STLSoft since ≤1.9.1-beta1 -
stlsoft/containers/unsorted_map STLSoft since 1.9.1-beta5 -
stlsoft/conversion/any_cast STLSoft since ≤1.9.1-beta1 -
stlsoft/conversion/byte_format_functions STLSoft since 1.9.1-beta16 enh 1.9.122
stlsoft/conversion/char_conversions STLSoft since ≤1.9.1-beta1 enh 1.9.134
stlsoft/conversion/explicit_cast STLSoft since ≤1.9.1-beta1 -
stlsoft/conversion/integer_to_string STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha24
stlsoft/conversion/m2w STLSoft since 1.9.60 -
stlsoft/conversion/number/grouping_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/conversion/ptr_cast STLSoft since ≤1.9.1-beta1 -
stlsoft/conversion/sap_cast STLSoft since ≤1.9.1-beta1 -
stlsoft/conversion/truncation_cast STLSoft since 1.9.1-beta20 enh 1.10.1
stlsoft/conversion/truncation_test STLSoft since 1.9.1-beta20 enh 1.9.122
stlsoft/conversion/union_cast STLSoft since ≤1.9.1-beta1 -
stlsoft/conversion/w2m STLSoft since 1.9.50 -
stlsoft/error/conversion_error STLSoft since 1.9.1-beta34 -
stlsoft/error/errno_scope STLSoft since ≤1.9.1-beta1 -
stlsoft/error/error_desc STLSoft since 1.9.1-beta15 enh 1.11.1-alpha28
stlsoft/error/external_iterator_invalidation STLSoft since 1.9.1-beta3 -
stlsoft/error/iteration_interruption STLSoft since ≤1.9.1-beta1 -
stlsoft/error/unrecoverable STLSoft since ≤1.9.1-beta1 -
stlsoft/filesystem/searchspec_sequence STLSoft since ≤1.9.1-beta1 -
stlsoft/functional/composite_predicates STLSoft since 1.9.1-beta47 -
stlsoft/functional/function_adaptors STLSoft since ≤1.9.1-beta1 -
stlsoft/functional/method_adaptors STLSoft since ≤1.9.1-beta1 -
stlsoft/functional/noop STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/adapted_iterator_traits STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/associative_select_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/c_str_inserter STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/cstring_concatenator_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/filter_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/filter_transform_iterator STLSoft since 1.9.1-beta3 -
stlsoft/iterators/index_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/member_selector_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/null_output_iterator STLSoft since 1.9.1-beta5 -
stlsoft/iterators/ostream_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/string_concatenator_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/iterators/transform_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/memory/allocator_base STLSoft since ≤1.9.1-beta1 -
stlsoft/memory/auto_destructor STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha28
stlsoft/memory/malloc_allocator STLSoft since ≤1.9.1-beta1 -
stlsoft/memory/new_allocator STLSoft since ≤1.9.1-beta1 -
stlsoft/memory/null_allocator STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/base_type_traits STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/capabilities STLSoft since 1.9.1-beta5 -
stlsoft/meta/detector/has_const_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/detector/has_iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/detectors STLSoft since 1.9.1-beta14 enh 1.10.10
stlsoft/meta/is_bool_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_character_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_const_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_floating_point_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_function_pointer_type STLSoft since ≤1.9.1-beta1 enh 1.9.119
stlsoft/meta/is_fundamental_type STLSoft since ≤1.9.1-beta1 enh 1.9.119
stlsoft/meta/is_integral_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_numeric_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_pointer_type STLSoft since ≤1.9.1-beta1 enh 1.9.119
stlsoft/meta/is_same_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_signed_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/is_void_type STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/meta/member_traits STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/n_types STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/select_first_type_if STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/size_of STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/typefixer/difference_type STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/typefixer/iterator STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/typefixer/pointer STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/typefixer/reference STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/typefixers STLSoft since ≤1.9.1-beta1 -
stlsoft/meta/yesno STLSoft since ≤1.9.1-beta1 -
stlsoft/performance/performance_counter_scope STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/properties/field_properties STLSoft since ≤1.9.1-beta1 -
stlsoft/properties/method_properties STLSoft since ≤1.9.1-beta1 -
stlsoft/shims/access/string STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/shims/attribute/get_ptr STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/shims/conversion/to_uint64 STLSoft since 1.9.3 -
stlsoft/shims/conversion/to_uint64/degenerate STLSoft since 1.9.3 -
stlsoft/smartptr/proxy_ptr STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/smartptr/ref_ptr STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/smartptr/scoped_handle STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha24
stlsoft/smartptr/shared_ptr STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha24
stlsoft/stlsoft STLSoft since ≤1.9.1-beta1 -
stlsoft/string/case_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/string/char_traits STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha24
stlsoft/string/charset_tokeniser STLSoft since ≤1.9.1-beta1 -
stlsoft/string/container_slice_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/string/cstring_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/string/cstring_maker STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/string/ctype_traits STLSoft since ≤1.9.1-beta1 -
stlsoft/string/fast_string_concatenator STLSoft since ≤1.9.1-beta1 -
stlsoft/string/shim_string STLSoft since ≤1.9.1-beta1 enh 1.10.7
stlsoft/string/simple_string STLSoft since ≤1.9.1-beta1 enh 1.11.1-rc7
stlsoft/string/slice_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/string/special_string_instance STLSoft since 1.9.1-beta8 enh 1.10.1
stlsoft/string/split_functions STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/string/static_string STLSoft since ≤1.9.1-beta1 enh 1.11.1-alpha24
stlsoft/string/string_tokeniser STLSoft since ≤1.9.1-beta1 -
stlsoft/string/string_traits STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/string/string_view STLSoft since ≤1.9.1-beta1 enh 1.11.1-beta3
stlsoft/string/tokeniser_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/string/trim_functions STLSoft since ≤1.9.1-beta1 enh 1.10.1
stlsoft/string/view_slice_functions STLSoft since ≤1.9.1-beta1 -
stlsoft/synch/concepts STLSoft since 1.9.1-beta3 -
stlsoft/synch/lock_scope STLSoft since ≤1.9.1-beta1 -
stlsoft/synch/null_mutex STLSoft since ≤1.9.1-beta1 -
stlsoft/system/cmdargs STLSoft since ≤1.9.1-beta1 enh 1.11.1-beta1
stlsoft/system/commandline_parser STLSoft since ≤1.9.1-beta1 enh 1.11.1-beta1
unixstl/dl/dl_call UnixSTL since 1.9.118 -
unixstl/filesystem/directory_functions UnixSTL since ≤1.9.1-beta1 enh 1.10.1
unixstl/filesystem/filesystem_traits UnixSTL since ≤1.9.1-beta1 enh 1.11.1-rc9
unixstl/filesystem/glob_sequence UnixSTL since ≤1.9.1-beta1 enh 1.11.1-beta8
unixstl/filesystem/path_functions UnixSTL since 1.9.1-beta10 enh 1.10.1
unixstl/filesystem/readdir_sequence UnixSTL since ≤1.9.1-beta1 enh 1.11.1-beta8
unixstl/shims/access/string UnixSTL since ≤1.9.1-beta1 -
unixstl/shims/conversion/to_uint64/stat UnixSTL since 1.9.97 -
unixstl/synch/atomic_functions UnixSTL since ≤1.9.1-beta1 enh 1.10.1
unixstl/synch/atomic_types UnixSTL since ≤1.9.1-beta1 enh 1.10.1
unixstl/synch/spin_mutex UnixSTL since ≤1.9.1-beta1 enh 1.10.1
unixstl/synch/thread_mutex UnixSTL since ≤1.9.1-beta1 -
unixstl/synch/tss_index UnixSTL since ≤1.9.1-beta1 -
unixstl/system/system_traits UnixSTL since ≤1.9.1-beta1 enh 1.11.1-rc9
winstl/clipboard/clipboard_format_sequence WinSTL since ≤1.9.1-beta1 -
winstl/clipboard/clipboard_scope WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/controls/combobox_sequence WinSTL since ≤1.9.1-beta1 -
winstl/controls/functions WinSTL since ≤1.9.1-beta1 -
winstl/controls/listbox_sequence WinSTL since ≤1.9.1-beta1 -
winstl/controls/listview_sequence WinSTL since ≤1.9.1-beta1 -
winstl/controls/treeview_sequence WinSTL since ≤1.9.1-beta1 -
winstl/conversion/char_conversions WinSTL since ≤1.9.1-beta1 -
winstl/conversion/int_to_string WinSTL since ≤1.9.1-beta1 -
winstl/conversion/w2m WinSTL since 1.9.49 -
winstl/dl/dl_call WinSTL since 1.9.118 enh 1.10.1
winstl/dl/module WinSTL since ≤1.9.1-beta1 enh 1.11.1-alpha24
winstl/error/conversion_error WinSTL since 1.9.1-beta34 -
winstl/error/error_desc WinSTL since ≤1.9.1-beta1 enh 1.11.1-alpha28
winstl/error/error_functions WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/error/last_error_scope WinSTL since ≤1.9.1-beta1 -
winstl/filesystem/absolute_path WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/filesystem/file_path_buffer WinSTL since ≤1.9.1-beta1 enh 1.9.130
winstl/filesystem/filesystem_traits WinSTL since ≤1.9.1-beta1 enh 1.11.1-rc2
winstl/filesystem/findfile_sequence WinSTL since ≤1.9.1-beta1 enh 1.11.1-beta7
winstl/filesystem/findvolume_sequence WinSTL since ≤1.9.1-beta1 enh 1.11.1-alpha28
winstl/filesystem/memory_mapped_file WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/filesystem/path WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/memory/global_allocator WinSTL since ≤1.9.1-beta1 -
winstl/memory/processheap_allocator WinSTL since ≤1.9.1-beta1 -
winstl/memory/shell_allocator WinSTL since ≤1.9.1-beta1 -
winstl/performance/performance_counter WinSTL since ≤1.9.1-beta1 -
winstl/process/functions WinSTL since 1.9.1-beta5 enh 1.11.1-rc8
winstl/registry/error/exceptions WinSTL since 1.9.1-beta5 -
winstl/registry/reg_key WinSTL since ≤1.9.1-beta1 enh 1.9.130
winstl/registry/reg_key_sequence WinSTL since ≤1.9.1-beta1 -
winstl/registry/reg_traits WinSTL since ≤1.9.1-beta1 -
winstl/registry/reg_value WinSTL since ≤1.9.1-beta1 enh 1.9.123
winstl/registry/reg_value_sequence WinSTL since ≤1.9.1-beta1 -
winstl/registry/regfwd WinSTL since 1.9.1-beta5 -
winstl/registry/registry WinSTL since ≤1.9.1-beta1 -
winstl/security/acl_sequence WinSTL since ≤1.9.1-beta1 -
winstl/security/token_information WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/shell/browse_for_folder WinSTL since ≤1.9.1-beta1 -
winstl/shell/file_operations WinSTL since ≤1.9.1-beta1 -
winstl/shims/access/string WinSTL since ≤1.9.1-beta1 -
winstl/shims/access/string/HWND WinSTL since ≤1.9.1-beta1 -
winstl/shims/access/string/time WinSTL since ≤1.9.1-beta1 -
winstl/shims/attribute/get_HWND WinSTL since ≤1.9.1-beta1 -
winstl/shims/conversion/to_DATE/SYSTEMTIME WinSTL since 1.9.7 -
winstl/shims/conversion/to_FILETIME WinSTL since 1.9.1-beta34 -
winstl/shims/conversion/to_FILETIME/SYSTEMTIME WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/shims/conversion/to_SYSTEMTIME WinSTL since 1.9.1-beta34 -
winstl/shims/conversion/to_SYSTEMTIME/FILETIME WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/shims/conversion/to_uint64/WIN32_FIND_DATA WinSTL since 1.9.3 -
winstl/string/resource_string WinSTL since ≤1.9.1-beta1 -
winstl/synch/atomic_functions WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/synch/atomic_types WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/synch/event WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/synch/process_mutex WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/synch/spin_mutex WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/synch/thread_mutex WinSTL since ≤1.9.1-beta1 -
winstl/synch/wait_functions WinSTL since 1.9.1-beta7 -
winstl/system/console_colour_scope WinSTL since 1.9.1-beta16 -
winstl/system/console_functions WinSTL since ≤1.9.1-beta1 enh 1.11.1-rc3
winstl/system/environment_variable WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/system/module_filename WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/system/pid_sequence WinSTL since ≤1.9.1-beta1 enh 1.11.1-rc3
winstl/system/searchpath_sequence WinSTL since ≤1.9.1-beta1 -
winstl/system/system_info WinSTL since ≤1.9.1-beta1 enh 1.10.1
winstl/system/system_traits WinSTL since ≤1.9.1-beta1 enh 1.11.1-rc9
winstl/system/system_version WinSTL since ≤1.9.1-beta1 -
winstl/system/version_info WinSTL since ≤1.9.1-beta1 enh 1.9.122
winstl/time/comparison_functions WinSTL since ≤1.9.1-beta1 enh 1.11.1-alpha27
winstl/time/conversion_functions WinSTL since ≤1.9.1-beta1 -
winstl/time/functions WinSTL since ≤1.9.1-beta1 -
winstl/toolhelp/module_sequence WinSTL since ≤1.9.1-beta1 -
winstl/toolhelp/process_sequence WinSTL since ≤1.9.1-beta1 -
winstl/toolhelp/sequence_base WinSTL since ≤1.9.1-beta1 -
winstl/toolhelp/sequence_value_traits WinSTL since ≤1.9.1-beta1 -
winstl/toolhelp/thread_sequence WinSTL since ≤1.9.1-beta1 -
winstl/window/functions WinSTL since ≤1.9.1-beta1 -
winstl/window/hdc_scope WinSTL since ≤1.9.1-beta1 -
winstl/window/message_functions WinSTL since ≤1.9.1-beta1 -
winstl/window/window_text_scope WinSTL since ≤1.9.1-beta1 -

Examples

Examples are provided in the examples directory, along with a markdown description for each. A detailed catalogue is in EXAMPLES.md. After a CMake build, ./run_all_examples.sh exercises matching example programs (see INSTALL.md).

Project Information

Where to get help

Contribution guidelines

Defect reports, feature requests, and pull requests are welcome on https://github.com/synesissoftware/STLSoft.

If you'd like to help out with the project, please raise an issue via GitHub Issues — you'll be very welcome! See also HOW_YOU_CAN_HELP.md.

Dependencies

Dependency Role Required?
— Installation and use of STLSoft (100% header-only) ✅ None
ACE ACESTL examples / tests ⚪ Optional (NO_ACE / --no-ace; ACE / ACE_ROOT or system package)
xTests Component- / unit-tests (BUILD_TESTING) ⚪ Tests only

Related projects

Projects that depend on STLSoft — though for some it is only for tests — include:

License

STLSoft is released under the 3-clause BSD license. See LICENSE for details.

About

A collection of C and C++ 100% header-only libraries providing STL extensions, general utilities, compiler/language/platform discrimination, and zero-overhead façades over various operating-system and third-party APIs.

Topics

Resources

Stars

4 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages