Collection of mildly useful data structures in header-library.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Constantin Fürst a141c30c20 update gitignore 2 years ago
data rename of modules 2 years ago
.gitignore update gitignore 2 years ago
CMakeLists.txt Add all to CMakeLists 2 years ago
LICENSE add previously untracked files 3 years ago Refactor namespaces, update and add swsknf.h for disabling all checks. 2 years ago
main-testing.cpp rename of modules 2 years ago
settings.h use local "settings.h" files in each module that requires it 2 years ago


This "library" contains or will in the future contain an assortement of algorithms, data-structures and such. Where possible, templates are used to enable multipurpose-use.


In most cases of unrecoverable errors an exception will be thrown. If the process can safely continue, only logging or return values may indicate a behind-the-scenes recovery.

disable error checks

Checks for certain errors may be disabled in favor of performance. A list of defines can be found at the bottom of this readme.


The library is writte with focus on deployment to platforms that have the c++ standard library available. Some parts of the library may work without it but to make it portable when using atomics I found this to be the best route. Otherwise, no third-party libraries will be used. Heap-Memory will be used, therefore this is unsuitable for first-stage operating system development and can be integrated only when malloc() and free() are available.


Currently only some datatypes are being implemented. These are split into concurrent and serialized categories. The first containing types which are thread-safe, while the latter contains non-threadsafe types.


Library is written header-only using .hpp files that contain both definition and code in one. Therefore it is quite easy to install; only copy add the location of this library to your include path, add an include statement containing the needed modules and you're set.


Should one desire to compile this as a standalone library or dynamically linked library, the precompiler statement "#define SWSKNF_HEADER_ONLY" can be used to enable the header-only mode for accessing the function and class definitions.

disable outside-boundary check for arrays and such => #define SWSKNF_NO_BOUNDARY_CHECK enable check for too-large-pointers in wf-shared-ptr => #define SWSKNF_NO_OVERSIZE_POINTER_CHECK

or alternatively there is a way to fully disable sanity checks => #define SWSKNF_DISABLE_ALL_CHECKS