Skip to content
/ gtl Public

A collection of useful well-commented, self-contained, simple, and/or interesting C++ classes

License

Notifications You must be signed in to change notification settings

gpdaniels/gtl

gtl

This repository is a collection of useful cross-platform, well-commented, self-contained, simple, and interesting C++ classes in the style of the standard template library.

Build Status Code Quality License: MIT

Content

The current classes are as described below:

Group Class Description
ai ann Artificial neural network using the backpropagation algorithm for training. ✔️
ai hmm Hidden markov model using the Baum-Welch algorithm for training. ✔️
algorithm astar Implementation of the astar algorithm used to solve pathfinding problems. ✔️
algorithm dijkstra Implementation of Dijkstra's algorithm used to solve pathfinding problems. ✔️
algorithm gaussian_elimination Linear simultaneous equation solver. ✔️
algorithm kmeans Implementation of the KMeans clustering algorithm. 🚧
algorithm maxn The MaxN search algorithm to find the best possible moves for an N player game with known information. 🚧
algorithm quicksort Recursive quicksort algorithm, both full and partial versions. ✔️
algorithm satisfiability A simple SAT solver. 🚧
algorithm simulation_loop Fixed time step helper class for creating game loops. ✔️
container any Class that can hold any variable type. ✔️
container array_nd N-dimensional statically or dynamically sized array. ✔️
container lambda Lambda function class that uses the heap for storage. ✔️
container ring_buffer Dynamically sized thread-safe multi-producer multi-consumer ring-buffer. ✔️
container static_array_nd N-dimensional statically sized array. ✔️
container static_lambda Lambda function class that uses the stack for storage. ✔️
container static_ring_buffer Statically sized thread-safe multi-producer multi-consumer ring-buffer. ✔️
container static_variant A static_variant class that can contain any one of its listed template types. 🚧
container static_view A non-owning static_view into multi-dimensional memory. 🚧
crypto aes An implementation of the aes encryption algorithm for 128, 196, and 256 bits. ✔️
crypto chacha An implementation of the chacha encryption algorithm. ✔️
crypto rc4 An implementation of the rc4 or arc4 encryption algorithm. 🚧
crypto rsa An implementation of the RSA (Rivest-Shamir-Adleman) asymmetric encryption algorithm. ✔️
debug access Classes and macros for accessing class private members. ✔️
debug assert Macros that define an assert macro that optionally takes a format string and parameters. ✔️
debug assume Macro that hints to the compiler when a statement should be assumed true. ✔️
debug breakpoint Macro for creating a breakpoint. ✔️
debug expect Macro that hints to the compiler when a statement should be expected as true or false. 🚧
debug sentinel A simple class to help detect stack overflows. 🚧
debug short_file Replacement for the __FILE__ macro to prevent build path being leaked into the binary. ✔️
debug signal Class to wrap signal handlers allowing the use of lambdas with scope. ✔️
debug unused Macro for hiding unused variable warnings. ✔️
execution barrier Thread syncronisation barrier. ✔️
execution coroutine Setjump/Longjump implementation of stackful coroutines. ✔️
execution semaphore Semaphore made using a mutex and condition variable. ✔️
execution spin_lock Spin lock implemented using an atomic flag. ✔️
execution thread_pool Multi-queue thread-pool that performs jobs in priority order. ✔️
execution triple_buffer Lockless triple buffer interface to three buffers. ✔️
file/archive tar Tar format archive reader and writer. 🚧
file/text json A small json parser and composer. 🚧
game mastermind An implementation of Donald Knuth's algorithm to solve the mastermind game in five moves or less. 🚧
game puzzle_cube Solver for 3x3 puzzle cubes. 🚧
game sudoku A sudoku solver for standard 9x9 grids. 🚧
game tic_tac_toe Solver for the game tic-tac-toe on a 3x3 board. 🚧
hash crc An implementation of the crc hashing function for 8, 16, 32, and 64 bits. ✔️
hash md5 An implementation of the md5 hashing function. ✔️
hash sha0 An implementation of the sha0 hashing function. ✔️
hash sha1 An implementation of the sha1 hashing function. ✔️
hash sha2 An implementation of the sha2 hashing function for 224, 256, 384, and 512 bits. ✔️
hash sha3 An implementation of the sha3 hashing function for 224, 256, 384, and 512 bits. ✔️
io file An RAII file handle that wraps file operation functions. 🚧
io paths Collection of cross platform functions to provide useful paths. ✔️
io socket Cross platform socket class, supporting tcp (server and client) and udp protocols. 🚧
math big_integer Arbitrary sized signed integers. ✔️
math big_unsigned Arbitrary sized unsigned integers. ✔️
math symbolic Compile time symbolic differentiation using template metaprogramming. 🚧
parser generator A parser generator to generate parsers defined using a collection of parsing primitives. ✔️
parser pl0 A parser and interpreter for the PL/0 programming language. 🚧
platform architecture Macros and helper function to get the architecture used for the build. ✔️
platform compiler Macros and helper function to get the compiler used for the build. ✔️
platform cpu Class to extract cpuid information to determine supported instructions at runtime. ✔️
platform operating_system Macros and helper function to get the operating system used for the build. ✔️
platform runtime Macros and helper function to get the runtime used for the build. ✔️
platform timestamp Function to get a monotonically increasing timestamp. ✔️
platform types Type aliases of standard types to short names. ✔️
protection virtual_machine A simple stack based virtual machine allowing easy creation of custom operands. ✔️
random random_mt Mersenne twister pseudo-random number generator. ✔️
random random_pcg PCG pseudo-random number generator. ✔️
random random_rlcg A reversible pseudo-random number generator. ✔️
random random_romu_32 Romu 32 bit pseudo-random number generator. ✔️
random random_romu_64 Romu 64 bit pseudo-random number generator. ✔️
random random_splitmix Splitmix pseudo-random number generator. ✔️
random random_xorshift Xorshift pseudo-random number generator. ✔️
string static_string Container and macro generator for compile time string templates. ✔️
string static_string_encrypted Compile-time string encryption with runtime decryption to obfuscate strings. ✔️
type enum_name Compile-time enum value name as a string with -fno-rtti. ✔️
type standard Standard type size sanity. 🚧
type type_id Simple run-time-type-information (rtti) with -fno-rtti. ✔️
type type_name Compile-time type name as a string with -fno-rtti. ✔️
utility error Composable error class that can be returned down a call stack. ✔️
utility event Thread safe multi-in/multi-out event/messaging system. ✔️
utility pimpl Statically sized pointer to implementation wrapper. ✔️
utility sizeof_bitfield Macro to get the size in bits of a bitfield. 🚧
vision/camera/model pinhole Pinhole camera model with no distortion. 🚧
vision/consensus/evaluate inlier_support Implementation of a model evaulator that counts the number of inliers under a threshold. 🚧
vision/consensus/evaluate least_median_of_squares Implementation of a model evaulator that calculates the LMedS score. 🚧
vision/consensus/evaluate maximum_likelihood Implementation of a model evaulator that calculates a capped residual sum. 🚧
vision/consensus/sample exhaustive Implementation of an exhaustive dataset sampler. 🚧
vision/consensus/sample random Implementation of a random dataset sampler. 🚧
vision/consensus consensus A generic consensus system composed of templated dataset sampler, model estimator, and model evaluator. 🚧
vision/consensus estimator Interface of a consensus model estimator. 🚧
vision/consensus evaluator Interface of a consensus model evaluator. 🚧
vision/consensus sampler Interface of a consensus dataset sampler. 🚧
vision/feature/angle orb_angle Implemetation of feature angle from the paper "ORB: An efficient alternative to SIFT or SURF". IEEE International Conference on Computer Vision (2011). 🚧
vision/feature/descriptor beblid Implemetation of feature description from the paper "BEBLID: Boosted Efficient Binary Local Image Descriptor". Pattern Recognition Letters (2020). 🚧
vision/feature/descriptor orb Implemetation of feature description from the paper "ORB: An efficient alternative to SIFT or SURF". IEEE International Conference on Computer Vision (2011). 🚧
vision/feature/descriptor rs_brief Implemetation of feature description from the paper "eSLAM: An Energy-Efficient Accelerator for Real-Time ORB-SLAM on FPGA Platform". Design Automation Conference (2019). 🚧
vision/feature/detector fast Implemetation of feature detection from the paper "Faster and better: A machine learning approach to corner detection". IEEE transactions on pattern analysis and machine intelligence (2008). 🚧
vision/feature/distributor square_covering Implemetation of feature distribution from the paper "Efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution". Pattern Recognition Letters (2018). 🚧
vision/feature/refinement exhaustive Exhaustive search method for the best match between two patches. 🚧
vision/feature/refinement golden_section Golden section search method for the best match between two patches. 🚧
vision/feature/refinement quadratic_fitting Quadratic fitting search method for the best match between two patches. 🚧
vision/feature/score fast_score Implemetation of feature quality score from the paper "Faster and better: A machine learning approach to corner detection". IEEE transactions on pattern analysis and machine intelligence (2008). 🚧
vision/feature/score harris_score Implemetation of feature quality score from the paper "A Combined Corner and Edge Detector". Alvey Vision Conference (1988). 🚧
vision/feature/score shi_tomasi_score Implemetation of feature quality score from the paper "Good Features to Track". IEEE Conference on Computer Vision and Pattern Recognition (1994). 🚧
vision/feature binary_descriptor Simple structure to hold a buffer of binary data that describes a feature. 🚧
vision/feature feature Simple structure to hold a the information defining a detected feature. 🚧
vision/image_processing integral Simple integral image processor. 🚧
vision/image_processing sub_pixel_patch Generation of a sub-pixel patch for match refinement. 🚧
vision/match/detector bruteforce Bruteforce feature matcher. 🚧
vision/match/score hamming Simple hamming matching without the popcount instruction. 🚧
vision/match/score ncc Normalised cross correleation between two patches. 🚧
vision/match/score sad Sum of absolute distances between two patches. 🚧
vision/match/score ssd Sum of squared distances between two patches. 🚧
vision/match/score zncc Zero-mean normalised cross correleation between two patches. 🚧
vision/match/score zsad Zero-mean sum of absolute distances between two patches. 🚧
vision/match/score zssd Zero-mean sum of squared distances between two patches. 🚧
vision/match match 💡
vision api An API for a computer vision system that consumes sensor data to perform localisation and mapping. 🚧

License

Copyright (C) 2018-2024 Geoffrey Daniels. https://gpdaniels.com/

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 3 of the License only.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.

About

A collection of useful well-commented, self-contained, simple, and/or interesting C++ classes

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks