mirror of
https://github.com/RobTillaart/Arduino.git
synced 2024-10-03 18:09:02 -04:00
.. | ||
.github/workflows | ||
examples | ||
test | ||
.arduino-ci.yml | ||
keywords.txt | ||
library.json | ||
library.properties | ||
LICENSE | ||
nibbleArray.cpp | ||
nibbleArray.h | ||
README.md |
nibbleArray
Arduino library for a compact array of nibbles (4 bit units)
Description
A nibble is a 4 bit element, which can hold a value 0..15 (0..F in HEX). It can be seen as an uint4_t type.
The nibbleArray is an array that stores 2 nibbles in a byte therefor it is twice as small as a normal array.
The current implementation can hold 510 elements. This is due a limitation of the UNO which can alloc max 255 bytes in one malloc() call.
This NIBBLEARRAY_MAXSIZE can be defined compiletime "-D NIBBLEARRAY_MAXSIZE" or one can adjust it in the library if other platforms can allocate more memory.
Interface
The interface of the nibbleArray is straightforward:
- nibbleArray(uint16_t size) constructor
- set(index, value) set a value in the nibbleArray, index must be in range otherwise 0xFF will be returned.
- get(index) get value from index, index must be in range otherwise 0xFF will be returned
- size() returns the size of the array.
- clear() set all elements to 0;
- SetAll(value) set all elements to value (0..15)
Operation
See examples
Todo
- todo's to issues
- implement NIBBLEARRAY_ERROR_VALUE for set and setAll ??
- allow larger allocations for non AVR, how?
- setAll( f() ) - fill the array by calling a function n times?
- align interface with boolArray and bitArray.