Projects
NanoRange (2018-present)
GitHub: github.com/tcbrindle/nanorange
NanoRange is a C++17 implementation of the new “ranges” functionality in the C++20 standard library. Compatible with all major compilers, it includes all of the new concepts (implemented via template metaprogramming), algorithms, range adaptors and almost everything else. It’s available either as a single-header drop-in replacement for <algorithm>
, or via the Conan or vcpkg package managers.
span.hpp (2018-present)
GitHub: github.com/tcbrindle/span.hpp
A C++11-compatible implementation of C++20’s new std::span type. It’s a single header you can drop into your project, and features optional bounds-checking which is customisable via macros.
raytracer.hpp (2018)
GitHub: github.com/tcbrindle/raytracer.hpp
A fun weekend project, this is a C++17 reimplementation of a simple raytracer example I found online, with the twist that it can operate entirely at compile-time via constexpr
functions. Somehow briefly ended up as the top item on Hacker News, a year after I wrote it.
numeris_romanis (2019)
GitHub: github.com/tcbrindle/numeris_romanis
C++ has long lacked the ability to embed movie copyright dates in source code, and perform calculations with them. Numeris Romanis rectifies this by offering roman numeral support for C++17 and later. Approved by Tim Sweeney.
libsudoku (2017)
GitHub: github.com/tcbrindle/libsudoku
A small, fast library for solving sudoku puzzles, implemented using Range-V3. Features both C++ and C APIs.
utf-ranges (2017)
GitHub: github.com/tcbrindle/utf_ranges
A collection of views and algorithms for dealing with Unicode text using Range-V3
OggConvert (2007-2010)
GitHub: github.com/tcbrindle/oggconvert
A GTK/Python GUI for converting media files to Ogg Vorbis/Theora formats written back in 2007. Moderately popular back in the day, it’s still available in some Linux distros, and still has its own Wikipedia entry.