GCC Code Coverage Report


Directory: ./
File: firmware/util/containers/static_vector.h
Date: 2025-11-16 14:52:24
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 686 void clear() {
7 686 m_size = 0;
8 686 }
9
10 template <typename TSearch>
11 4671 T* find(const TSearch& search) const {
12
2/2
✓ Branch 0 taken 9407 times.
✓ Branch 1 taken 308 times.
2/2
✓ Decision 'true' taken 9407 times.
✓ Decision 'false' taken 308 times.
9715 for (size_t i = 0; i < m_size; i++) {
13
2/2
✓ Branch 2 taken 4363 times.
✓ Branch 3 taken 5044 times.
2/2
✓ Decision 'true' taken 4363 times.
✓ Decision 'false' taken 5044 times.
9407 if (m_storage[i] == search) {
14 4363 return const_cast<T*>(&m_storage[i]);
15 }
16 }
17
18 308 return nullptr;
19 }
20
21 154 T* add(const T& value) {
22
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 154 times.
1/2
✗ Decision 'true' not taken.
✓ Decision 'false' taken 154 times.
154 if (m_size >= TSlots) {
23 // vector full, discard
24 return nullptr;
25 }
26
27 154 T& location = m_storage[m_size];
28
29 154 location = value;
30 154 m_size++;
31
32 154 return &location;
33 }
34
35 281707 T& get(size_t i) {
36 281707 return m_storage[i];
37 }
38
39 812820 size_t getCount() const {
40 812820 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