asar coverage - build #


src/asar/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
513 of 740, 0 excluded
69.3%
Functions:
83 of 97, 0 excluded
85.6%
Branches:
192 of 408, 0 excluded
47.1%

autoarray.h
Line Branch Exec Source
1 #pragma once
2
3 #include "std-includes.h"
4
5 //Note: T must be a pointer type, or stuff will screw up. To make a pointer last longer than this object, assign nullptr to it and it won't free the old one.
6 template<typename T> class autoptr {
7 T ptr;
8 public:
9 4188396 operator T() const
10 {
11 4188396 return ptr;
12 }
13
14 258 autoptr& operator=(T ptr_)
15 {
16 258 ptr = ptr_;
17 258 return *this;
18 }
19
20 336 autoptr()
21 {
22 336 ptr = nullptr;
23 336 }
24
25 1979436 autoptr(T ptr_)
26 {
27 1979436 ptr = ptr_;
28 1979436 }
29
30 autoptr(const autoptr<T>& ptr_)
31 {
32 ptr = ptr_.ptr;
33 }
34
35 1979752 ~autoptr()
36 {
37
10/12
autoptr<char const* const*>::~autoptr():
✓ Branch 2 → 3 taken 69 times.
✓ Branch 2 → 4 taken 39 times.
autoptr<char const* const*>::~autoptr():
✓ Branch 2 → 3 taken 69 times.
✓ Branch 2 → 4 taken 39 times.
autoptr<char**>::~autoptr():
✓ Branch 2 → 3 taken 985027 times.
✗ Branch 2 → 4 not taken.
autoptr<char**>::~autoptr():
✓ Branch 2 → 3 taken 985032 times.
✗ Branch 2 → 4 not taken.
autoptr<char*>::~autoptr():
✓ Branch 2 → 3 taken 4626 times.
✓ Branch 2 → 4 taken 105 times.
autoptr<char*>::~autoptr():
✓ Branch 2 → 3 taken 4641 times.
✓ Branch 2 → 4 taken 105 times.
1979752 if (ptr) free((void*)ptr);
38 1979752 }
39 };
40
41 template<typename T> class autoarray {
42 public:
43 int count;
44
45 private:
46 T* ptr;
47 int bufferlen;
48
49 T dummy;
50 static const int default_size = 128;
51
52 const T& getconst(int id) const
53 {
54 if (id < 0) return dummy;
55 if (id >= count) return dummy;
56 return ptr[id];
57 }
58
59 2072130 T& get(int id)
60 {
61
12/24
autoarray<ns_pushable>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 120 times.
autoarray<whiletracker>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 1695708 times.
autoarray<chartabledata>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 12 times.
autoarray<warnings_state>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 30 times.
autoarray<string>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 12152 times.
autoarray<pushable>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 1356 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 74936 times.
autoarray<AddressToLineMapping::FileInfo>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 178 times.
autoarray<char const*>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 600 times.
autoarray<bool>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 211536 times.
autoarray<int>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 488 times.
autoarray<unsigned int>::get(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 75014 times.
2072130 if (id < 0) return dummy;
62
14/24
autoarray<ns_pushable>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 120 times.
autoarray<whiletracker>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 1695708 times.
autoarray<chartabledata>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 12 times.
autoarray<warnings_state>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 30 times.
autoarray<string>::get(int):
✓ Branch 4 → 5 taken 4 times.
✓ Branch 4 → 6 taken 12148 times.
autoarray<pushable>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 1356 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::get(int):
✓ Branch 4 → 5 taken 40 times.
✓ Branch 4 → 6 taken 74896 times.
autoarray<AddressToLineMapping::FileInfo>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 178 times.
autoarray<char const*>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 600 times.
autoarray<bool>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 211536 times.
autoarray<int>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 488 times.
autoarray<unsigned int>::get(int):
✗ Branch 4 → 5 not taken.
✓ Branch 4 → 6 taken 75014 times.
2072130 if (id >= bufferlen - 4)
63 {
64 44 resize(id);
65 }
66
22/24
autoarray<ns_pushable>::get(int):
✓ Branch 6 → 7 taken 6 times.
✓ Branch 6 → 15 taken 114 times.
autoarray<whiletracker>::get(int):
✓ Branch 6 → 7 taken 68 times.
✓ Branch 6 → 15 taken 1695640 times.
autoarray<chartabledata>::get(int):
✓ Branch 6 → 7 taken 6 times.
✓ Branch 6 → 14 taken 6 times.
autoarray<warnings_state>::get(int):
✓ Branch 6 → 7 taken 18 times.
✓ Branch 6 → 14 taken 12 times.
autoarray<string>::get(int):
✓ Branch 6 → 7 taken 1684 times.
✓ Branch 6 → 15 taken 10468 times.
autoarray<pushable>::get(int):
✓ Branch 6 → 7 taken 30 times.
✓ Branch 6 → 14 taken 1326 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::get(int):
✓ Branch 6 → 7 taken 74936 times.
✗ Branch 6 → 14 not taken.
autoarray<AddressToLineMapping::FileInfo>::get(int):
✓ Branch 6 → 7 taken 178 times.
✗ Branch 6 → 15 not taken.
autoarray<char const*>::get(int):
✓ Branch 6 → 7 taken 400 times.
✓ Branch 6 → 14 taken 200 times.
autoarray<bool>::get(int):
✓ Branch 6 → 7 taken 32 times.
✓ Branch 6 → 14 taken 211504 times.
autoarray<int>::get(int):
✓ Branch 6 → 7 taken 48 times.
✓ Branch 6 → 14 taken 440 times.
autoarray<unsigned int>::get(int):
✓ Branch 6 → 7 taken 178 times.
✓ Branch 6 → 14 taken 74836 times.
2072130 if (id >= count)
67 {
68
36/48
autoarray<ns_pushable>::get(int):
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 6 times.
✓ Branch 13 → 8 taken 6 times.
✓ Branch 13 → 14 taken 6 times.
autoarray<whiletracker>::get(int):
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 68 times.
✓ Branch 13 → 8 taken 68 times.
✓ Branch 13 → 14 taken 68 times.
autoarray<chartabledata>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 6 times.
✓ Branch 12 → 8 taken 6 times.
✓ Branch 12 → 13 taken 6 times.
autoarray<warnings_state>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 18 times.
✓ Branch 12 → 8 taken 18 times.
✓ Branch 12 → 13 taken 18 times.
autoarray<string>::get(int):
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 1684 times.
✓ Branch 13 → 8 taken 1684 times.
✓ Branch 13 → 14 taken 1684 times.
autoarray<pushable>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 30 times.
✓ Branch 12 → 8 taken 30 times.
✓ Branch 12 → 13 taken 30 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 74936 times.
✓ Branch 12 → 8 taken 74936 times.
✓ Branch 12 → 13 taken 74936 times.
autoarray<AddressToLineMapping::FileInfo>::get(int):
✗ Branch 10 → 11 not taken.
✓ Branch 10 → 12 taken 178 times.
✓ Branch 13 → 8 taken 178 times.
✓ Branch 13 → 14 taken 178 times.
autoarray<char const*>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 400 times.
✓ Branch 12 → 8 taken 400 times.
✓ Branch 12 → 13 taken 400 times.
autoarray<bool>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 58 times.
✓ Branch 12 → 8 taken 58 times.
✓ Branch 12 → 13 taken 32 times.
autoarray<int>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 94 times.
✓ Branch 12 → 8 taken 94 times.
✓ Branch 12 → 13 taken 48 times.
autoarray<unsigned int>::get(int):
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 11 taken 178 times.
✓ Branch 12 → 8 taken 178 times.
✓ Branch 12 → 13 taken 178 times.
155240 for (int i = count;i <= id;i++) new(ptr + i) T();
69 77584 count = id + 1;
70 }
71 2072130 return ptr[id];
72 }
73
74 44 void resize(int size)
75 {
76 44 int oldlen = count;
77
4/24
autoarray<ns_pushable>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<whiletracker>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<chartabledata>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<warnings_state>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<string>::resize(int):
✓ Branch 4 → 3 taken 4 times.
✓ Branch 4 → 5 taken 4 times.
autoarray<pushable>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<AddressToLineMapping::AddrToLineInfo>::resize(int):
✓ Branch 4 → 3 taken 40 times.
✓ Branch 4 → 5 taken 40 times.
autoarray<AddressToLineMapping::FileInfo>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<char const*>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<bool>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<int>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<unsigned int>::resize(int):
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
88 while (bufferlen <= size + 4) bufferlen *= 2;
78 44 T *old = ptr;
79 44 ptr = (T*)malloc(sizeof(T)*(size_t)bufferlen);
80
4/24
autoarray<ns_pushable>::resize(int):
✗ Branch 12 → 6 not taken.
✗ Branch 12 → 13 not taken.
autoarray<whiletracker>::resize(int):
✗ Branch 12 → 6 not taken.
✗ Branch 12 → 13 not taken.
autoarray<chartabledata>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
autoarray<warnings_state>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
autoarray<string>::resize(int):
✓ Branch 12 → 6 taken 16 times.
✓ Branch 12 → 13 taken 4 times.
autoarray<pushable>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
autoarray<AddressToLineMapping::AddrToLineInfo>::resize(int):
✓ Branch 10 → 6 taken 135264 times.
✓ Branch 10 → 11 taken 40 times.
autoarray<AddressToLineMapping::FileInfo>::resize(int):
✗ Branch 12 → 6 not taken.
✗ Branch 12 → 13 not taken.
autoarray<char const*>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
autoarray<bool>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
autoarray<int>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
autoarray<unsigned int>::resize(int):
✗ Branch 10 → 6 not taken.
✗ Branch 10 → 11 not taken.
135324 for(int i = 0; i < oldlen; i++){
81
2/24
autoarray<ns_pushable>::resize(int):
✗ Branch 8 → 9 not taken.
✗ Branch 8 → 10 not taken.
autoarray<whiletracker>::resize(int):
✗ Branch 8 → 9 not taken.
✗ Branch 8 → 10 not taken.
autoarray<chartabledata>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
autoarray<warnings_state>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
autoarray<string>::resize(int):
✗ Branch 8 → 9 not taken.
✓ Branch 8 → 10 taken 16 times.
autoarray<pushable>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
autoarray<AddressToLineMapping::AddrToLineInfo>::resize(int):
✗ Branch 7 → 8 not taken.
✓ Branch 7 → 9 taken 135264 times.
autoarray<AddressToLineMapping::FileInfo>::resize(int):
✗ Branch 8 → 9 not taken.
✗ Branch 8 → 10 not taken.
autoarray<char const*>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
autoarray<bool>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
autoarray<int>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
autoarray<unsigned int>::resize(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 9 not taken.
135280 new(ptr + i) T();
82 135280 ptr[i] = static_cast<T &&>(old[i]);
83 }
84 44 free(old);
85 44 memset(ptr + oldlen, 0, (size_t)(bufferlen - oldlen) * sizeof(T));
86 44 }
87
88 public:
89
90 7152 void reset(int keep = 0)
91 {
92
13/18
autoarray<ns_pushable>::reset(int):
✓ Branch 2 → 3 taken 588 times.
✓ Branch 2 → 4 taken 4 times.
autoarray<warnings_state>::reset(int):
✗ Branch 2 → 3 not taken.
✓ Branch 2 → 4 taken 6 times.
autoarray<writtenblockdata>::reset(int):
✓ Branch 2 → 3 taken 200 times.
✗ Branch 2 → 4 not taken.
autoarray<string>::reset(int):
✓ Branch 2 → 3 taken 2124 times.
✓ Branch 2 → 4 taken 678 times.
autoarray<pushable>::reset(int):
✓ Branch 2 → 3 taken 572 times.
✓ Branch 2 → 4 taken 20 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::reset(int):
✓ Branch 2 → 3 taken 592 times.
✗ Branch 2 → 4 not taken.
autoarray<AddressToLineMapping::FileInfo>::reset(int):
✓ Branch 2 → 3 taken 592 times.
✗ Branch 2 → 4 not taken.
autoarray<int>::reset(int):
✓ Branch 2 → 3 taken 1164 times.
✓ Branch 2 → 4 taken 20 times.
autoarray<unsigned int>::reset(int):
✓ Branch 2 → 3 taken 592 times.
✗ Branch 2 → 4 not taken.
7152 if (keep >= count) return;
93
10/18
autoarray<ns_pushable>::reset(int):
✓ Branch 7 → 5 taken 4 times.
✓ Branch 7 → 8 taken 4 times.
autoarray<warnings_state>::reset(int):
✓ Branch 6 → 5 taken 6 times.
✓ Branch 6 → 7 taken 6 times.
autoarray<writtenblockdata>::reset(int):
✗ Branch 6 → 5 not taken.
✗ Branch 6 → 7 not taken.
autoarray<string>::reset(int):
✓ Branch 7 → 5 taken 938 times.
✓ Branch 7 → 8 taken 678 times.
autoarray<pushable>::reset(int):
✓ Branch 6 → 5 taken 20 times.
✓ Branch 6 → 7 taken 20 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::reset(int):
✗ Branch 6 → 5 not taken.
✗ Branch 6 → 7 not taken.
autoarray<AddressToLineMapping::FileInfo>::reset(int):
✗ Branch 7 → 5 not taken.
✗ Branch 7 → 8 not taken.
autoarray<int>::reset(int):
✓ Branch 6 → 5 taken 40 times.
✓ Branch 6 → 7 taken 20 times.
autoarray<unsigned int>::reset(int):
✗ Branch 6 → 5 not taken.
✗ Branch 6 → 7 not taken.
1736 for (int i = keep;i < count;i++) ptr[i].~T();
94 728 memset(ptr + keep, 0, (size_t)(count - keep) * sizeof(T));
95
5/18
autoarray<ns_pushable>::reset(int):
✓ Branch 8 → 9 taken 4 times.
✗ Branch 8 → 22 not taken.
autoarray<warnings_state>::reset(int):
✓ Branch 7 → 8 taken 6 times.
✗ Branch 7 → 19 not taken.
autoarray<writtenblockdata>::reset(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 19 not taken.
autoarray<string>::reset(int):
✓ Branch 8 → 9 taken 678 times.
✗ Branch 8 → 22 not taken.
autoarray<pushable>::reset(int):
✓ Branch 7 → 8 taken 20 times.
✗ Branch 7 → 19 not taken.
autoarray<AddressToLineMapping::AddrToLineInfo>::reset(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 19 not taken.
autoarray<AddressToLineMapping::FileInfo>::reset(int):
✗ Branch 8 → 9 not taken.
✗ Branch 8 → 22 not taken.
autoarray<int>::reset(int):
✓ Branch 7 → 8 taken 20 times.
✗ Branch 7 → 19 not taken.
autoarray<unsigned int>::reset(int):
✗ Branch 7 → 8 not taken.
✗ Branch 7 → 19 not taken.
728 if (keep < bufferlen / 2)
96 {
97
15/36
autoarray<ns_pushable>::reset(int):
✓ Branch 11 → 12 taken 12 times.
✗ Branch 11 → 13 not taken.
✓ Branch 12 → 10 taken 8 times.
✓ Branch 12 → 13 taken 4 times.
autoarray<warnings_state>::reset(int):
✓ Branch 10 → 11 taken 14 times.
✗ Branch 10 → 12 not taken.
✓ Branch 11 → 9 taken 8 times.
✓ Branch 11 → 12 taken 6 times.
autoarray<writtenblockdata>::reset(int):
✗ Branch 10 → 11 not taken.
✗ Branch 10 → 12 not taken.
✗ Branch 11 → 9 not taken.
✗ Branch 11 → 12 not taken.
autoarray<string>::reset(int):
✓ Branch 11 → 12 taken 1824 times.
✗ Branch 11 → 13 not taken.
✓ Branch 12 → 10 taken 1146 times.
✓ Branch 12 → 13 taken 678 times.
autoarray<pushable>::reset(int):
✓ Branch 10 → 11 taken 60 times.
✗ Branch 10 → 12 not taken.
✓ Branch 11 → 9 taken 40 times.
✓ Branch 11 → 12 taken 20 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::reset(int):
✗ Branch 10 → 11 not taken.
✗ Branch 10 → 12 not taken.
✗ Branch 11 → 9 not taken.
✗ Branch 11 → 12 not taken.
autoarray<AddressToLineMapping::FileInfo>::reset(int):
✗ Branch 11 → 12 not taken.
✗ Branch 11 → 13 not taken.
✗ Branch 12 → 10 not taken.
✗ Branch 12 → 13 not taken.
autoarray<int>::reset(int):
✓ Branch 10 → 11 taken 60 times.
✗ Branch 10 → 12 not taken.
✓ Branch 11 → 9 taken 40 times.
✓ Branch 11 → 12 taken 20 times.
autoarray<unsigned int>::reset(int):
✗ Branch 10 → 11 not taken.
✗ Branch 10 → 12 not taken.
✗ Branch 11 → 9 not taken.
✗ Branch 11 → 12 not taken.
1970 while (keep < bufferlen / 2 && bufferlen>8) bufferlen /= 2;
98 728 T *old = ptr;
99 728 ptr = (T*)malloc(sizeof(T)*(size_t)bufferlen);
100
6/18
autoarray<ns_pushable>::reset(int):
✗ Branch 20 → 14 not taken.
✓ Branch 20 → 21 taken 4 times.
autoarray<warnings_state>::reset(int):
✗ Branch 17 → 13 not taken.
✓ Branch 17 → 18 taken 6 times.
autoarray<writtenblockdata>::reset(int):
✗ Branch 17 → 13 not taken.
✗ Branch 17 → 18 not taken.
autoarray<string>::reset(int):
✓ Branch 20 → 14 taken 6 times.
✓ Branch 20 → 21 taken 678 times.
autoarray<pushable>::reset(int):
✗ Branch 17 → 13 not taken.
✓ Branch 17 → 18 taken 20 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::reset(int):
✗ Branch 17 → 13 not taken.
✗ Branch 17 → 18 not taken.
autoarray<AddressToLineMapping::FileInfo>::reset(int):
✗ Branch 20 → 14 not taken.
✗ Branch 20 → 21 not taken.
autoarray<int>::reset(int):
✗ Branch 17 → 13 not taken.
✓ Branch 17 → 18 taken 20 times.
autoarray<unsigned int>::reset(int):
✗ Branch 17 → 13 not taken.
✗ Branch 17 → 18 not taken.
734 for(int i = 0; i < keep; i++){
101
1/18
autoarray<ns_pushable>::reset(int):
✗ Branch 16 → 17 not taken.
✗ Branch 16 → 18 not taken.
autoarray<warnings_state>::reset(int):
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
autoarray<writtenblockdata>::reset(int):
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
autoarray<string>::reset(int):
✗ Branch 16 → 17 not taken.
✓ Branch 16 → 18 taken 6 times.
autoarray<pushable>::reset(int):
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
autoarray<AddressToLineMapping::AddrToLineInfo>::reset(int):
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
autoarray<AddressToLineMapping::FileInfo>::reset(int):
✗ Branch 16 → 17 not taken.
✗ Branch 16 → 18 not taken.
autoarray<int>::reset(int):
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
autoarray<unsigned int>::reset(int):
✗ Branch 14 → 15 not taken.
✗ Branch 14 → 16 not taken.
6 new(ptr + i) T();
102 6 ptr[i] = static_cast<T &&>(old[i]);
103 }
104 728 free(old);
105
106 }
107 728 count = keep;
108 }
109
110 1995870 T& operator[](int id)
111 {
112 1995870 return get(id);
113 }
114
115 const T& operator[](int id) const
116 {
117 return getconst(id);
118 }
119
120 operator T*()
121 {
122 return ptr;
123 }
124
125 operator const T*() const
126 {
127 return ptr;
128 }
129
130 76260 T& append(const T& item)
131 {
132 76260 return (get(count) = item);
133 }
134
135 //insert is not safe for non pod types!!!
136 void insert(int pos)
137 {
138 if (pos<0 || pos>count) return;
139 if (count >= bufferlen - 4)
140 {
141 resize(count);
142 }
143 memmove(ptr + pos + 1, ptr + pos, sizeof(T)*(count - pos));
144 memset(ptr + pos, 0, sizeof(T));
145 new(ptr + pos) T();
146 count++;
147 }
148
149 void insert(int pos, const T& item)
150 {
151 if (pos<0 || pos>count) return;
152 if (count >= bufferlen - 4)
153 {
154 resize(count);
155 }
156 memmove(ptr + pos + 1, ptr + pos, sizeof(T)*(size_t)(count - pos));
157 memset(ptr + pos, 0, sizeof(T));
158 new(ptr + pos) T();
159 ptr[pos] = item;
160 count++;
161 }
162
163 54 void remove(int id)
164 {
165
6/12
autoarray<chartabledata>::remove(int):
✓ Branch 2 → 3 taken 6 times.
✗ Branch 2 → 4 not taken.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 5 taken 6 times.
autoarray<warnings_state>::remove(int):
✓ Branch 2 → 3 taken 12 times.
✗ Branch 2 → 4 not taken.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 5 taken 12 times.
autoarray<string>::remove(int):
✓ Branch 2 → 3 taken 36 times.
✗ Branch 2 → 4 not taken.
✗ Branch 3 → 4 not taken.
✓ Branch 3 → 5 taken 36 times.
54 if (id < 0 || id >= count) return;
166 54 count--;
167 54 ptr[id].~T();
168
3/6
autoarray<chartabledata>::remove(int):
✗ Branch 7 → 6 not taken.
✓ Branch 7 → 8 taken 6 times.
autoarray<warnings_state>::remove(int):
✗ Branch 7 → 6 not taken.
✓ Branch 7 → 8 taken 12 times.
autoarray<string>::remove(int):
✗ Branch 9 → 7 not taken.
✓ Branch 9 → 10 taken 36 times.
54 for(int i = id; i < count; i++){
169 ptr[i] = static_cast<T &&>(ptr[i+1]);
170 }
171 }
172
173 4700 autoarray()
174 2092 {
175 4700 ptr = (T*)malloc(sizeof(T) * default_size);
176 4700 memset(ptr, 0, default_size*sizeof(T));
177 4700 bufferlen = default_size;
178 4700 count = 0;
179 4700 }
180
181 2999 ~autoarray()
182 {
183
29/52
autoarray<ns_pushable>::~autoarray():
✗ Branch 5 → 3 not taken.
✗ Branch 5 → 6 not taken.
autoarray<ns_pushable>::~autoarray():
✓ Branch 5 → 3 taken 1 time.
✓ Branch 5 → 6 taken 100 times.
autoarray<whiletracker>::~autoarray():
✗ Branch 5 → 3 not taken.
✗ Branch 5 → 6 not taken.
autoarray<whiletracker>::~autoarray():
✓ Branch 5 → 3 taken 34 times.
✓ Branch 5 → 6 taken 100 times.
autoarray<chartabledata>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<chartabledata>::~autoarray():
✗ Branch 4 → 3 not taken.
✓ Branch 4 → 5 taken 100 times.
autoarray<warnings_state>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<warnings_state>::~autoarray():
✗ Branch 4 → 3 not taken.
✓ Branch 4 → 5 taken 100 times.
autoarray<writtenblockdata>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<writtenblockdata>::~autoarray():
✗ Branch 4 → 3 not taken.
✓ Branch 4 → 5 taken 100 times.
autoarray<string>::~autoarray():
✓ Branch 5 → 3 taken 299 times.
✓ Branch 5 → 6 taken 345 times.
autoarray<string>::~autoarray():
✓ Branch 5 → 3 taken 355 times.
✓ Branch 5 → 6 taken 746 times.
autoarray<pushable>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<pushable>::~autoarray():
✓ Branch 4 → 3 taken 5 times.
✓ Branch 4 → 5 taken 100 times.
autoarray<AddressToLineMapping::AddrToLineInfo>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<AddressToLineMapping::AddrToLineInfo>::~autoarray():
✓ Branch 4 → 3 taken 37468 times.
✓ Branch 4 → 5 taken 100 times.
autoarray<AddressToLineMapping::FileInfo>::~autoarray():
✗ Branch 5 → 3 not taken.
✗ Branch 5 → 6 not taken.
autoarray<AddressToLineMapping::FileInfo>::~autoarray():
✓ Branch 5 → 3 taken 89 times.
✓ Branch 5 → 6 taken 100 times.
autoarray<char const*>::~autoarray():
✓ Branch 4 → 3 taken 200 times.
✓ Branch 4 → 5 taken 100 times.
autoarray<char const*>::~autoarray():
✓ Branch 4 → 3 taken 200 times.
✓ Branch 4 → 5 taken 100 times.
autoarray<bool>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<bool>::~autoarray():
✓ Branch 4 → 3 taken 29 times.
✓ Branch 4 → 5 taken 100 times.
autoarray<int>::~autoarray():
✓ Branch 4 → 3 taken 12 times.
✓ Branch 4 → 5 taken 204 times.
autoarray<int>::~autoarray():
✓ Branch 4 → 3 taken 27 times.
✓ Branch 4 → 5 taken 504 times.
autoarray<unsigned int>::~autoarray():
✗ Branch 4 → 3 not taken.
✗ Branch 4 → 5 not taken.
autoarray<unsigned int>::~autoarray():
✓ Branch 4 → 3 taken 89 times.
✓ Branch 4 → 5 taken 100 times.
41807 for (int i = 0;i < count;i++) ptr[i].~T();
184 2999 free(ptr);
185 2999 }
186
187 #ifdef SERIALIZER
188 void serialize(serializer& s)
189 {
190 if (s.serializing) s(count);
191 else
192 {
193 int i;
194 s(i);
195 get(i - 1);
196 }
197 for (int i = 0;i < count;i++) s(ptr[i]);
198 }
199 #endif
200 #define SERIALIZER_BANNED
201 };
202