A C++ template library for embedded applications
MIT licensed
Designed and
maintained by
John Wellbelove
algorithm.h
Algorithms reverse engineered from the STL + ETL extended versions
alignment.h
Allows alignment of data structures.
binary.h Utility functions for manipulating binary numbers.
cyclic_value.h
Define a value that cycles between two limits.
debounce.h A signal and key debouncer
debug_count.h A counter for container debugging
endian.h
Constant definitions and endianness test.
enum_type.h
A smart enum utility.
error_handler.h
The hander for errors. For adding error logging.
exception.h
The base class for all ETL errors.
fixed_iterator.h An iterator that lives at a fixed address. Increments and decrements are null operations.
function.h
A callback wrapper for free and member functions.
functional.h Reverse engineered functional classes from C++ 11.
initializer_list Includes or defines std::initializer_list.
instance_count.h Counts instances of classes.
integral_limits.h A set of classes similar to numeric_limits, but completely available at compile time.
io_port.h A set of templates for building interface classes to memory mapped hardware ports.
iterator.h Helper structures for iterator tags.
largest.h Allows the largest type or largest alignment to be determined at compile time.
mem_cast.h Wraps a memory to allow easier casting to types.
memory.h Low level memory copy/initialisation algorithms,
nullptr.h Reverse engineered C++ 11 nullptr.
numeric.h Reverse engineered numeric classes from C++ 11.
parameter_type.h Allows the method of passing a parameter to be determined by the type.
random.h Pseudo Random Number Generators.
smallest.h Allows the smallest type or smallest type that can contain N bits to be determined, at compile time.
static_assert.h Static assert macro.
type_def.h Typesafe typedefs
type_traits.h Reverse engineered types traits classes from C++ 11.
ETL Traits etl::traits namespace containing traits mirroring many ETL macros

Utilities

This group is the catch-all for all other templates.
As well as various generally useful templates, there is some functionality reverse engineered from
the C++ 11 specification.