MCPcopy Create free account
hub / github.com/RobTillaart/Arduino / begin

Method begin

libraries/BitArray/BitArray.cpp:33–68  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

31
32
33uint8_t BitArray::begin(const uint8_t bits, const uint16_t size)
34{
35 if (bits == 0 || bits > 32)
36 {
37 _error = BA_ELEMENT_SIZE_ERR;
38 return _error;
39 }
40 if ((1UL * bits * size)/8 > (1UL * BA_MAX_SEGMENTS * BA_SEGMENT_SIZE))
41 {
42 _error = BA_SIZE_ERR;
43 return _error;
44 }
45
46 for (uint8_t i = 0; i < BA_MAX_SEGMENTS; i++)
47 {
48 if (_ar[i]) free(_ar[i]);
49 }
50
51 _segments = 0;
52 _bits = bits;
53 _bytes = (_bits * size + 7) / 8;
54 uint16_t b = _bytes;
55 while (b > 0)
56 {
57 _ar[_segments] = (uint8_t*) malloc(min(b, (uint16_t) BA_SEGMENT_SIZE));
58 if (_ar[_segments] == NULL)
59 {
60 _error = BA_NO_MEMORY_ERR;
61 return _error;
62 }
63 b = b - min(b, (uint16_t) BA_SEGMENT_SIZE);
64 _segments++;
65 }
66 _error = BA_OK;
67 return _error;
68}
69
70
71uint32_t BitArray::get(const uint16_t index)

Callers 1

unittestFunction · 0.45

Calls

no outgoing calls

Tested by 1

unittestFunction · 0.36