GCC Code Coverage Report


Directory: ./
File: firmware/util/containers/static_vector.h
Date: 2025-10-03 00:57:22
Coverage Exec Excl Total
Lines: 94.7% 18 0 19
Functions: 100.0% 5 0 5
Branches: 83.3% 5 0 6
Decisions: 83.3% 5 - 6

Line Branch Decision Exec Source
1 #pragma once
2
3 template <typename T, int TSlots>
4 struct static_vector {
5
6 679 void clear() {
7 679 m_size = 0;
8 679 }
9
10 template <typename TSearch>
11 3031 T* find(const TSearch& search) const {
12
2/2
✓ Branch 0 taken 4431 times.
✓ Branch 1 taken 220 times.
2/2
✓ Decision 'true' taken 4431 times.
✓ Decision 'false' taken 220 times.
4651 for (size_t i = 0; i < m_size; i++) {
13
2/2
✓ Branch 2 taken 2811 times.
✓ Branch 3 taken 1620 times.
2/2
✓ Decision 'true' taken 2811 times.
✓ Decision 'false' taken 1620 times.
4431 if (m_storage[i] == search) {
14 2811 return const_cast<T*>(&m_storage[i]);
15 }
16 }
17
18 220 return nullptr;
19 }
20
21 110 T* add(const T& value) {
22
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 110 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 110 times.
110 if (m_size >= TSlots) {
23 // vector full, discard
24 return nullptr;
25 }
26
27 110 T& location = m_storage[m_size];
28
29 110 location = value;
30 110 m_size++;
31
32 110 return &location;
33 }
34
35 174430 T& get(size_t i) {
36 174430 return m_storage[i];
37 }
38
39 697418 size_t getCount() const {
40 697418 return m_size;
41 }
42
43 private:
44 T m_storage[TSlots];
45 // wow: order of field declaration matters here, gcc glitch?
46 size_t m_size = 0;
47 };
48