2014-12-09 16:06:17 +00:00
test Added parenthese around casts 2014-12-09 15:24:17 +00:00
.gitattributes namespace elt to etl 2014-10-26 16:39:14 +00:00
.gitignore Removed VS2010 entries,added Keil entries 2014-12-08 20:08:31 +00:00
algorithm.h Added C++ 11 algorithms 2014-12-08 20:08:55 +00:00
alignment.h Added alignment template helpers 2014-12-08 20:09:31 +00:00
array.h Changed comments 2014-12-09 15:22:24 +00:00
bitset.h Removed inline keywords, added iterators 2014-12-08 20:23:27 +00:00
checksum.h Added checksum template 2014-12-08 20:09:51 +00:00
container.h Added cbegin, cend, rbegin, rend, crbegin, crend 2014-12-08 20:24:41 +00:00
crc8_ccitt.cpp Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc8_ccitt.h Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc16_ccitt.cpp Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc16_ccitt.h Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc16_kermit.cpp Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc16_kermit.h Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc16.cpp Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc16.h Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc32.cpp Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc32.h Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc64_ecma.cpp Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
crc64_ecma.h Changed to stdint.h, add functions return void. 2014-12-08 20:11:14 +00:00
cyclic_value.h Changed to stddef.h 2014-12-08 20:16:55 +00:00
deque_base.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
deque.h Changed to stddef.h 2014-12-08 20:16:55 +00:00
Doxyfile Changed version to 1.0 2014-12-09 16:06:01 +00:00
doxygen.h Changed group name 2014-12-08 20:22:49 +00:00
endian.h Changed test word from static to member. 2014-12-09 15:22:53 +00:00
enum_type.h Removed 'inline' 2014-12-08 20:32:05 +00:00
error_handler.cpp Added error handler functionality 2014-12-08 20:10:13 +00:00
error_handler.h Added error handler functionality 2014-12-08 20:10:13 +00:00
etl.jpg Added project logo 2014-10-31 15:55:13 +00:00
exception.h Updates for Code::Blocks and CodeLite 2014-11-05 17:41:17 +00:00
factorial.h Added maths constants 2014-12-08 20:12:06 +00:00
fibonacci.h Added maths constants 2014-12-08 20:12:06 +00:00
fnv_1.h Added FNV-1 hash algorithm 2014-12-08 20:14:36 +00:00
forward_list_base.h Changed to stddef.h 2014-12-08 20:13:24 +00:00
forward_list.h Changed to stddef.h 2014-12-08 20:13:24 +00:00
function.h Added 'virtual' to operator() functions 2014-12-08 20:31:40 +00:00
functional.h Minor changes 2014-12-08 20:14:16 +00:00
hash.h Added C++ 11 style hash support 2014-12-08 20:14:59 +00:00
ideque.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
iforward_list.h Changed to stddef.h 2014-12-08 20:13:24 +00:00
ilist.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
instance_count.h Counts instances of classes 2014-12-08 20:15:16 +00:00
integral_limits.h Changed to stddef.h 2014-12-08 20:17:14 +00:00
ipool.h Object pool 2014-12-08 20:15:44 +00:00
iqueue.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
istack.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
ivector.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
largest.h Changed comment 2014-12-08 20:22:18 +00:00
LICENSE Initial commit 2014-10-16 12:12:24 +01:00
list_base.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
list.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
log.h Changed to stddef.h 2014-12-08 20:22:01 +00:00
nullptr.h Changed conditional macros 2014-12-08 20:26:34 +00:00
numeric.h Updates for Code::Blocks and CodeLite 2014-11-05 17:41:17 +00:00
observer.h Changed ETL_USE_EXCEPTIONS to ETL_THROW_EXCEPTIONS 2014-12-08 20:30:42 +00:00
parameter_type.h Made default bool template value 2014-11-21 17:08:09 +00:00
pool.h Added doxygen tags 2014-12-09 16:06:17 +00:00
power.h Added maths constants 2014-12-08 20:12:06 +00:00
queue_base.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
queue.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
README.md Added more text 2014-12-08 20:24:56 +00:00
smallest.h Changed to stdint.h 2014-12-08 20:25:08 +00:00
stack_base.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
stack.h Added error_handler functionality 2014-12-08 20:32:42 +00:00
static_assert.h Modified static assert macros 2014-12-08 20:30:12 +00:00
type_traits.h Changed to stddef.h, removed std:: from nullptr 2014-12-08 20:19:25 +00:00
variant.h Added doxygen tags 2014-12-09 16:06:17 +00:00
vector_base.h Changed to stddef.h 2014-12-08 20:29:36 +00:00
vector.h Changed to stddef.h 2014-12-08 20:19:01 +00:00
visitor.h Updates for Code::Blocks and CodeLite 2014-11-05 17:41:17 +00:00

Embedded Template Library (ETL)

Motivation

C++ is a great language to use for embedded applications and templates are a powerful aspect. The standard library can offer a great deal of well tested functionality, but there are some parts of the standard library that do not fit well with deterministic behaviour and limited resource requirements. These limitations usually preclude the use of dynamically allocated memory and open ended sized containers.

What is needed is a template library where the user can declare the size, or maximum size of any object upfront. Most embedded compilers do not currently support the standard beyond C++ 03, therefore excluding the programmer from using the enhanced features of the later library.

This is what the ETL attempts to achieve.

Summary

The ETL is not designed to completely replace the STL, but complement it.
Its design objective covers three areas.

  • Create a set of containers where the size or maximum size is determined at compile time. These containers are direct equivalents of those supplied in the STL.
  • Be compatible with C++ 03 but implement as many of the C++ 11 additions as possible.
  • Add other useful components that are not present in the standard library.

The embedded template library has been designed for lower resource embedded applications. It contains a set of containers, algorithms and utilities, some of which emulate parts of the STL. There is no dynamic memory allocation. The library makes no use of the heap. All of the containers have a fixed capacity allowing all memory allocation to be determined at compile time. The library is intended for any compiler that supports C++ 03.

Main features:

  • No dynamic memory allocation.
  • A set of fixed capacity containers. (stack, queue, list, forward_list, vector, deque)
  • Templated compile time constants.
  • Templated design pattern base classes (Visitor, Observer)
  • Reverse engineered C++ 0x11 features (type traits, algorithms, containers etc.)
  • Smart enumerations
  • 8, 16, 32 & 64 bit CRC calculations
  • Many utilities for template support.
  • Variants (a type that can store many types in a type-safe interface)
  • Optional exceptions on errors.