GY-63_MS5611/libraries/BoolArray/README.md
2023-02-08 17:14:17 +01:00

3.5 KiB

Arduino CI Arduino-lint JSON check License: MIT GitHub release

BoolArray

Arduino library for compact array of booleans of max size 2000 (UNO).

Description

The BoolArray class allows the user to instantiate an array of booleans, allocating only one bit per element. For example one could create an array of 1000 throws with a coin. Normally this would take 1000 bytes, but BoolArray can store one throw in 1 bit, so 1000 throws in approx 125 bytes.

The class is optimized for storage by packing 8 elements of the array in one byte. You need to check if your application needs more performance than this library can deliver.

Notes

The BoolArray class allocates dynamic memory. The BOOLARRAY_MAXSIZE is set to 2000, this was chosen as malloc() can only allocate 255 bytes in one call on an UNO. This is not checked with the recent versions of the IDE any more.

The library is tested on AVR architecture only.

The BitArray library is one from a set of three:

BoolArray is faster than BitArray as it only supports single bits and does not need to merge parts of different bytes to read/write a value. However BoolArray currently only supports 2000 bits while BitArray can support more.

Interface

#include "BoolArray.h"

Constructor

  • BoolArray() Constructor
  • ~BoolArray() Destructor
  • uint8_t begin(uint16_t size) dynamically allocates size elements (8 bools in one byte). Returns BOOLARRAY_OK on success.

Meta

  • uint16_t size() returns number of bool elements.
  • uint16_t memory() returns number of bytes used.

Base

  • uint8_t setAll(uint8_t value) Sets all elements to false (0) or true (all other values).
  • uint8_t clear() Sets all elements to false.
  • uint8_t get(uint16_t index) Return 0 or 1 OR an error value which can be interpreted as true. So one need to check these carefully.
  • uint8_t set(uint16_t index, uint8_t value) Set the element to false (0) or true (all other values).
  • uint8_t toggle(uint16_t index) Toggles element at index. Returns BOOLARRAY_OK on success.

Future

Must

  • improve documentation
    • add performance figures (UNO + ESP32)

Should

  • performance test on ESP32
  • performance for clear() dedicated loop vs setAll(0) call
  • performance intern 16 bit iso 8 bit. (0.3.0)
    • faster on UNO
    • does allocation work as it should?

Could

  • begin()
    • if (_size == size) no need to reallocate...
  • update examples.
  • boolArray32() class
    • begin(uint32_t size);

Wont