Skip to content

Author Archives: Eugene

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 .

Enabling C++ for PSoC projects

PSoC — Programmable System on Chip - is an ARM Cortex based family of MCUs (wiki) by Cypress Semiconductor. Cypress offers developers a dedicated IDE - PSoC Creator. Unfortunately, PSoC Creator, (as of version 4.2) does not support C++, despite the underlying GGC Toolchain (arm-none-eabi-gcc-5.4) has C++ support at descent level. PSoC Creator has an […]

Building OpenSplice DDS for LinkIt Smart 7688 (and other OpenWRT on MIPS)

This post describes how to build OpenSplice DDS for LinkIt Smart 7688 and other OpenWRT targets

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.