Skip to content

Category Archives: Projects

Logovod – macro-free allocation-free user-configurable logger front-end for C++

1. Features logovod features Three styles of use — with functions, ostream left shifts, format string Automatic space insertion of functional style Automatic printing of standard containers, tuples, variants, optional Compile or run-time priority levels Compile or run-time sinks Constrained message length Support for wide-char streams Priority levels according to RFC-5424 section-6.2.1

is_constexpr – a template to test if a function is constexpr

C++ allows declaring functions as constexpr. Such functions could be evaluated at compile time and used, for example in if constexpr(...). However, a non-constexpr function in this context is not allowed. So, if we want to write a template, accepting a function and using it in either if constexpr(...) or old plain if(...) we need […]

setof – an iterable set of strongly typed enumerations

This post suggests an implementation of template class setof which facilitates features of a bit set and a forward-iterable container.

C++ switch with textual cases

C++ does not allow using string literals as case values in a switch statement. In modern C++ this restriction can be worked around with constexpr hash values.

any_of<c1, …, c2>(v)

This simple C++17 template implements constexpr any_of for matching a value against a list of constants.

COJSON library for Arduino

COJSON library is also available as Arduino Studio .ZIP library: cojson.zip.

cojson tutorial for C++17

C++17 has simplified use of template parameters. Instructions, given in this tutorial, describes how to define JSON model with cojson::autos templates. Note: GCC 7 or higher is required to compile cojson_autos.hpp !

COJSON Code Generator

cojson v.2 offers an easy start option by using C++ code automatically generated from a JSON sample the user needs to parse or to write. To use this option just open codegen page, load or copy-&-paste your JSON and copy-&-paste or save the generated C++ code. And then build your application with cojson sources .

USB++ a C++14 template library for handy descriptor definition

Overview USB++ (usbplusplus) is a C++14 template library that gives the user a simple and error-prone way for defining USB descriptors, suitable for embedded projects.

VLC multiroom

VLC-multiroom is a shell script that on a Linux-based media computer configures systemd to run multiple VLC Media Player instances for audio playback via all available ALSA sound cards and for web based remote control with a purpose to make the media computer the core of a multiroom audio system.