INSTINCT Code Coverage Report


Directory: src/
File: Navigation/GNSS/Core/Code.cpp
Date: 2025-11-25 23:34:18
Exec Total Coverage
Lines: 419 997 42.0%
Functions: 22 63 34.9%
Branches: 1205 4381 27.5%

Line Branch Exec Source
1 // This file is part of INSTINCT, the INS Toolkit for Integrated
2 // Navigation Concepts and Training by the Institute of Navigation of
3 // the University of Stuttgart, Germany.
4 //
5 // This Source Code Form is subject to the terms of the Mozilla Public
6 // License, v. 2.0. If a copy of the MPL was not distributed with this
7 // file, You can obtain one at https://mozilla.org/MPL/2.0/.
8
9 #include "Code.hpp"
10
11 #include <array>
12 #include <fmt/core.h>
13 #include <imgui.h>
14
15 #include "util/Logger.hpp"
16
17 namespace NAV
18 {
19
20 14 Code::Code(const std::string& str)
21 {
22
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
14 if (str == "G1C") { value.set(G1C, true); }
23 else if (str == "G1S") { value.set(G1S, true); }
24 else if (str == "G1L") { value.set(G1L, true); }
25 else if (str == "G1X") { value.set(G1X, true); }
26 else if (str == "G1P") { value.set(G1P, true); }
27 else if (str == "G1W") { value.set(G1W, true); }
28 else if (str == "G1Y") { value.set(G1Y, true); }
29 else if (str == "G1M") { value.set(G1M, true); }
30 else if (str == "G1N") { value.set(G1N, true); }
31 else if (str == "G2C") { value.set(G2C, true); }
32 else if (str == "G2D") { value.set(G2D, true); }
33 else if (str == "G2S") { value.set(G2S, true); }
34 else if (str == "G2L") { value.set(G2L, true); }
35 else if (str == "G2X") { value.set(G2X, true); }
36 else if (str == "G2P") { value.set(G2P, true); }
37 else if (str == "G2W") { value.set(G2W, true); }
38 else if (str == "G2Y") { value.set(G2Y, true); }
39 else if (str == "G2M") { value.set(G2M, true); }
40 else if (str == "G2N") { value.set(G2N, true); }
41 else if (str == "G5I") { value.set(G5I, true); }
42 else if (str == "G5Q") { value.set(G5Q, true); }
43 else if (str == "G5X") { value.set(G5X, true); }
44 else if (str == "E1A") { value.set(E1A, true); }
45 else if (str == "E1B") { value.set(E1B, true); }
46 else if (str == "E1C") { value.set(E1C, true); }
47 else if (str == "E1X") { value.set(E1X, true); }
48 else if (str == "E1Z") { value.set(E1Z, true); }
49 else if (str == "E5I") { value.set(E5I, true); }
50 else if (str == "E5Q") { value.set(E5Q, true); }
51 else if (str == "E5X") { value.set(E5X, true); }
52 else if (str == "E6A") { value.set(E6A, true); }
53 else if (str == "E6B") { value.set(E6B, true); }
54 else if (str == "E6C") { value.set(E6C, true); }
55 else if (str == "E6X") { value.set(E6X, true); }
56 else if (str == "E6Z") { value.set(E6Z, true); }
57 else if (str == "E7I") { value.set(E7I, true); }
58 else if (str == "E7Q") { value.set(E7Q, true); }
59 else if (str == "E7X") { value.set(E7X, true); }
60 else if (str == "E8I") { value.set(E8I, true); }
61 else if (str == "E8Q") { value.set(E8Q, true); }
62 else if (str == "E8X") { value.set(E8X, true); }
63 else if (str == "R1C") { value.set(R1C, true); }
64 else if (str == "R1P") { value.set(R1P, true); }
65 else if (str == "R2C") { value.set(R2C, true); }
66 else if (str == "R2P") { value.set(R2P, true); }
67 else if (str == "R3I") { value.set(R3I, true); }
68 else if (str == "R3Q") { value.set(R3Q, true); }
69 else if (str == "R3X") { value.set(R3X, true); }
70 else if (str == "R4A") { value.set(R4A, true); }
71 else if (str == "R4B") { value.set(R4B, true); }
72 else if (str == "R4X") { value.set(R4X, true); }
73 else if (str == "R6A") { value.set(R6A, true); }
74 else if (str == "R6B") { value.set(R6B, true); }
75 else if (str == "R6X") { value.set(R6X, true); }
76 else if (str == "B1D") { value.set(B1D, true); }
77 else if (str == "B1P") { value.set(B1P, true); }
78 else if (str == "B1X") { value.set(B1X, true); }
79 else if (str == "B2I") { value.set(B2I, true); }
80 else if (str == "B2Q") { value.set(B2Q, true); }
81 else if (str == "B2X") { value.set(B2X, true); }
82 else if (str == "B5D") { value.set(B5D, true); }
83 else if (str == "B5P") { value.set(B5P, true); }
84 else if (str == "B5X") { value.set(B5X, true); }
85 else if (str == "B6I") { value.set(B6I, true); }
86 else if (str == "B6Q") { value.set(B6Q, true); }
87 else if (str == "B6X") { value.set(B6X, true); }
88 else if (str == "B6A") { value.set(B6A, true); }
89 else if (str == "B7I") { value.set(B7I, true); }
90 else if (str == "B7Q") { value.set(B7Q, true); }
91 else if (str == "B7X") { value.set(B7X, true); }
92 else if (str == "B7D") { value.set(B7D, true); }
93 else if (str == "B7P") { value.set(B7P, true); }
94 else if (str == "B7Z") { value.set(B7Z, true); }
95 else if (str == "B8D") { value.set(B8D, true); }
96 else if (str == "B8P") { value.set(B8P, true); }
97 else if (str == "B8X") { value.set(B8X, true); }
98 else if (str == "J1C") { value.set(J1C, true); }
99 else if (str == "J1S") { value.set(J1S, true); }
100 else if (str == "J1L") { value.set(J1L, true); }
101 else if (str == "J1X") { value.set(J1X, true); }
102 else if (str == "J1Z") { value.set(J1Z, true); }
103 else if (str == "J2S") { value.set(J2S, true); }
104 else if (str == "J2L") { value.set(J2L, true); }
105 else if (str == "J2X") { value.set(J2X, true); }
106 else if (str == "J5I") { value.set(J5I, true); }
107 else if (str == "J5Q") { value.set(J5Q, true); }
108 else if (str == "J5X") { value.set(J5X, true); }
109 else if (str == "J5D") { value.set(J5D, true); }
110 else if (str == "J5P") { value.set(J5P, true); }
111 else if (str == "J5Z") { value.set(J5Z, true); }
112 else if (str == "J6S") { value.set(J6S, true); }
113 else if (str == "J6L") { value.set(J6L, true); }
114 else if (str == "J6X") { value.set(J6X, true); }
115 else if (str == "J6E") { value.set(J6E, true); }
116 else if (str == "J6Z") { value.set(J6Z, true); }
117 else if (str == "I5A") { value.set(I5A, true); }
118 else if (str == "I5B") { value.set(I5B, true); }
119 else if (str == "I5C") { value.set(I5C, true); }
120 else if (str == "I5X") { value.set(I5X, true); }
121 else if (str == "I9A") { value.set(I9A, true); }
122 else if (str == "I9B") { value.set(I9B, true); }
123 else if (str == "I9C") { value.set(I9C, true); }
124 else if (str == "I9X") { value.set(I9X, true); }
125 else if (str == "S1C") { value.set(S1C, true); }
126 else if (str == "S5I") { value.set(S5I, true); }
127 else if (str == "S5Q") { value.set(S5Q, true); }
128 else if (str == "S5X") { value.set(S5X, true); }
129 14 }
130
131 Code::Code(SatelliteSystem_ sys)
132 {
133 if (sys & GPS) { *this |= Code(G01 | G02 | G05); }
134 if (sys & GAL) { *this |= Code(E01 | E05 | E06 | E07 | E08); }
135 if (sys & GLO) { *this |= Code(R01 | R02 | R03 | R04 | R06); }
136 if (sys & BDS) { *this |= Code(B01 | B02 | B05 | B06 | B07 | B08); }
137 if (sys & QZSS) { *this |= Code(J01 | J02 | J05 | J06); }
138 if (sys & IRNSS) { *this |= Code(I05 | I09); }
139 if (sys & SBAS) { *this |= Code(S01 | S05); }
140 }
141
142 Code::Code(Frequency_ freq)
143 {
144 if (freq & G01) { *this |= G1C | G1S | G1L | G1X | G1P | G1W | G1Y | G1M | G1N; }
145 if (freq & G02) { *this |= G2C | G2D | G2S | G2L | G2X | G2P | G2W | G2Y | G2M | G2N; }
146 if (freq & G05) { *this |= G5I | G5Q | G5X; }
147 if (freq & E01) { *this |= E1A | E1B | E1C | E1X | E1Z; }
148 if (freq & E05) { *this |= E5I | E5Q | E5X; }
149 if (freq & E06) { *this |= E6A | E6B | E6C | E6X | E6Z; }
150 if (freq & E07) { *this |= E7I | E7Q | E7X; }
151 if (freq & E08) { *this |= E8I | E8Q | E8X; }
152 if (freq & R01) { *this |= R1C | R1P; }
153 if (freq & R02) { *this |= R2C | R2P; }
154 if (freq & R03) { *this |= R3I | R3Q | R3X; }
155 if (freq & R04) { *this |= R4A | R4B | R4X; }
156 if (freq & R06) { *this |= R6A | R6B | R6X; }
157 if (freq & B01) { *this |= B1D | B1P | B1X; }
158 if (freq & B02) { *this |= B2I | B2Q | B2X; }
159 if (freq & B05) { *this |= B5D | B5P | B5X; }
160 if (freq & B06) { *this |= B6I | B6Q | B6X | B6A; }
161 if (freq & B07) { *this |= B7I | B7Q | B7X | B7D | B7P | B7Z; }
162 if (freq & B08) { *this |= B8D | B8P | B8X; }
163 if (freq & J01) { *this |= J1C | J1S | J1L | J1X | J1Z; }
164 if (freq & J02) { *this |= J2S | J2L | J2X; }
165 if (freq & J05) { *this |= J5I | J5Q | J5X | J5D | J5P | J5Z; }
166 if (freq & J06) { *this |= J6S | J6L | J6X | J6E | J6Z; }
167 if (freq & I05) { *this |= I5A | I5B | I5C | I5X; }
168 if (freq & I09) { *this |= I9A | I9B | I9C | I9X; }
169 if (freq & S01) { value |= S1C; }
170 if (freq & S05) { *this |= S5I | S5Q | S5X; }
171 }
172
173 675879 Code::operator std::string() const
174 {
175
1/2
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
675879 const std::string filler = " | ";
176 675882 std::string str;
177
178
9/18
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 126195 times.
✓ Branch 5 taken 549682 times.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 126193 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 126192 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 126194 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 126194 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 126191 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
928263 if (*this & G1C) { str += (!str.empty() ? filler : "") + "G1C"; }
179
2/18
✓ Branch 1 taken 675877 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675876 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675873 if (*this & G1S) { str += (!str.empty() ? filler : "") + "G1S"; }
180
8/18
✓ Branch 1 taken 675881 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1286 times.
✓ Branch 5 taken 674596 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1286 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1286 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1286 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1286 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1286 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678448 if (*this & G1L) { str += (!str.empty() ? filler : "") + "G1L"; }
181
8/18
✓ Branch 1 taken 675880 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2207 times.
✓ Branch 5 taken 673674 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2207 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 2207 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2207 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2207 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 2207 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
680296 if (*this & G1X) { str += (!str.empty() ? filler : "") + "G1X"; }
182
8/18
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4476 times.
✓ Branch 5 taken 671406 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 4476 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 4476 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4476 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 4476 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 4476 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
684833 if (*this & G1P) { str += (!str.empty() ? filler : "") + "G1P"; }
183
8/18
✓ Branch 1 taken 675881 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2699 times.
✓ Branch 5 taken 673181 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2699 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 2699 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2699 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2699 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 2699 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
681280 if (*this & G1W) { str += (!str.empty() ? filler : "") + "G1W"; }
184
2/18
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675883 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675880 if (*this & G1Y) { str += (!str.empty() ? filler : "") + "G1Y"; }
185
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675883 if (*this & G1M) { str += (!str.empty() ? filler : "") + "G1M"; }
186
2/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675885 if (*this & G1N) { str += (!str.empty() ? filler : "") + "G1N"; }
187
8/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2186 times.
✓ Branch 5 taken 673701 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2186 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 2186 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2186 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2186 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 2186 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
680259 if (*this & G2C) { str += (!str.empty() ? filler : "") + "G2C"; }
188
2/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675883 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & G2D) { str += (!str.empty() ? filler : "") + "G2D"; }
189
2/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675880 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675883 if (*this & G2S) { str += (!str.empty() ? filler : "") + "G2S"; }
190
8/18
✓ Branch 1 taken 675878 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2715 times.
✓ Branch 5 taken 673165 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2715 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 2716 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2716 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2715 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 2715 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
681310 if (*this & G2L) { str += (!str.empty() ? filler : "") + "G2L"; }
191
8/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 61421 times.
✓ Branch 5 taken 614467 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 61422 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 61422 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 61422 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 61422 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 61422 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
798724 if (*this & G2X) { str += (!str.empty() ? filler : "") + "G2X"; }
192
8/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4476 times.
✓ Branch 5 taken 671408 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 4476 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 4476 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4476 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 4476 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 4476 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
684841 if (*this & G2P) { str += (!str.empty() ? filler : "") + "G2P"; }
193
8/18
✓ Branch 1 taken 675881 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 2743 times.
✓ Branch 5 taken 673144 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 2743 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 2743 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 2742 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 2743 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 2743 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
681370 if (*this & G2W) { str += (!str.empty() ? filler : "") + "G2W"; }
194
2/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & G2Y) { str += (!str.empty() ? filler : "") + "G2Y"; }
195
2/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675885 if (*this & G2M) { str += (!str.empty() ? filler : "") + "G2M"; }
196
2/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675886 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675885 if (*this & G2N) { str += (!str.empty() ? filler : "") + "G2N"; }
197
8/18
✓ Branch 1 taken 675880 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 22797 times.
✓ Branch 5 taken 653088 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 22797 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 22797 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 22797 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 22797 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 22797 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
721480 if (*this & G5I) { str += (!str.empty() ? filler : "") + "G5I"; }
198
8/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1424 times.
✓ Branch 5 taken 674461 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1424 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1424 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1424 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1424 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1424 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678733 if (*this & G5Q) { str += (!str.empty() ? filler : "") + "G5Q"; }
199
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 38352 times.
✓ Branch 5 taken 637532 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 38352 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 38352 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 38352 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 38352 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 38352 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
752589 if (*this & G5X) { str += (!str.empty() ? filler : "") + "G5X"; }
200
201
8/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675869 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675924 if (*this & E1A) { str += (!str.empty() ? filler : "") + "E1A"; }
202
8/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 28 times.
✓ Branch 5 taken 675858 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 28 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 28 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 28 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 28 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 28 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675945 if (*this & E1B) { str += (!str.empty() ? filler : "") + "E1B"; }
203
8/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20043 times.
✓ Branch 5 taken 655840 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20043 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20043 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20043 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20042 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20042 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
715971 if (*this & E1C) { str += (!str.empty() ? filler : "") + "E1C"; }
204
8/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 85062 times.
✓ Branch 5 taken 590821 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 85062 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 85062 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 85062 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 85062 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 85062 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
846006 if (*this & E1X) { str += (!str.empty() ? filler : "") + "E1X"; }
205
2/18
✓ Branch 1 taken 675880 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675883 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675883 if (*this & E1Z) { str += (!str.empty() ? filler : "") + "E1Z"; }
206
8/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 28 times.
✓ Branch 5 taken 675857 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 28 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 28 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 28 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 28 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 28 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675939 if (*this & E5I) { str += (!str.empty() ? filler : "") + "E5I"; }
207
8/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 18865 times.
✓ Branch 5 taken 657021 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18865 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 18865 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 18865 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 18865 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 18865 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
713615 if (*this & E5Q) { str += (!str.empty() ? filler : "") + "E5Q"; }
208
8/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 35969 times.
✓ Branch 5 taken 639918 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 35969 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 35969 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 35969 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 35969 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 35969 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
747824 if (*this & E5X) { str += (!str.empty() ? filler : "") + "E5X"; }
209
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675871 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675927 if (*this & E6A) { str += (!str.empty() ? filler : "") + "E6A"; }
210
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675868 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675931 if (*this & E6B) { str += (!str.empty() ? filler : "") + "E6B"; }
211
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✓ Branch 5 taken 675852 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 36 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 36 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 36 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 36 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 36 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675960 if (*this & E6C) { str += (!str.empty() ? filler : "") + "E6C"; }
212
8/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 21 times.
✓ Branch 5 taken 675867 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 21 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 21 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 21 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 21 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 21 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675930 if (*this & E6X) { str += (!str.empty() ? filler : "") + "E6X"; }
213
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675888 if (*this & E6Z) { str += (!str.empty() ? filler : "") + "E6Z"; }
214
8/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 28 times.
✓ Branch 5 taken 675857 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 28 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 28 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 28 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 28 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 28 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675945 if (*this & E7I) { str += (!str.empty() ? filler : "") + "E7I"; }
215
8/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 18865 times.
✓ Branch 5 taken 657023 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18865 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 18865 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 18865 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 18865 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 18865 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
713615 if (*this & E7Q) { str += (!str.empty() ? filler : "") + "E7Q"; }
216
8/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 40999 times.
✓ Branch 5 taken 634889 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 40999 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 40999 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 40999 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 40999 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 40999 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
757886 if (*this & E7X) { str += (!str.empty() ? filler : "") + "E7X"; }
217
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 28 times.
✓ Branch 5 taken 675860 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 28 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 28 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 28 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 28 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 28 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675944 if (*this & E8I) { str += (!str.empty() ? filler : "") + "E8I"; }
218
8/18
✓ Branch 1 taken 675890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 18865 times.
✓ Branch 5 taken 657022 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 18865 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 18865 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 18865 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 18865 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 18865 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
713618 if (*this & E8Q) { str += (!str.empty() ? filler : "") + "E8Q"; }
219
8/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 21 times.
✓ Branch 5 taken 675865 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 21 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 21 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 21 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 21 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 21 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675929 if (*this & E8X) { str += (!str.empty() ? filler : "") + "E8X"; }
220
221
8/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 51281 times.
✓ Branch 5 taken 624603 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 51281 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 51281 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 51280 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 51280 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 51281 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
778448 if (*this & R1C) { str += (!str.empty() ? filler : "") + "R1C"; }
222
8/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1040 times.
✓ Branch 5 taken 674847 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1040 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1040 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1040 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1040 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1040 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677964 if (*this & R1P) { str += (!str.empty() ? filler : "") + "R1P"; }
223
9/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 46045 times.
✓ Branch 5 taken 629843 times.
✓ Branch 7 taken 1 times.
✓ Branch 8 taken 46044 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 46045 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 46045 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 46045 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 46045 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
767976 if (*this & R2C) { str += (!str.empty() ? filler : "") + "R2C"; }
224
8/18
✓ Branch 1 taken 675881 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1034 times.
✓ Branch 5 taken 674849 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1034 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1034 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1034 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1034 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1034 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677956 if (*this & R2P) { str += (!str.empty() ? filler : "") + "R2P"; }
225
8/18
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675861 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675923 if (*this & R3I) { str += (!str.empty() ? filler : "") + "R3I"; }
226
8/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✓ Branch 5 taken 675849 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 36 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 36 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 36 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 36 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 36 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675953 if (*this & R3Q) { str += (!str.empty() ? filler : "") + "R3Q"; }
227
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 41 times.
✓ Branch 5 taken 675846 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 41 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 41 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 41 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 41 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 41 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675967 if (*this & R3X) { str += (!str.empty() ? filler : "") + "R3X"; }
228
8/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675868 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675927 if (*this & R4A) { str += (!str.empty() ? filler : "") + "R4A"; }
229
8/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675862 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675928 if (*this & R4B) { str += (!str.empty() ? filler : "") + "R4B"; }
230
8/18
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675863 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675922 if (*this & R4X) { str += (!str.empty() ? filler : "") + "R4X"; }
231
2/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675883 if (*this & R6A) { str += (!str.empty() ? filler : "") + "R6A"; }
232
8/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675867 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675927 if (*this & R6B) { str += (!str.empty() ? filler : "") + "R6B"; }
233
2/18
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & R6X) { str += (!str.empty() ? filler : "") + "R6X"; }
234
235
2/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675884 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & B1D) { str += (!str.empty() ? filler : "") + "B1D"; }
236
2/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675884 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675884 if (*this & B1P) { str += (!str.empty() ? filler : "") + "B1P"; }
237
8/18
✓ Branch 1 taken 675881 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4271 times.
✓ Branch 5 taken 671615 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 4271 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 4271 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4271 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 4271 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 4271 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
684426 if (*this & B1X) { str += (!str.empty() ? filler : "") + "B1X"; }
238
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 34643 times.
✓ Branch 5 taken 641244 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 34643 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 34643 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 34643 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 34643 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 34643 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
745172 if (*this & B2I) { str += (!str.empty() ? filler : "") + "B2I"; }
239
2/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & B2Q) { str += (!str.empty() ? filler : "") + "B2Q"; }
240
8/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3208 times.
✓ Branch 5 taken 672679 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3208 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 3208 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3208 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3208 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 3208 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
682301 if (*this & B2X) { str += (!str.empty() ? filler : "") + "B2X"; }
241
2/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & B5D) { str += (!str.empty() ? filler : "") + "B5D"; }
242
2/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & B5P) { str += (!str.empty() ? filler : "") + "B5P"; }
243
8/18
✓ Branch 1 taken 675882 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4271 times.
✓ Branch 5 taken 671615 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 4271 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 4271 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 4271 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 4271 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 4271 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
684429 if (*this & B5X) { str += (!str.empty() ? filler : "") + "B5X"; }
244
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1547 times.
✓ Branch 5 taken 674343 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1547 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1547 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1547 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1547 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1547 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678980 if (*this & B6I) { str += (!str.empty() ? filler : "") + "B6I"; }
245
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675890 if (*this & B6Q) { str += (!str.empty() ? filler : "") + "B6Q"; }
246
2/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675888 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & B6X) { str += (!str.empty() ? filler : "") + "B6X"; }
247
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675888 if (*this & B6A) { str += (!str.empty() ? filler : "") + "B6A"; }
248
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1633 times.
✓ Branch 5 taken 674254 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1633 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1633 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1633 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1633 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1633 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
679153 if (*this & B7I) { str += (!str.empty() ? filler : "") + "B7I"; }
249
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675890 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & B7Q) { str += (!str.empty() ? filler : "") + "B7Q"; }
250
8/18
✓ Branch 1 taken 675890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 3208 times.
✓ Branch 5 taken 672683 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 3208 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 3208 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 3208 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 3208 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 3208 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
682306 if (*this & B7X) { str += (!str.empty() ? filler : "") + "B7X"; }
251
8/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1498 times.
✓ Branch 5 taken 674389 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1498 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1498 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1498 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1498 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1498 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678887 if (*this & B7D) { str += (!str.empty() ? filler : "") + "B7D"; }
252
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & B7P) { str += (!str.empty() ? filler : "") + "B7P"; }
253
2/18
✓ Branch 1 taken 675885 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & B7Z) { str += (!str.empty() ? filler : "") + "B7Z"; }
254
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675892 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & B8D) { str += (!str.empty() ? filler : "") + "B8D"; }
255
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675888 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675892 if (*this & B8P) { str += (!str.empty() ? filler : "") + "B8P"; }
256
2/18
✓ Branch 1 taken 675890 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675892 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675888 if (*this & B8X) { str += (!str.empty() ? filler : "") + "B8X"; }
257
258
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1230 times.
✓ Branch 5 taken 674658 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1230 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1230 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1230 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1230 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1230 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678352 if (*this & J1C) { str += (!str.empty() ? filler : "") + "J1C"; }
259
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675890 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675888 if (*this & J1S) { str += (!str.empty() ? filler : "") + "J1S"; }
260
2/18
✓ Branch 1 taken 675890 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675890 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675890 if (*this & J1L) { str += (!str.empty() ? filler : "") + "J1L"; }
261
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1214 times.
✓ Branch 5 taken 674671 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1214 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1214 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1214 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1214 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1213 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678317 if (*this & J1X) { str += (!str.empty() ? filler : "") + "J1X"; }
262
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1214 times.
✓ Branch 5 taken 674677 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1214 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1213 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1214 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1214 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1214 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
678312 if (*this & J1Z) { str += (!str.empty() ? filler : "") + "J1Z"; }
263
2/18
✓ Branch 1 taken 675891 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675891 if (*this & J2S) { str += (!str.empty() ? filler : "") + "J2S"; }
264
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 675874 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 16 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 16 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 16 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675919 if (*this & J2L) { str += (!str.empty() ? filler : "") + "J2L"; }
265
8/18
✓ Branch 1 taken 675890 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 616 times.
✓ Branch 5 taken 675276 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 616 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 616 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 616 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 616 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 616 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677122 if (*this & J2X) { str += (!str.empty() ? filler : "") + "J2X"; }
266
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 616 times.
✓ Branch 5 taken 675273 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 616 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 616 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 616 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 616 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 616 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677124 if (*this & J5I) { str += (!str.empty() ? filler : "") + "J5I"; }
267
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 675871 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 16 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 16 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 16 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675921 if (*this & J5Q) { str += (!str.empty() ? filler : "") + "J5Q"; }
268
8/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 598 times.
✓ Branch 5 taken 675289 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 598 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 598 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 598 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 598 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 598 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677083 if (*this & J5X) { str += (!str.empty() ? filler : "") + "J5X"; }
269
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & J5D) { str += (!str.empty() ? filler : "") + "J5D"; }
270
2/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675884 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & J5P) { str += (!str.empty() ? filler : "") + "J5P"; }
271
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 598 times.
✓ Branch 5 taken 675288 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 598 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 598 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 598 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 598 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 598 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677080 if (*this & J5Z) { str += (!str.empty() ? filler : "") + "J5Z"; }
272
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675893 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675886 if (*this & J6S) { str += (!str.empty() ? filler : "") + "J6S"; }
273
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675893 if (*this & J6L) { str += (!str.empty() ? filler : "") + "J6L"; }
274
2/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & J6X) { str += (!str.empty() ? filler : "") + "J6X"; }
275
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675888 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675885 if (*this & J6E) { str += (!str.empty() ? filler : "") + "J6E"; }
276
8/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✓ Branch 5 taken 675867 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 20 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 20 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 20 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 20 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 20 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675928 if (*this & J6Z) { str += (!str.empty() ? filler : "") + "J6Z"; }
277
278
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 675872 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 16 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 16 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 16 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675919 if (*this & I5A) { str += (!str.empty() ? filler : "") + "I5A"; }
279
2/18
✓ Branch 1 taken 675887 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675888 if (*this & I5B) { str += (!str.empty() ? filler : "") + "I5B"; }
280
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675887 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & I5C) { str += (!str.empty() ? filler : "") + "I5C"; }
281
8/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 616 times.
✓ Branch 5 taken 675271 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 616 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 616 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 616 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 616 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 616 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
677119 if (*this & I5X) { str += (!str.empty() ? filler : "") + "I5X"; }
282
2/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675887 if (*this & I9A) { str += (!str.empty() ? filler : "") + "I9A"; }
283
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675889 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675885 if (*this & I9B) { str += (!str.empty() ? filler : "") + "I9B"; }
284
2/18
✓ Branch 1 taken 675888 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675885 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & I9C) { str += (!str.empty() ? filler : "") + "I9C"; }
285
2/18
✓ Branch 1 taken 675884 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675888 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675885 if (*this & I9X) { str += (!str.empty() ? filler : "") + "I9X"; }
286
287
8/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1708 times.
✓ Branch 5 taken 674181 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1708 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1708 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1708 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1708 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1708 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
679304 if (*this & S1C) { str += (!str.empty() ? filler : "") + "S1C"; }
288
8/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 16 times.
✓ Branch 5 taken 675873 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 16 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 16 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 16 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 16 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 16 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675921 if (*this & S5I) { str += (!str.empty() ? filler : "") + "S5I"; }
289
2/18
✓ Branch 1 taken 675889 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 675891 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
675889 if (*this & S5Q) { str += (!str.empty() ? filler : "") + "S5Q"; }
290
8/18
✓ Branch 1 taken 675886 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1645 times.
✓ Branch 5 taken 674240 times.
✗ Branch 7 not taken.
✓ Branch 8 taken 1645 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✓ Branch 13 taken 1645 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1645 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1645 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1645 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
679181 if (*this & S5X) { str += (!str.empty() ? filler : "") + "S5X"; }
291
292
1/2
✓ Branch 1 taken 675883 times.
✗ Branch 2 not taken.
675885 if (!str.empty())
293 {
294 675883 return str;
295 }
296 return "None";
297 675887 }
298
299 2854 Code Code::fromFreqAttr(Frequency freq, char attribute)
300 {
301
25/29
✓ Branch 1 taken 316 times.
✓ Branch 2 taken 290 times.
✓ Branch 3 taken 92 times.
✓ Branch 4 taken 227 times.
✓ Branch 5 taken 120 times.
✓ Branch 6 taken 80 times.
✓ Branch 7 taken 187 times.
✓ Branch 8 taken 92 times.
✓ Branch 9 taken 190 times.
✓ Branch 10 taken 167 times.
✓ Branch 11 taken 80 times.
✓ Branch 12 taken 60 times.
✓ Branch 13 taken 20 times.
✓ Branch 14 taken 48 times.
✓ Branch 15 taken 138 times.
✓ Branch 16 taken 48 times.
✓ Branch 17 taken 44 times.
✓ Branch 18 taken 152 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 212 times.
✓ Branch 21 taken 32 times.
✓ Branch 22 taken 120 times.
✓ Branch 23 taken 20 times.
✓ Branch 24 taken 32 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 60 times.
✓ Branch 27 taken 32 times.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
2854 switch (Frequency_(freq))
302 {
303 316 case G01: // GPS L1 (1575.42 MHz).
304
3/4
✓ Branch 0 taken 178 times.
✓ Branch 1 taken 138 times.
✓ Branch 3 taken 176 times.
✗ Branch 4 not taken.
316 if (attribute == 'C') { return G1C; }
305
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 138 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
138 if (attribute == 'S') { return G1S; }
306
3/4
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 122 times.
✓ Branch 3 taken 16 times.
✗ Branch 4 not taken.
138 if (attribute == 'L') { return G1L; }
307
3/4
✓ Branch 0 taken 56 times.
✓ Branch 1 taken 66 times.
✓ Branch 3 taken 56 times.
✗ Branch 4 not taken.
122 if (attribute == 'X') { return G1X; }
308
3/4
✓ Branch 0 taken 48 times.
✓ Branch 1 taken 18 times.
✓ Branch 3 taken 48 times.
✗ Branch 4 not taken.
66 if (attribute == 'P') { return G1P; }
309
3/4
✓ Branch 0 taken 17 times.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 17 times.
✗ Branch 4 not taken.
18 if (attribute == 'W') { return G1W; }
310
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 if (attribute == 'Y') { return G1Y; }
311
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 if (attribute == 'M') { return G1M; }
312
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 if (attribute == 'N') { return G1N; }
313 1 break;
314 290 case G02: // GPS L2 (1227.6 MHz).
315
3/4
✓ Branch 0 taken 44 times.
✓ Branch 1 taken 246 times.
✓ Branch 3 taken 44 times.
✗ Branch 4 not taken.
290 if (attribute == 'C') { return G2C; }
316
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 246 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
246 if (attribute == 'D') { return G2D; }
317
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 246 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
246 if (attribute == 'S') { return G2S; }
318
3/4
✓ Branch 0 taken 36 times.
✓ Branch 1 taken 210 times.
✓ Branch 3 taken 35 times.
✗ Branch 4 not taken.
246 if (attribute == 'L') { return G2L; }
319
3/4
✓ Branch 0 taken 114 times.
✓ Branch 1 taken 96 times.
✓ Branch 3 taken 114 times.
✗ Branch 4 not taken.
210 if (attribute == 'X') { return G2X; }
320
3/4
✓ Branch 0 taken 48 times.
✓ Branch 1 taken 48 times.
✓ Branch 3 taken 48 times.
✗ Branch 4 not taken.
96 if (attribute == 'P') { return G2P; }
321
3/4
✓ Branch 0 taken 47 times.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 47 times.
✗ Branch 4 not taken.
48 if (attribute == 'W') { return G2W; }
322
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 if (attribute == 'Y') { return G2Y; }
323
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 if (attribute == 'M') { return G2M; }
324
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
1 if (attribute == 'N') { return G2N; }
325 1 break;
326 92 case G05: // GPS L5 (1176.45 MHz).
327
3/4
✓ Branch 0 taken 32 times.
✓ Branch 1 taken 60 times.
✓ Branch 3 taken 32 times.
✗ Branch 4 not taken.
92 if (attribute == 'I') { return G5I; }
328
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 40 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
60 if (attribute == 'Q') { return G5Q; }
329
2/4
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 40 times.
✗ Branch 4 not taken.
40 if (attribute == 'X') { return G5X; }
330 break;
331 227 case E01: // Galileo, "E1" (1575.42 MHz).
332
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 207 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
227 if (attribute == 'A') { return E1A; }
333
3/4
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 179 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
207 if (attribute == 'B') { return E1B; }
334
3/4
✓ Branch 0 taken 68 times.
✓ Branch 1 taken 111 times.
✓ Branch 3 taken 67 times.
✗ Branch 4 not taken.
179 if (attribute == 'C') { return E1C; }
335
2/4
✓ Branch 0 taken 111 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 111 times.
✗ Branch 4 not taken.
111 if (attribute == 'X') { return E1X; }
336 if (attribute == 'Z') { return E1Z; }
337 break;
338 120 case E05: // Galileo E5a (1176.45 MHz).
339
3/4
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 92 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
120 if (attribute == 'I') { return E5I; }
340
3/4
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 40 times.
✓ Branch 3 taken 52 times.
✗ Branch 4 not taken.
92 if (attribute == 'Q') { return E5Q; }
341
2/4
✓ Branch 0 taken 40 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 40 times.
✗ Branch 4 not taken.
40 if (attribute == 'X') { return E5X; }
342 break;
343 80 case E06: // Galileo E6 (1278.75 MHz).
344
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 60 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
80 if (attribute == 'A') { return E6A; }
345
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 40 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
60 if (attribute == 'B') { return E6B; }
346
3/4
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 12 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
40 if (attribute == 'C') { return E6C; }
347
2/4
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
12 if (attribute == 'X') { return E6X; }
348 if (attribute == 'Z') { return E6Z; }
349 break;
350 187 case E07: // Galileo E5b (1207.14 MHz).
351
3/4
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 159 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
187 if (attribute == 'I') { return E7I; }
352
3/4
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 107 times.
✓ Branch 3 taken 52 times.
✗ Branch 4 not taken.
159 if (attribute == 'Q') { return E7Q; }
353
2/4
✓ Branch 0 taken 107 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 107 times.
✗ Branch 4 not taken.
107 if (attribute == 'X') { return E7X; }
354 break;
355 92 case E08: // Galileo E5 (E5a + E5b) (1191.795MHz).
356
3/4
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 64 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
92 if (attribute == 'I') { return E8I; }
357
3/4
✓ Branch 0 taken 52 times.
✓ Branch 1 taken 12 times.
✓ Branch 3 taken 52 times.
✗ Branch 4 not taken.
64 if (attribute == 'Q') { return E8Q; }
358
2/4
✓ Branch 0 taken 12 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 12 times.
✗ Branch 4 not taken.
12 if (attribute == 'X') { return E8X; }
359 break;
360
361 190 case R01: // GLONASS, "G1" (1602 MHZ).
362
3/4
✓ Branch 0 taken 158 times.
✓ Branch 1 taken 32 times.
✓ Branch 3 taken 158 times.
✗ Branch 4 not taken.
190 if (attribute == 'C') { return R1C; }
363
2/4
✓ Branch 0 taken 32 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 32 times.
✗ Branch 4 not taken.
32 if (attribute == 'P') { return R1P; }
364 break;
365 167 case R02: // GLONASS, "G2" (1246 MHz).
366
3/4
✓ Branch 0 taken 135 times.
✓ Branch 1 taken 32 times.
✓ Branch 3 taken 135 times.
✗ Branch 4 not taken.
167 if (attribute == 'C') { return R2C; }
367
2/4
✓ Branch 0 taken 32 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 32 times.
✗ Branch 4 not taken.
32 if (attribute == 'P') { return R2P; }
368 break;
369 80 case R03: // GLONASS, "G3" (1202.025 MHz).
370
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 60 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
80 if (attribute == 'I') { return R3I; }
371
3/4
✓ Branch 0 taken 28 times.
✓ Branch 1 taken 32 times.
✓ Branch 3 taken 28 times.
✗ Branch 4 not taken.
60 if (attribute == 'Q') { return R3Q; }
372
2/4
✓ Branch 0 taken 32 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 32 times.
✗ Branch 4 not taken.
32 if (attribute == 'X') { return R3X; }
373 break;
374 60 case R04: // GLONASS, "G1a" (1600.995 MHZ).
375
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 40 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
60 if (attribute == 'A') { return R4A; }
376
3/4
✓ Branch 0 taken 20 times.
✓ Branch 1 taken 20 times.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
40 if (attribute == 'B') { return R4B; }
377
2/4
✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
20 if (attribute == 'X') { return R4X; }
378 break;
379 20 case R06: // GLONASS, "G2a" (1248.06 MHz).
380
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 20 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
20 if (attribute == 'A') { return R6A; }
381
2/4
✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
20 if (attribute == 'B') { return R6B; }
382 if (attribute == 'X') { return R6X; }
383 break;
384
385 48 case B01: // Beidou B1 (1575.42 MHz).
386
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
48 if (attribute == 'D') { return B1D; }
387
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
48 if (attribute == 'P') { return B1P; }
388
2/4
✓ Branch 0 taken 48 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 48 times.
✗ Branch 4 not taken.
48 if (attribute == 'X') { return B1X; }
389 break;
390 138 case B02: // Beidou B1-2 (1561.098 MHz).
391
3/4
✓ Branch 0 taken 114 times.
✓ Branch 1 taken 24 times.
✓ Branch 3 taken 114 times.
✗ Branch 4 not taken.
138 if (attribute == 'I') { return B2I; }
392
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 24 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
24 if (attribute == 'Q') { return B2Q; }
393
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
24 if (attribute == 'X') { return B2X; }
394 break;
395 48 case B05: // Beidou B2a (1176.45 MHz).
396
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
48 if (attribute == 'D') { return B5D; }
397
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
48 if (attribute == 'P') { return B5P; }
398
2/4
✓ Branch 0 taken 48 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 48 times.
✗ Branch 4 not taken.
48 if (attribute == 'X') { return B5X; }
399 break;
400 44 case B06: // Beidou B3 (1268.52 MHz).
401
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 44 times.
✗ Branch 4 not taken.
44 if (attribute == 'I') { return B6I; }
402 if (attribute == 'Q') { return B6Q; }
403 if (attribute == 'X') { return B6X; }
404 if (attribute == 'A') { return B6A; }
405 break;
406 152 case B07: // Beidou B2b (1207.14 MHz).
407
3/4
✓ Branch 0 taken 104 times.
✓ Branch 1 taken 48 times.
✓ Branch 3 taken 104 times.
✗ Branch 4 not taken.
152 if (attribute == 'I') { return B7I; }
408
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 48 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
48 if (attribute == 'Q') { return B7Q; }
409
3/4
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 24 times.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
48 if (attribute == 'X') { return B7X; }
410
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
24 if (attribute == 'D') { return B7D; }
411 if (attribute == 'P') { return B7P; }
412 if (attribute == 'Z') { return B7Z; }
413 break;
414 case B08: // Beidou B2 (B2a + B2b) (1191.795MHz).
415 if (attribute == 'D') { return B8D; }
416 if (attribute == 'P') { return B8P; }
417 if (attribute == 'X') { return B8X; }
418 break;
419
420 212 case J01: // QZSS L1 (1575.42 MHz).
421
3/4
✓ Branch 0 taken 76 times.
✓ Branch 1 taken 136 times.
✓ Branch 3 taken 76 times.
✗ Branch 4 not taken.
212 if (attribute == 'C') { return J1C; }
422
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 136 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
136 if (attribute == 'S') { return J1S; }
423
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 136 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
136 if (attribute == 'L') { return J1L; }
424
3/4
✓ Branch 0 taken 68 times.
✓ Branch 1 taken 68 times.
✓ Branch 3 taken 68 times.
✗ Branch 4 not taken.
136 if (attribute == 'X') { return J1X; }
425
2/4
✓ Branch 0 taken 68 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 68 times.
✗ Branch 4 not taken.
68 if (attribute == 'Z') { return J1Z; }
426 break;
427 32 case J02: // QZSS L2 (1227.6 MHz).
428
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 32 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
32 if (attribute == 'S') { return J2S; }
429
3/4
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 24 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
32 if (attribute == 'L') { return J2L; }
430
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
24 if (attribute == 'X') { return J2X; }
431 break;
432 120 case J05: // QZSS L5 (1176.45 MHz).
433
3/4
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 96 times.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
120 if (attribute == 'I') { return J5I; }
434
3/4
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 88 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
96 if (attribute == 'Q') { return J5Q; }
435
3/4
✓ Branch 0 taken 44 times.
✓ Branch 1 taken 44 times.
✓ Branch 3 taken 44 times.
✗ Branch 4 not taken.
88 if (attribute == 'X') { return J5X; }
436
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 44 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
44 if (attribute == 'D') { return J5D; }
437
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 44 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
44 if (attribute == 'P') { return J5P; }
438
2/4
✓ Branch 0 taken 44 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 44 times.
✗ Branch 4 not taken.
44 if (attribute == 'Z') { return J5Z; }
439 break;
440 20 case J06: // QZSS L6 / LEX (1278.75 MHz).
441
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 20 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
20 if (attribute == 'S') { return J6S; }
442
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 20 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
20 if (attribute == 'L') { return J6L; }
443
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 20 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
20 if (attribute == 'X') { return J6X; }
444
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 20 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
20 if (attribute == 'E') { return J6E; }
445
2/4
✓ Branch 0 taken 20 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 20 times.
✗ Branch 4 not taken.
20 if (attribute == 'Z') { return J6Z; }
446 break;
447
448 32 case I05: // IRNSS L5 (1176.45 MHz).
449
3/4
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 24 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
32 if (attribute == 'A') { return I5A; }
450
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 24 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
24 if (attribute == 'B') { return I5B; }
451
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 24 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
24 if (attribute == 'C') { return I5C; }
452
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
24 if (attribute == 'X') { return I5X; }
453 break;
454 case I09: // IRNSS S (2492.028 MHz).
455 if (attribute == 'A') { return I9A; }
456 if (attribute == 'B') { return I9B; }
457 if (attribute == 'C') { return I9C; }
458 if (attribute == 'X') { return I9X; }
459 break;
460
461 60 case S01: // SBAS L1 (1575.42 MHz).
462
2/4
✓ Branch 0 taken 60 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 60 times.
✗ Branch 4 not taken.
60 if (attribute == 'C') { return S1C; }
463 break;
464 32 case S05: // SBAS L5 (1176.45 MHz).
465
3/4
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 24 times.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
32 if (attribute == 'I') { return S5I; }
466
1/4
✗ Branch 0 not taken.
✓ Branch 1 taken 24 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
24 if (attribute == 'Q') { return S5Q; }
467
2/4
✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
24 if (attribute == 'X') { return S5X; }
468 break;
469
470 case Freq_None:
471 break;
472 }
473
474 LOG_WARN("Can't convert frequency '{}' and attribute '{}'. Unkown code.", freq, attribute);
475
476 return Code(Set());
477 }
478
479 const char* Code::GetCodeDescription(Code code)
480 {
481 if (code == G1C) { return "GPS L1 - C/A-code"; }
482 if (code == G1S) { return "GPS L1 - L1C-D (data)"; }
483 if (code == G1L) { return "GPS L1 - L1C-P (pilot)"; }
484 if (code == G1X) { return "GPS L1 - L1C-(D+P) (combined)"; }
485 if (code == G1P) { return "GPS L1 - P-code (unencrypted)"; }
486 if (code == G1W) { return "GPS L1 - Semicodeless P(Y) tracking (Z-tracking)"; }
487 if (code == G1Y) { return "GPS L1 - Y-code (with decryption)"; }
488 if (code == G1M) { return "GPS L1 - M-code"; }
489 if (code == G1N) { return "GPS L1 - codeless"; }
490 if (code == G2C) { return "GPS L2 - C/A-code"; }
491 if (code == G2D) { return "GPS L2 - Semi-codeless P(Y) tracking (L1 C/A + (P2-P1))"; }
492 if (code == G2S) { return "GPS L2 - L2C(M) (medium)"; }
493 if (code == G2L) { return "GPS L2 - L2C(L) (long)"; }
494 if (code == G2X) { return "GPS L2 - L2C(M+L) (combined)"; }
495 if (code == G2P) { return "GPS L2 - P-code (unencrypted)"; }
496 if (code == G2W) { return "GPS L2 - Semicodeless P(Y) tracking (Z-tracking)"; }
497 if (code == G2Y) { return "GPS L2 - Y-code (with decryption)"; }
498 if (code == G2M) { return "GPS L2 - M-code"; }
499 if (code == G2N) { return "GPS L2 - codeless"; }
500 if (code == G5I) { return "GPS L5 - Data"; }
501 if (code == G5Q) { return "GPS L5 - Pilot"; }
502 if (code == G5X) { return "GPS L5 - Combined"; }
503
504 if (code == E1A) { return "GAL E1 - PRS signal"; }
505 if (code == E1B) { return "GAL E1 - OS (data)"; }
506 if (code == E1C) { return "GAL E1 - OS (pilot)"; }
507 if (code == E1X) { return "GAL E1 - OS(B+C) (combined)"; }
508 if (code == E1Z) { return "GAL E1 - PRS + OS (data + pilot)"; }
509 if (code == E5I) { return "GAL E5a - Data"; }
510 if (code == E5Q) { return "GAL E5a - Pilot"; }
511 if (code == E5X) { return "GAL E5a - Combined"; }
512 if (code == E6A) { return "GAL E6 - PRS signal"; }
513 if (code == E6B) { return "GAL E6 - Data"; }
514 if (code == E6C) { return "GAL E6 - Pilot"; }
515 if (code == E6X) { return "GAL E6 - Combined (B+C)"; }
516 if (code == E6Z) { return "GAL E6 - PRS + OS (A+B+C)"; }
517 if (code == E7I) { return "GAL E5b - Data"; }
518 if (code == E7Q) { return "GAL E5b - Pilot"; }
519 if (code == E7X) { return "GAL E5b - Combined"; }
520 if (code == E8I) { return "GAL E5(a+b) - AltBOC (data)"; }
521 if (code == E8Q) { return "GAL E5(a+b) - AltBOC (pilot)"; }
522 if (code == E8X) { return "GAL E5(a+b) - AltBOC (combined)"; }
523
524 if (code == R1C) { return "GLO L1 - C/A-code"; }
525 if (code == R1P) { return "GLO L1 - P-code"; }
526 if (code == R2C) { return "GLO L2 - C/A-code"; }
527 if (code == R2P) { return "GLO L2 - P-code"; }
528 if (code == R3I) { return "GLO L3 - Data"; }
529 if (code == R3Q) { return "GLO L3 - Pilot"; }
530 if (code == R3X) { return "GLO L3 - Combined"; }
531 if (code == R4A) { return "GLO G1a - L1OCd (data)"; }
532 if (code == R4B) { return "GLO G1a - L1OCp (pilot)"; }
533 if (code == R4X) { return "GLO G1a - L1OCd+L1OCp (combined)"; }
534 if (code == R6A) { return "GLO G2a - L2CSI (data)"; }
535 if (code == R6B) { return "GLO G2a - L2OCp (pilot)"; }
536 if (code == R6X) { return "GLO G2a - L2CSI+L2OCp (combined)"; }
537
538 if (code == B1D) { return "BeiDou B1 - Data (D)"; }
539 if (code == B1P) { return "BeiDou B1 - Pilot(P)"; }
540 if (code == B1X) { return "BeiDou B1 - D+P"; }
541 if (code == B2I) { return "BeiDou B1-2 - B1I(OS)"; }
542 if (code == B2Q) { return "BeiDou B1-2 - B1Q"; }
543 if (code == B2X) { return "BeiDou B1-2 - B1I(OS), B1Q, combined"; }
544 if (code == B5D) { return "BeiDou B2a - Data (D)"; }
545 if (code == B5P) { return "BeiDou B2a - Pilot(P)"; }
546 if (code == B5X) { return "BeiDou B2a - D+P"; }
547 if (code == B6I) { return "BeiDou B3 - B3I"; }
548 if (code == B6Q) { return "BeiDou B3 - B3Q"; }
549 if (code == B6X) { return "BeiDou B3 - B3I, B3Q, combined"; }
550 if (code == B6A) { return "BeiDou B3 - B3A"; }
551 if (code == B7I) { return "BeiDou B2b (BDS-2) - B2I(OS)"; }
552 if (code == B7Q) { return "BeiDou B2b (BDS-2) - B2Q"; }
553 if (code == B7X) { return "BeiDou B2b (BDS-2) - B2I(OS), B2Q, combined"; }
554 if (code == B7D) { return "BeiDou B2b (BDS-3) - Data (D)"; }
555 if (code == B7P) { return "BeiDou B2b (BDS-3) - Pilot(P)"; }
556 if (code == B7Z) { return "BeiDou B2b (BDS-3) - D+P"; }
557 if (code == B8D) { return "BeiDou B2 (B2a+B2b) - Data (D)"; }
558 if (code == B8P) { return "BeiDou B2 (B2a+B2b) - Pilot(P)"; }
559 if (code == B8X) { return "BeiDou B2 (B2a+B2b) - D+P"; }
560
561 if (code == J1C) { return "QZSS L1 - C/A-code"; }
562 if (code == J1S) { return "QZSS L1 - L1C (data)"; }
563 if (code == J1L) { return "QZSS L1 - L1C (pilot)"; }
564 if (code == J1X) { return "QZSS L1 - L1C (combined)"; }
565 if (code == J1Z) { return "QZSS L1 - L1-SAIF signal"; }
566 if (code == J2S) { return "QZSS L2 - L2C-code (medium)"; }
567 if (code == J2L) { return "QZSS L2 - L2C-code (long)"; }
568 if (code == J2X) { return "QZSS L2 - L2C-code (combined)"; }
569 if (code == J5I) { return "QZSS L5 - Data"; }
570 if (code == J5Q) { return "QZSS L5 - Pilot"; }
571 if (code == J5X) { return "QZSS L5 - Combined"; }
572 if (code == J5D) { return "QZSS L5S - I"; }
573 if (code == J5P) { return "QZSS L5S - Q"; }
574 if (code == J5Z) { return "QZSS L5S - I+Q"; }
575 if (code == J6S) { return "QZSS L6 - L6D LEX signal (short)"; }
576 if (code == J6L) { return "QZSS L6 - L6P LEX signal (long)"; }
577 if (code == J6X) { return "QZSS L6 - L6(D+P) LEX signal (combined)"; }
578 if (code == J6E) { return "QZSS L6 - L6E"; }
579 if (code == J6Z) { return "QZSS L6 - L6(D+E)"; }
580
581 if (code == I5A) { return "IRNSS L5 - SPS Signal"; }
582 if (code == I5B) { return "IRNSS L5 - RS (data)"; }
583 if (code == I5C) { return "IRNSS L5 - RS (pilot)"; }
584 if (code == I5X) { return "IRNSS L5 - RS (combined)"; }
585 if (code == I9A) { return "IRNSS S - SPS signal"; }
586 if (code == I9B) { return "IRNSS S - RS (data)"; }
587 if (code == I9C) { return "IRNSS S - RS (pilot)"; }
588 if (code == I9X) { return "IRNSS S - RS (combined)"; }
589
590 if (code == S1C) { return "SBAS L1 - C/A-code"; }
591 if (code == S5I) { return "SBAS L5 - Data"; }
592 if (code == S5Q) { return "SBAS L5 - Pilot"; }
593 if (code == S5X) { return "SBAS L5 - Combined"; }
594
595 return "Unknown code.";
596 }
597
598 const char* Code::getDescription() const
599 {
600 return GetCodeDescription(*this);
601 }
602
603 16601582 Frequency Code::GetCodeFequency(Code code)
604 {
605
3/4
✓ Branch 1 taken 16591270 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2514310 times.
✓ Branch 4 taken 14076960 times.
16601582 if (code == G1C) { return G01; } // GPS L1 - C/A-code
606
3/4
✓ Branch 1 taken 14081619 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5716 times.
✓ Branch 4 taken 14075903 times.
14076960 if (code == G1S) { return G01; } // GPS L1 - L1C-D (data)
607
3/4
✓ Branch 1 taken 14076553 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 32962 times.
✓ Branch 4 taken 14043591 times.
14075903 if (code == G1L) { return G01; } // GPS L1 - L1C-P (pilot)
608
3/4
✓ Branch 1 taken 14043566 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 65447 times.
✓ Branch 4 taken 13978119 times.
14043591 if (code == G1X) { return G01; } // GPS L1 - L1C-(D+P) (combined)
609
3/4
✓ Branch 1 taken 13978537 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 127737 times.
✓ Branch 4 taken 13850800 times.
13978119 if (code == G1P) { return G01; } // GPS L1 - P-code (unencrypted)
610
3/4
✓ Branch 1 taken 13850926 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 31481 times.
✓ Branch 4 taken 13819445 times.
13850800 if (code == G1W) { return G01; } // GPS L1 - Semicodeless P(Y) tracking (Z-tracking)
611
3/4
✓ Branch 1 taken 13819740 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5716 times.
✓ Branch 4 taken 13814024 times.
13819445 if (code == G1Y) { return G01; } // GPS L1 - Y-code (with decryption)
612
3/4
✓ Branch 1 taken 13814119 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5716 times.
✓ Branch 4 taken 13808403 times.
13814024 if (code == G1M) { return G01; } // GPS L1 - M-code
613
3/4
✓ Branch 1 taken 13808583 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5716 times.
✓ Branch 4 taken 13802867 times.
13808403 if (code == G1N) { return G01; } // GPS L1 - codeless
614
3/4
✓ Branch 1 taken 13802782 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 69789 times.
✓ Branch 4 taken 13732993 times.
13802867 if (code == G2C) { return G02; } // GPS L2 - C/A-code
615
3/4
✓ Branch 1 taken 13733110 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5316 times.
✓ Branch 4 taken 13727794 times.
13732993 if (code == G2D) { return G02; } // GPS L2 - Semi-codeless P(Y) tracking (L1 C/A + (P2-P1))
616
3/4
✓ Branch 1 taken 13727851 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5316 times.
✓ Branch 4 taken 13722535 times.
13727794 if (code == G2S) { return G02; } // GPS L2 - L2C(M) (medium)
617
3/4
✓ Branch 1 taken 13722619 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 36172 times.
✓ Branch 4 taken 13686447 times.
13722535 if (code == G2L) { return G02; } // GPS L2 - L2C(L) (long)
618
3/4
✓ Branch 1 taken 13686102 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2140784 times.
✓ Branch 4 taken 11545318 times.
13686447 if (code == G2X) { return G02; } // GPS L2 - L2C(M+L) (combined)
619
3/4
✓ Branch 1 taken 11547408 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 131135 times.
✓ Branch 4 taken 11416273 times.
11545318 if (code == G2P) { return G02; } // GPS L2 - P-code (unencrypted)
620
3/4
✓ Branch 1 taken 11416088 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 36221 times.
✓ Branch 4 taken 11379867 times.
11416273 if (code == G2W) { return G02; } // GPS L2 - Semicodeless P(Y) tracking (Z-tracking)
621
3/4
✓ Branch 1 taken 11380167 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5316 times.
✓ Branch 4 taken 11374851 times.
11379867 if (code == G2Y) { return G02; } // GPS L2 - Y-code (with decryption)
622
3/4
✓ Branch 1 taken 11374703 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5316 times.
✓ Branch 4 taken 11369387 times.
11374851 if (code == G2M) { return G02; } // GPS L2 - M-code
623
3/4
✓ Branch 1 taken 11369551 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5316 times.
✓ Branch 4 taken 11364235 times.
11369387 if (code == G2N) { return G02; } // GPS L2 - codeless
624
3/4
✓ Branch 1 taken 11364059 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1903300 times.
✓ Branch 4 taken 9460759 times.
11364235 if (code == G5I) { return G05; } // GPS L5 - Data
625
3/4
✓ Branch 1 taken 9461579 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 21591 times.
✓ Branch 4 taken 9439988 times.
9460759 if (code == G5Q) { return G05; } // GPS L5 - Pilot
626
3/4
✓ Branch 1 taken 9439934 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 243127 times.
✓ Branch 4 taken 9196807 times.
9439988 if (code == G5X) { return G05; } // GPS L5 - Combined
627
628
3/4
✓ Branch 1 taken 9197255 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 9191151 times.
9196807 if (code == E1A) { return E01; } // GAL E1 - PRS signal
629
3/4
✓ Branch 1 taken 9191119 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100107 times.
✓ Branch 4 taken 9091012 times.
9191151 if (code == E1B) { return E01; } // GAL E1 - OS (data)
630
3/4
✓ Branch 1 taken 9091104 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1339627 times.
✓ Branch 4 taken 7751477 times.
9091012 if (code == E1C) { return E01; } // GAL E1 - OS (pilot)
631
3/4
✓ Branch 1 taken 7751843 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 693613 times.
✓ Branch 4 taken 7058230 times.
7751477 if (code == E1X) { return E01; } // GAL E1 - OS(B+C) (combined)
632
3/4
✓ Branch 1 taken 7058619 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 7052515 times.
7058230 if (code == E1Z) { return E01; } // GAL E1 - PRS + OS (data + pilot)
633
3/4
✓ Branch 1 taken 7052453 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100910 times.
✓ Branch 4 taken 6951543 times.
7052515 if (code == E5I) { return E05; } // GAL E5a - Data
634
3/4
✓ Branch 1 taken 6951704 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1055943 times.
✓ Branch 4 taken 5895761 times.
6951543 if (code == E5Q) { return E05; } // GAL E5a - Pilot
635
3/4
✓ Branch 1 taken 5895914 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 200099 times.
✓ Branch 4 taken 5695815 times.
5895761 if (code == E5X) { return E05; } // GAL E5a - Combined
636
3/4
✓ Branch 1 taken 5695855 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 5689751 times.
5695815 if (code == E6A) { return E06; } // GAL E6 - PRS signal
637
3/4
✓ Branch 1 taken 5689704 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 5683600 times.
5689751 if (code == E6B) { return E06; } // GAL E6 - Data
638
3/4
✓ Branch 1 taken 5683634 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6123 times.
✓ Branch 4 taken 5677511 times.
5683600 if (code == E6C) { return E06; } // GAL E6 - Pilot
639
3/4
✓ Branch 1 taken 5677479 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6132 times.
✓ Branch 4 taken 5671347 times.
5677511 if (code == E6X) { return E06; } // GAL E6 - Combined (B+C)
640
3/4
✓ Branch 1 taken 5671415 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 5665311 times.
5671347 if (code == E6Z) { return E06; } // GAL E6 - PRS + OS (A+B+C)
641
3/4
✓ Branch 1 taken 5665234 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100909 times.
✓ Branch 4 taken 5564325 times.
5665311 if (code == E7I) { return E07; } // GAL E5b - Data
642
3/4
✓ Branch 1 taken 5564468 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1417478 times.
✓ Branch 4 taken 4146990 times.
5564325 if (code == E7Q) { return E07; } // GAL E5b - Pilot
643
3/4
✓ Branch 1 taken 4147026 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 385086 times.
✓ Branch 4 taken 3761940 times.
4146990 if (code == E7X) { return E07; } // GAL E5b - Combined
644
3/4
✓ Branch 1 taken 3762173 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 100911 times.
✓ Branch 4 taken 3661262 times.
3761940 if (code == E8I) { return E08; } // GAL E5(a+b) - AltBOC (data)
645
3/4
✓ Branch 1 taken 3661277 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1348979 times.
✓ Branch 4 taken 2312298 times.
3661262 if (code == E8Q) { return E08; } // GAL E5(a+b) - AltBOC (pilot)
646
3/4
✓ Branch 1 taken 2312279 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6932 times.
✓ Branch 4 taken 2305347 times.
2312298 if (code == E8X) { return E08; } // GAL E5(a+b) - AltBOC (combined)
647
648
3/4
✓ Branch 1 taken 2305328 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 480515 times.
✓ Branch 4 taken 1824813 times.
2305347 if (code == R1C) { return R01; } // GLO L1 - C/A-code
649
3/4
✓ Branch 1 taken 1825030 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 27761 times.
✓ Branch 4 taken 1797269 times.
1824813 if (code == R1P) { return R01; } // GLO L1 - P-code
650
3/4
✓ Branch 1 taken 1797251 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 418916 times.
✓ Branch 4 taken 1378335 times.
1797269 if (code == R2C) { return R02; } // GLO L2 - C/A-code
651
3/4
✓ Branch 1 taken 1378451 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 27742 times.
✓ Branch 4 taken 1350709 times.
1378335 if (code == R2P) { return R02; } // GLO L2 - P-code
652
3/4
✓ Branch 1 taken 1350701 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1346221 times.
1350709 if (code == R3I) { return R03; } // GLO L3 - Data
653
3/4
✓ Branch 1 taken 1346228 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4499 times.
✓ Branch 4 taken 1341729 times.
1346221 if (code == R3Q) { return R03; } // GLO L3 - Pilot
654
3/4
✓ Branch 1 taken 1341726 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4508 times.
✓ Branch 4 taken 1337218 times.
1341729 if (code == R3X) { return R03; } // GLO L3 - Combined
655
3/4
✓ Branch 1 taken 1337220 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1332740 times.
1337218 if (code == R4A) { return R04; } // GLO G1a - L1OCd (data)
656
3/4
✓ Branch 1 taken 1332722 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1328242 times.
1332740 if (code == R4B) { return R04; } // GLO G1a - L1OCp (pilot)
657
3/4
✓ Branch 1 taken 1328253 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1323773 times.
1328242 if (code == R4X) { return R04; } // GLO G1a - L1OCd+L1OCp (combined)
658
3/4
✓ Branch 1 taken 1323747 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1319267 times.
1323773 if (code == R6A) { return R06; } // GLO G2a - L2CSI (data)
659
3/4
✓ Branch 1 taken 1319306 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1314826 times.
1319267 if (code == R6B) { return R06; } // GLO G2a - L2OCp (pilot)
660
3/4
✓ Branch 1 taken 1314797 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 4480 times.
✓ Branch 4 taken 1310317 times.
1314826 if (code == R6X) { return R06; } // GLO G2a - L2CSI+L2OCp (combined)
661
662
3/4
✓ Branch 1 taken 1310314 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 1302198 times.
1310317 if (code == B1D) { return B01; } // BeiDou B1 - Data (D)
663
3/4
✓ Branch 1 taken 1302237 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 1294121 times.
1302198 if (code == B1P) { return B01; } // BeiDou B1 - Pilot(P)
664
3/4
✓ Branch 1 taken 1294102 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 107775 times.
✓ Branch 4 taken 1186327 times.
1294121 if (code == B1X) { return B01; } // BeiDou B1 - D+P
665
3/4
✓ Branch 1 taken 1186365 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 336601 times.
✓ Branch 4 taken 849764 times.
1186327 if (code == B2I) { return B02; } // BeiDou B1-2 - B1I(OS)
666
3/4
✓ Branch 1 taken 849800 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 841684 times.
849764 if (code == B2Q) { return B02; } // BeiDou B1-2 - B1Q
667
3/4
✓ Branch 1 taken 841655 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 82730 times.
✓ Branch 4 taken 758925 times.
841684 if (code == B2X) { return B02; } // BeiDou B1-2 - B1I(OS), B1Q, combined
668
3/4
✓ Branch 1 taken 758987 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 750871 times.
758925 if (code == B5D) { return B05; } // BeiDou B2a - Data (D)
669
3/4
✓ Branch 1 taken 750874 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 742758 times.
750871 if (code == B5P) { return B05; } // BeiDou B2a - Pilot(P)
670
3/4
✓ Branch 1 taken 742761 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 107775 times.
✓ Branch 4 taken 634986 times.
742758 if (code == B5X) { return B05; } // BeiDou B2a - D+P
671
3/4
✓ Branch 1 taken 635002 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 42908 times.
✓ Branch 4 taken 592094 times.
634986 if (code == B6I) { return B06; } // BeiDou B3 - B3I
672
3/4
✓ Branch 1 taken 592093 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7716 times.
✓ Branch 4 taken 584377 times.
592094 if (code == B6Q) { return B06; } // BeiDou B3 - B3Q
673
3/4
✓ Branch 1 taken 584380 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7716 times.
✓ Branch 4 taken 576664 times.
584377 if (code == B6X) { return B06; } // BeiDou B3 - B3I, B3Q, combined
674
3/4
✓ Branch 1 taken 576660 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 7716 times.
✓ Branch 4 taken 568944 times.
576664 if (code == B6A) { return B06; } // BeiDou B3 - B3A
675
3/4
✓ Branch 1 taken 568942 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 42295 times.
✓ Branch 4 taken 526647 times.
568944 if (code == B7I) { return B07; } // BeiDou B2b (BDS-2) - B2I(OS)
676
3/4
✓ Branch 1 taken 526654 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6916 times.
✓ Branch 4 taken 519738 times.
526647 if (code == B7Q) { return B07; } // BeiDou B2b (BDS-2) - B2Q
677
3/4
✓ Branch 1 taken 519735 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 81529 times.
✓ Branch 4 taken 438206 times.
519738 if (code == B7X) { return B07; } // BeiDou B2b (BDS-2) - B2I(OS), B2Q, combined
678
3/4
✓ Branch 1 taken 438222 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 40964 times.
✓ Branch 4 taken 397258 times.
438206 if (code == B7D) { return B07; } // BeiDou B2b (BDS-3) - Data (D)
679
3/4
✓ Branch 1 taken 397259 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6916 times.
✓ Branch 4 taken 390343 times.
397258 if (code == B7P) { return B07; } // BeiDou B2b (BDS-3) - Pilot(P)
680
3/4
✓ Branch 1 taken 390341 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6916 times.
✓ Branch 4 taken 383425 times.
390343 if (code == B7Z) { return B07; } // BeiDou B2b (BDS-3) - D+P
681
3/4
✓ Branch 1 taken 383420 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 375304 times.
383425 if (code == B8D) { return B08; } // BeiDou B2 (B2a+B2b) - Data (D)
682
3/4
✓ Branch 1 taken 375308 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 8116 times.
✓ Branch 4 taken 367192 times.
375304 if (code == B8P) { return B08; } // BeiDou B2 (B2a+B2b) - Pilot(P)
683
3/4
✓ Branch 1 taken 367195 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 9164 times.
✓ Branch 4 taken 358031 times.
367192 if (code == B8X) { return B08; } // BeiDou B2 (B2a+B2b) - D+P
684
685
3/4
✓ Branch 1 taken 358031 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 32423 times.
✓ Branch 4 taken 325608 times.
358031 if (code == J1C) { return J01; } // QZSS L1 - C/A-code
686
3/4
✓ Branch 1 taken 325607 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 319503 times.
325608 if (code == J1S) { return J01; } // QZSS L1 - L1C (data)
687
3/4
✓ Branch 1 taken 319504 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 313400 times.
319503 if (code == J1L) { return J01; } // QZSS L1 - L1C (pilot)
688
3/4
✓ Branch 1 taken 313400 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 32404 times.
✓ Branch 4 taken 280996 times.
313400 if (code == J1X) { return J01; } // QZSS L1 - L1C (combined)
689
3/4
✓ Branch 1 taken 280999 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 32404 times.
✓ Branch 4 taken 248595 times.
280996 if (code == J1Z) { return J01; } // QZSS L1 - L1-SAIF signal
690
3/4
✓ Branch 1 taken 248594 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6904 times.
✓ Branch 4 taken 241690 times.
248595 if (code == J2S) { return J02; } // QZSS L2 - L2C-code (medium)
691
3/4
✓ Branch 1 taken 241689 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6923 times.
✓ Branch 4 taken 234766 times.
241690 if (code == J2L) { return J02; } // QZSS L2 - L2C-code (long)
692
3/4
✓ Branch 1 taken 234766 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 20523 times.
✓ Branch 4 taken 214243 times.
234766 if (code == J2X) { return J02; } // QZSS L2 - L2C-code (combined)
693
3/4
✓ Branch 1 taken 214241 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 19323 times.
✓ Branch 4 taken 194918 times.
214243 if (code == J5I) { return J05; } // QZSS L5 - Data
694
3/4
✓ Branch 1 taken 194919 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5723 times.
✓ Branch 4 taken 189196 times.
194918 if (code == J5Q) { return J05; } // QZSS L5 - Pilot
695
3/4
✓ Branch 1 taken 189198 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 18384 times.
✓ Branch 4 taken 170814 times.
189196 if (code == J5X) { return J05; } // QZSS L5 - Combined
696
3/4
✓ Branch 1 taken 170814 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5704 times.
✓ Branch 4 taken 165110 times.
170814 if (code == J5D) { return J05; } // QZSS L5S - I
697
3/4
✓ Branch 1 taken 165111 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 5704 times.
✓ Branch 4 taken 159407 times.
165110 if (code == J5P) { return J05; } // QZSS L5S - Q
698
3/4
✓ Branch 1 taken 159407 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 18384 times.
✓ Branch 4 taken 141023 times.
159407 if (code == J5Z) { return J05; } // QZSS L5S - I+Q
699
3/4
✓ Branch 1 taken 141024 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 134920 times.
141023 if (code == J6S) { return J06; } // QZSS L6 - L6D LEX signal (short)
700
3/4
✓ Branch 1 taken 134920 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 128816 times.
134920 if (code == J6L) { return J06; } // QZSS L6 - L6P LEX signal (long)
701
3/4
✓ Branch 1 taken 128815 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 122711 times.
128816 if (code == J6X) { return J06; } // QZSS L6 - L6(D+P) LEX signal (combined)
702
3/4
✓ Branch 1 taken 122711 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 116607 times.
122711 if (code == J6E) { return J06; } // QZSS L6 - L6E
703
3/4
✓ Branch 1 taken 116608 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 6104 times.
✓ Branch 4 taken 110504 times.
116607 if (code == J6Z) { return J06; } // QZSS L6 - L6(D+E)
704
705
3/4
✓ Branch 1 taken 110502 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2079 times.
✓ Branch 4 taken 108423 times.
110504 if (code == I5A) { return I05; } // IRNSS L5 - SPS Signal
706
3/4
✓ Branch 1 taken 108423 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2060 times.
✓ Branch 4 taken 106363 times.
108423 if (code == I5B) { return I05; } // IRNSS L5 - RS (data)
707
3/4
✓ Branch 1 taken 106364 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2060 times.
✓ Branch 4 taken 104304 times.
106363 if (code == I5C) { return I05; } // IRNSS L5 - RS (pilot)
708
3/4
✓ Branch 1 taken 104302 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 15864 times.
✓ Branch 4 taken 88438 times.
104304 if (code == I5X) { return I05; } // IRNSS L5 - RS (combined)
709
3/4
✓ Branch 1 taken 88439 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2060 times.
✓ Branch 4 taken 86379 times.
88438 if (code == I9A) { return I09; } // IRNSS S - SPS signal
710
3/4
✓ Branch 1 taken 86378 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2060 times.
✓ Branch 4 taken 84318 times.
86379 if (code == I9B) { return I09; } // IRNSS S - RS (data)
711
3/4
✓ Branch 1 taken 84316 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2060 times.
✓ Branch 4 taken 82256 times.
84318 if (code == I9C) { return I09; } // IRNSS S - RS (pilot)
712
3/4
✓ Branch 1 taken 82259 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 2060 times.
✓ Branch 4 taken 80199 times.
82256 if (code == I9X) { return I09; } // IRNSS S - RS (combined)
713
714
3/4
✓ Branch 1 taken 80198 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 39687 times.
✓ Branch 4 taken 40511 times.
80199 if (code == S1C) { return S01; } // SBAS L1 - C/A-code
715
3/4
✓ Branch 1 taken 40511 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 863 times.
✓ Branch 4 taken 39648 times.
40511 if (code == S5I) { return S05; } // SBAS L5 - Data
716
3/4
✓ Branch 1 taken 39649 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 844 times.
✓ Branch 4 taken 38805 times.
39648 if (code == S5Q) { return S05; } // SBAS L5 - Pilot
717
2/4
✓ Branch 1 taken 38805 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 38805 times.
✗ Branch 4 not taken.
38805 if (code == S5X) { return S05; } // SBAS L5 - Combined
718
719 return Freq_None;
720 }
721
722 16600974 Frequency Code::getFrequency() const
723 {
724 16600974 return GetCodeFequency(*this);
725 }
726
727 bool Code::IsCodeCombined(Code first, Code second)
728 {
729 return ((first & Code_G1S_G1L_G1X) && (second & Code_G1S_G1L_G1X))
730 || ((first & Code_G2S_G2L_G2X) && (second & Code_G2S_G2L_G2X))
731 || ((first & Code_G5I_G5Q_G5X) && (second & Code_G5I_G5Q_G5X))
732 || ((first & Code_E1B_E1C_E1X) && (second & Code_E1B_E1C_E1X))
733 || ((first & Code_E5I_E5Q_E5X) && (second & Code_E5I_E5Q_E5X))
734 || ((first & Code_E6B_E6C_E6X) && (second & Code_E6B_E6C_E6X))
735 || ((first & Code_E7I_E7Q_E7X) && (second & Code_E7I_E7Q_E7X))
736 || ((first & Code_E8I_E8Q_E8X) && (second & Code_E8I_E8Q_E8X))
737 || ((first & Code_R3I_R3Q_R3X) && (second & Code_R3I_R3Q_R3X))
738 || ((first & Code_R4A_R4B_R4X) && (second & Code_R4A_R4B_R4X))
739 || ((first & Code_R6A_R6B_R6X) && (second & Code_R6A_R6B_R6X))
740 || ((first & Code_B1D_B1P_B1X) && (second & Code_B1D_B1P_B1X))
741 || ((first & Code_B2I_B2Q_B2X) && (second & Code_B2I_B2Q_B2X))
742 || ((first & Code_B5D_B5P_B5X) && (second & Code_B5D_B5P_B5X))
743 || ((first & Code_B6I_B6Q_B6X) && (second & Code_B6I_B6Q_B6X))
744 || ((first & Code_B7I_B7Q_B7X) && (second & Code_B7I_B7Q_B7X))
745 || ((first & Code_B7D_B7P_B7Z) && (second & Code_B7D_B7P_B7Z))
746 || ((first & Code_B8D_B8P_B8X) && (second & Code_B8D_B8P_B8X))
747 || ((first & Code_J1S_J1L_J1X) && (second & Code_J1S_J1L_J1X))
748 || ((first & Code_J2S_J2L_J2X) && (second & Code_J2S_J2L_J2X))
749 || ((first & Code_J5I_J5Q_J5X) && (second & Code_J5I_J5Q_J5X))
750 || ((first & Code_J5D_J5P_J5Z) && (second & Code_J5D_J5P_J5Z))
751 || ((first & Code_J6S_J6L_J6X) && (second & Code_J6S_J6L_J6X))
752 || ((first & Code_I5B_I5C_I5X) && (second & Code_I5B_I5C_I5X))
753 || ((first & Code_I9B_I9C_I9X) && (second & Code_I9B_I9C_I9X))
754 || ((first & Code_S5I_S5Q_S5X) && (second & Code_S5I_S5Q_S5X));
755 }
756
757 4 std::vector<Code> Code::GetAll()
758 {
759 4 std::vector<Code> codes;
760
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
4 codes.reserve(COUNT);
761
2/2
✓ Branch 0 taken 428 times.
✓ Branch 1 taken 4 times.
432 for (size_t i = 1; i < static_cast<size_t>(COUNT); i++)
762 {
763
1/2
✓ Branch 1 taken 428 times.
✗ Branch 2 not taken.
428 codes.emplace_back(static_cast<Enum>(i));
764 }
765 4 return codes;
766 }
767
768 13954606 Code::Enum Code::GetCodeEnumValue(Code code)
769 {
770
1/2
✓ Branch 0 taken 348752621 times.
✗ Branch 1 not taken.
348652258 for (size_t i = 0; i < static_cast<size_t>(COUNT); i++)
771 {
772
3/4
✓ Branch 1 taken 348650941 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 13953289 times.
✓ Branch 4 taken 334697652 times.
348752621 if (static_cast<Enum>(i) == code) { return static_cast<Enum>(i); }
773 }
774 return Code::None;
775 }
776
777 13954692 Code::Enum Code::getEnumValue() const
778 {
779 13954692 return GetCodeEnumValue(*this);
780 }
781
782 // #########################################################################################################################################
783
784 519204 Code operator|(const Code& lhs, const Code& rhs)
785 {
786 519204 return Code(lhs.value | rhs.value);
787 }
788 519116 Code operator|(const Code& lhs, const Code::Enum& rhs)
789 {
790
1/2
✓ Branch 1 taken 519116 times.
✗ Branch 2 not taken.
519116 return Code(lhs.value | Code(rhs).value);
791 }
792 Code operator|(const Code::Enum& lhs, const Code& rhs)
793 {
794 return Code(Code::Set().set(lhs, true) | rhs.value);
795 }
796
797 88 Code& Code::operator|=(const Code& rhs)
798 {
799 88 *this = *this | rhs;
800 88 return *this;
801 }
802 Code& Code::operator|=(const Enum& rhs)
803 {
804 *this = *this | rhs;
805 return *this;
806 }
807
808 384134 Code operator&(const Code& lhs, const Code& rhs)
809 {
810 384134 return Code(lhs.value & rhs.value);
811 }
812 72309337 Code operator&(const Code& lhs, const Code::Enum& rhs)
813 {
814
1/2
✓ Branch 2 taken 72310158 times.
✗ Branch 3 not taken.
72309337 return Code(lhs.value & Code::Set().set(rhs, true));
815 }
816 Code operator&(const Code::Enum& lhs, const Code& rhs)
817 {
818 return Code(Code::Set().set(lhs, true) & rhs.value);
819 }
820
821 519116 Code operator|(const Code::Enum& lhs, const Code::Enum& rhs)
822 {
823
2/4
✓ Branch 1 taken 519116 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 519116 times.
✗ Branch 5 not taken.
519116 return Code(lhs) | Code(rhs);
824 }
825 Code operator&(const Code::Enum& lhs, const Code::Enum& rhs)
826 {
827 return Code(lhs) & Code(rhs);
828 }
829
830 Code& Code::operator&=(const Code& rhs)
831 {
832 *this = *this & rhs;
833 return *this;
834 }
835 Code& Code::operator&=(const Enum& rhs)
836 {
837 *this = *this & rhs;
838 return *this;
839 }
840
841 79864 Code Code::operator~() const
842 {
843 79864 return Code(~value);
844 }
845
846 // #########################################################################################################################################
847
848 1171768831 bool operator==(const Code& lhs, const Code& rhs)
849 {
850 1171768831 return lhs.value == rhs.value;
851 }
852
853 434888947 bool operator==(const Code& lhs, const Code::Enum& rhs)
854 {
855
1/2
✓ Branch 1 taken 434833708 times.
✗ Branch 2 not taken.
434888947 return lhs.value == Code(rhs).value;
856 }
857
858 348584118 bool operator==(const Code::Enum& lhs, const Code& rhs)
859 {
860
1/2
✓ Branch 1 taken 348700228 times.
✗ Branch 2 not taken.
348584118 return Code(lhs).value == rhs.value;
861 }
862
863 583506 bool operator!=(const Code& lhs, const Code& rhs)
864 {
865 583506 return !(lhs == rhs);
866 }
867
868 bool operator!=(const Code& lhs, const Code::Enum& rhs)
869 {
870 return !(lhs == rhs);
871 }
872
873 bool operator!=(const Code::Enum& lhs, const Code& rhs)
874 {
875 return !(lhs == rhs);
876 }
877
878 111315 bool operator<(const Code& lhs, const Code& rhs)
879 {
880 111315 return lhs.getEnumValue() < rhs.getEnumValue();
881 }
882
883 bool operator<(const Code& lhs, const Code::Enum& rhs)
884 {
885 return lhs.getEnumValue() < rhs;
886 }
887
888 bool operator<(const Code::Enum& lhs, const Code& rhs)
889 {
890 return lhs < rhs.getEnumValue();
891 }
892
893 // #########################################################################################################################################
894
895 Code operator&(Code lhs, SatelliteSystem_ rhs)
896 {
897 if (rhs == SatSys_None)
898 {
899 return Code(Code::Set());
900 }
901 if (rhs & GPS)
902 {
903 for (int i = Code::_GPS_START; i <= Code::_GPS_END; i++) { lhs &= Code(Code::Enum(i)); }
904 }
905 if (rhs & GAL)
906 {
907 for (int i = Code::_GAL_START; i <= Code::_GAL_END; i++) { lhs &= Code(Code::Enum(i)); }
908 }
909 if (rhs & GLO)
910 {
911 for (int i = Code::_GLO_START; i <= Code::_GLO_END; i++) { lhs &= Code(Code::Enum(i)); }
912 }
913 if (rhs & BDS)
914 {
915 for (int i = Code::_BDS_START; i <= Code::_BDS_END; i++) { lhs &= Code(Code::Enum(i)); }
916 }
917 if (rhs & QZSS)
918 {
919 for (int i = Code::_QZSS_START; i <= Code::_QZSS_END; i++) { lhs &= Code(Code::Enum(i)); }
920 }
921 if (rhs & IRNSS)
922 {
923 for (int i = Code::_IRNSS_START; i <= Code::_IRNSS_END; i++) { lhs &= Code(Code::Enum(i)); }
924 }
925 if (rhs & SBAS)
926 {
927 for (int i = Code::_SBAS_START; i <= Code::_SBAS_END; i++) { lhs &= Code(Code::Enum(i)); }
928 }
929
930 return lhs;
931 }
932 Code operator&(SatelliteSystem_ lhs, Code rhs)
933 {
934 return rhs & lhs;
935 }
936 Code& Code::operator&=(const SatelliteSystem_& rhs)
937 {
938 *this = *this & rhs;
939 return *this;
940 }
941 Code operator&(Code lhs, SatelliteSystem rhs)
942 {
943 return lhs & SatelliteSystem_(rhs);
944 }
945 Code operator&(SatelliteSystem lhs, Code rhs)
946 {
947 return SatelliteSystem_(lhs) & rhs;
948 }
949 Code& Code::operator&=(const SatelliteSystem& rhs)
950 {
951 *this = *this & rhs;
952 return *this;
953 }
954
955 Code operator|(Code lhs, SatelliteSystem_ rhs)
956 {
957 if (rhs == SatSys_None)
958 {
959 return lhs;
960 }
961 if (rhs & GPS)
962 {
963 for (int i = Code::_GPS_START; i <= Code::_GPS_END; i++) { lhs |= Code(Code::Enum(i)); }
964 }
965 if (rhs & GAL)
966 {
967 for (int i = Code::_GAL_START; i <= Code::_GAL_END; i++) { lhs |= Code(Code::Enum(i)); }
968 }
969 if (rhs & GLO)
970 {
971 for (int i = Code::_GLO_START; i <= Code::_GLO_END; i++) { lhs |= Code(Code::Enum(i)); }
972 }
973 if (rhs & BDS)
974 {
975 for (int i = Code::_BDS_START; i <= Code::_BDS_END; i++) { lhs |= Code(Code::Enum(i)); }
976 }
977 if (rhs & QZSS)
978 {
979 for (int i = Code::_QZSS_START; i <= Code::_QZSS_END; i++) { lhs |= Code(Code::Enum(i)); }
980 }
981 if (rhs & IRNSS)
982 {
983 for (int i = Code::_IRNSS_START; i <= Code::_IRNSS_END; i++) { lhs |= Code(Code::Enum(i)); }
984 }
985 if (rhs & SBAS)
986 {
987 for (int i = Code::_SBAS_START; i <= Code::_SBAS_END; i++) { lhs |= Code(Code::Enum(i)); }
988 }
989
990 return lhs;
991 }
992 Code operator|(SatelliteSystem_ lhs, Code rhs)
993 {
994 return rhs | lhs;
995 }
996 Code& Code::operator|=(const SatelliteSystem_& rhs)
997 {
998 *this = *this | rhs;
999 return *this;
1000 }
1001 Code operator|(Code lhs, SatelliteSystem rhs)
1002 {
1003 return lhs | SatelliteSystem_(rhs);
1004 }
1005 Code operator|(SatelliteSystem lhs, Code rhs)
1006 {
1007 return SatelliteSystem_(lhs) | rhs;
1008 }
1009 Code& Code::operator|=(const SatelliteSystem& rhs)
1010 {
1011 *this = *this | rhs;
1012 return *this;
1013 }
1014
1015 // #########################################################################################################################################
1016
1017 Code operator&(Code lhs, Frequency_ rhs)
1018 {
1019 LOG_DATA("Before ({}) & ({})", Frequency(rhs), lhs);
1020 if (rhs == Freq_None)
1021 {
1022 return Code(Code::Set());
1023 }
1024 if (!(rhs & Frequency_::G01))
1025 {
1026 for (int i = Code::_G01_START; i <= Code::_G01_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1027 }
1028 if (!(rhs & Frequency_::G02))
1029 {
1030 for (int i = Code::_G02_START; i <= Code::_G02_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1031 }
1032 if (!(rhs & Frequency_::G05))
1033 {
1034 for (int i = Code::_G05_START; i <= Code::_G05_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1035 }
1036 if (!(rhs & Frequency_::E01))
1037 {
1038 for (int i = Code::_E01_START; i <= Code::_E01_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1039 }
1040 if (!(rhs & Frequency_::E05))
1041 {
1042 for (int i = Code::_E05_START; i <= Code::_E05_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1043 }
1044 if (!(rhs & Frequency_::E06))
1045 {
1046 for (int i = Code::_E06_START; i <= Code::_E06_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1047 }
1048 if (!(rhs & Frequency_::E07))
1049 {
1050 for (int i = Code::_E07_START; i <= Code::_E07_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1051 }
1052 if (!(rhs & Frequency_::E08))
1053 {
1054 for (int i = Code::_E08_START; i <= Code::_E08_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1055 }
1056 if (!((rhs & Frequency_::R01) || (rhs & Frequency_::R04)))
1057 {
1058 for (int i = Code::_R01_START; i <= Code::_R01_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1059 }
1060 if (!((rhs & Frequency_::R02) || (rhs & Frequency_::R06)))
1061 {
1062 for (int i = Code::_R02_START; i <= Code::_R02_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1063 }
1064 if (!(rhs & Frequency_::R03))
1065 {
1066 for (int i = Code::_R03_START; i <= Code::_R03_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1067 }
1068 if (!(rhs & Frequency_::R04))
1069 {
1070 for (int i = Code::_R04_START; i <= Code::_R04_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1071 }
1072 if (!(rhs & Frequency_::R06))
1073 {
1074 for (int i = Code::_R06_START; i <= Code::_R06_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1075 }
1076 if (!(rhs & Frequency_::B01))
1077 {
1078 for (int i = Code::_B01_START; i <= Code::_B01_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1079 }
1080 if (!(rhs & Frequency_::B02))
1081 {
1082 for (int i = Code::_B02_START; i <= Code::_B02_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1083 }
1084 if (!(rhs & Frequency_::B05))
1085 {
1086 for (int i = Code::_B05_START; i <= Code::_B05_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1087 }
1088 if (!(rhs & Frequency_::B06))
1089 {
1090 for (int i = Code::_B06_START; i <= Code::_B06_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1091 }
1092 if (!(rhs & Frequency_::B07))
1093 {
1094 for (int i = Code::_B07_START; i <= Code::_B07_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1095 }
1096 if (!(rhs & Frequency_::B08))
1097 {
1098 for (int i = Code::_B08_START; i <= Code::_B08_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1099 }
1100 if (!(rhs & Frequency_::J01))
1101 {
1102 for (int i = Code::_J01_START; i <= Code::_J01_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1103 }
1104 if (!(rhs & Frequency_::J02))
1105 {
1106 for (int i = Code::_J02_START; i <= Code::_J02_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1107 }
1108 if (!(rhs & Frequency_::J05))
1109 {
1110 for (int i = Code::_J05_START; i <= Code::_J05_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1111 }
1112 if (!(rhs & Frequency_::J06))
1113 {
1114 for (int i = Code::_J06_START; i <= Code::_J06_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1115 }
1116 if (!(rhs & Frequency_::I05))
1117 {
1118 for (int i = Code::_I05_START; i <= Code::_I05_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1119 }
1120 if (!(rhs & Frequency_::I09))
1121 {
1122 for (int i = Code::_I09_START; i <= Code::_I09_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1123 }
1124 if (!(rhs & Frequency_::S01))
1125 {
1126 for (int i = Code::_S01_START; i <= Code::_S01_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1127 }
1128 if (!(rhs & Frequency_::S05))
1129 {
1130 for (int i = Code::_S05_START; i <= Code::_S05_END; i++) { lhs &= ~Code(Code::Enum(i)); }
1131 }
1132 LOG_DATA("After ({}) & ({})", Frequency(rhs), lhs);
1133
1134 return lhs;
1135 }
1136 Code operator&(Frequency_ lhs, Code rhs)
1137 {
1138 return rhs & lhs;
1139 }
1140 Code& Code::operator&=(const Frequency_& rhs)
1141 {
1142 *this = *this & rhs;
1143 return *this;
1144 }
1145 Code operator&(Code lhs, Frequency rhs)
1146 {
1147 return lhs & Frequency_(rhs);
1148 }
1149 Code operator&(Frequency lhs, Code rhs)
1150 {
1151 return Frequency_(lhs) & rhs;
1152 }
1153 Code& Code::operator&=(const Frequency& rhs)
1154 {
1155 *this = *this & rhs;
1156 return *this;
1157 }
1158
1159 12 Code operator|(Code lhs, Frequency_ rhs)
1160 {
1161 LOG_DATA("Before ({}) & ({})", Frequency(rhs), lhs);
1162
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 12 times.
12 if (rhs == Freq_None)
1163 {
1164 return lhs;
1165 }
1166
2/2
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 8 times.
12 if (rhs & Frequency_::G01)
1167 {
1168
3/4
✓ Branch 1 taken 36 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 36 times.
✓ Branch 5 taken 4 times.
40 for (int i = Code::_G01_START; i <= Code::_G01_END; i++) { lhs |= Code(Code::Enum(i)); }
1169 }
1170
2/2
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 8 times.
12 if (rhs & Frequency_::G02)
1171 {
1172
3/4
✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 40 times.
✓ Branch 5 taken 4 times.
44 for (int i = Code::_G02_START; i <= Code::_G02_END; i++) { lhs |= Code(Code::Enum(i)); }
1173 }
1174
2/2
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 8 times.
12 if (rhs & Frequency_::G05)
1175 {
1176
3/4
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 12 times.
✓ Branch 5 taken 4 times.
16 for (int i = Code::_G05_START; i <= Code::_G05_END; i++) { lhs |= Code(Code::Enum(i)); }
1177 }
1178
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::E01)
1179 {
1180 for (int i = Code::_E01_START; i <= Code::_E01_END; i++) { lhs |= Code(Code::Enum(i)); }
1181 }
1182
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::E05)
1183 {
1184 for (int i = Code::_E05_START; i <= Code::_E05_END; i++) { lhs |= Code(Code::Enum(i)); }
1185 }
1186
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::E06)
1187 {
1188 for (int i = Code::_E06_START; i <= Code::_E06_END; i++) { lhs |= Code(Code::Enum(i)); }
1189 }
1190
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::E07)
1191 {
1192 for (int i = Code::_E07_START; i <= Code::_E07_END; i++) { lhs |= Code(Code::Enum(i)); }
1193 }
1194
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::E08)
1195 {
1196 for (int i = Code::_E08_START; i <= Code::_E08_END; i++) { lhs |= Code(Code::Enum(i)); }
1197 }
1198
3/6
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 12 times.
12 if ((rhs & Frequency_::R01) || (rhs & Frequency_::R04))
1199 {
1200 for (int i = Code::_R01_START; i <= Code::_R01_END; i++) { lhs |= Code(Code::Enum(i)); }
1201 }
1202
3/6
✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 12 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 12 times.
12 if ((rhs & Frequency_::R02) || (rhs & Frequency_::R06))
1203 {
1204 for (int i = Code::_R02_START; i <= Code::_R02_END; i++) { lhs |= Code(Code::Enum(i)); }
1205 }
1206
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::R03)
1207 {
1208 for (int i = Code::_R03_START; i <= Code::_R03_END; i++) { lhs |= Code(Code::Enum(i)); }
1209 }
1210
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::R04)
1211 {
1212 for (int i = Code::_R04_START; i <= Code::_R04_END; i++) { lhs |= Code(Code::Enum(i)); }
1213 }
1214
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::R06)
1215 {
1216 for (int i = Code::_R06_START; i <= Code::_R06_END; i++) { lhs |= Code(Code::Enum(i)); }
1217 }
1218
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::B01)
1219 {
1220 for (int i = Code::_B01_START; i <= Code::_B01_END; i++) { lhs |= Code(Code::Enum(i)); }
1221 }
1222
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::B02)
1223 {
1224 for (int i = Code::_B02_START; i <= Code::_B02_END; i++) { lhs |= Code(Code::Enum(i)); }
1225 }
1226
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::B05)
1227 {
1228 for (int i = Code::_B05_START; i <= Code::_B05_END; i++) { lhs |= Code(Code::Enum(i)); }
1229 }
1230
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::B06)
1231 {
1232 for (int i = Code::_B06_START; i <= Code::_B06_END; i++) { lhs |= Code(Code::Enum(i)); }
1233 }
1234
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::B07)
1235 {
1236 for (int i = Code::_B07_START; i <= Code::_B07_END; i++) { lhs |= Code(Code::Enum(i)); }
1237 }
1238
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::B08)
1239 {
1240 for (int i = Code::_B08_START; i <= Code::_B08_END; i++) { lhs |= Code(Code::Enum(i)); }
1241 }
1242
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::J01)
1243 {
1244 for (int i = Code::_J01_START; i <= Code::_J01_END; i++) { lhs |= Code(Code::Enum(i)); }
1245 }
1246
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::J02)
1247 {
1248 for (int i = Code::_J02_START; i <= Code::_J02_END; i++) { lhs |= Code(Code::Enum(i)); }
1249 }
1250
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::J05)
1251 {
1252 for (int i = Code::_J05_START; i <= Code::_J05_END; i++) { lhs |= Code(Code::Enum(i)); }
1253 }
1254
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::J06)
1255 {
1256 for (int i = Code::_J06_START; i <= Code::_J06_END; i++) { lhs |= Code(Code::Enum(i)); }
1257 }
1258
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::I05)
1259 {
1260 for (int i = Code::_I05_START; i <= Code::_I05_END; i++) { lhs |= Code(Code::Enum(i)); }
1261 }
1262
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::I09)
1263 {
1264 for (int i = Code::_I09_START; i <= Code::_I09_END; i++) { lhs |= Code(Code::Enum(i)); }
1265 }
1266
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::S01)
1267 {
1268 for (int i = Code::_S01_START; i <= Code::_S01_END; i++) { lhs |= Code(Code::Enum(i)); }
1269 }
1270
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 12 times.
12 if (rhs & Frequency_::S05)
1271 {
1272 for (int i = Code::_S05_START; i <= Code::_S05_END; i++) { lhs |= Code(Code::Enum(i)); }
1273 }
1274 LOG_DATA("After ({}) & ({})", Frequency(rhs), lhs);
1275
1276 12 return lhs;
1277 }
1278 Code operator|(Frequency_ lhs, Code rhs)
1279 {
1280 return rhs | lhs;
1281 }
1282 Code& Code::operator|=(const Frequency_& rhs)
1283 {
1284 *this = *this | rhs;
1285 return *this;
1286 }
1287 Code operator|(Code lhs, Frequency rhs)
1288 {
1289 return lhs | Frequency_(rhs);
1290 }
1291 Code operator|(Frequency lhs, Code rhs)
1292 {
1293 return Frequency_(lhs) | rhs;
1294 }
1295 Code& Code::operator|=(const Frequency& rhs)
1296 {
1297 *this = *this | rhs;
1298 return *this;
1299 }
1300
1301 void to_json(json& j, const Code& data)
1302 {
1303 j = Code::Set(data).to_string();
1304 }
1305 15 void from_json(const json& j, Code& data)
1306 {
1307
2/4
✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
15 data = Code(Code::Set(j.get<std::string>()));
1308 15 }
1309
1310 bool ShowCodeSelector(const char* label, Code& code, const Frequency& filterFreq, bool singleSelect)
1311 {
1312 bool valueChanged = false;
1313 if (ImGui::BeginCombo(label, std::string(code).c_str(), ImGuiComboFlags_HeightLargest))
1314 {
1315 if (ImGui::BeginTable(fmt::format("{} Table", label).c_str(), 7, ImGuiTableFlags_BordersInnerV | ImGuiTableFlags_ScrollY))
1316 {
1317 ImGui::TableSetupScrollFreeze(0, 1);
1318 for (uint64_t satSys = 0xFF; satSys < static_cast<uint64_t>(0xFF) << (7 * 8); satSys = satSys << 8UL)
1319 {
1320 ImGui::TableSetupColumn(std::string(SatelliteSystem(SatelliteSystem_(satSys))).c_str());
1321 }
1322 ImGui::TableHeadersRow();
1323 ImGui::TableNextRow();
1324 for (int satSys = 0; satSys < 7; satSys++)
1325 {
1326 ImGui::TableSetColumnIndex(satSys);
1327 for (uint64_t f = 0; f < 8; f++)
1328 {
1329 uint64_t flag = (static_cast<uint64_t>(1) << (f + static_cast<uint64_t>(satSys) * 8));
1330 auto frequency = Frequency(Frequency_(flag));
1331 auto text = std::string(frequency);
1332 if (text == "None")
1333 {
1334 continue;
1335 }
1336 bool hasCode = false;
1337 for (int c = 0; c < Code::COUNT; c++)
1338 {
1339 auto co = Code(Code::Enum(c));
1340 if (co.getFrequency() == frequency)
1341 {
1342 hasCode = true;
1343 break;
1344 }
1345 }
1346 if (hasCode)
1347 {
1348 ImGui::Text("%s", text.c_str());
1349 if (!(frequency & filterFreq))
1350 {
1351 ImGui::PushStyleVar(ImGuiStyleVar_Alpha, ImGui::GetStyle().Alpha * 0.6F);
1352 }
1353 ImGui::Indent();
1354 for (int c = 0; c < Code::COUNT; c++)
1355 {
1356 auto co = Code(Code::Enum(c));
1357 if (co.getFrequency() == frequency)
1358 {
1359 auto checked = bool(co & code);
1360 if (c > 0 && Code::IsCodeCombined(Code(Code::Enum(c - 1)), co))
1361 {
1362 ImGui::SameLine();
1363 }
1364 if (ImGui::Checkbox(std::string(co).c_str(), &checked) && (frequency & filterFreq))
1365 {
1366 if (checked)
1367 {
1368 if (singleSelect) { code = co; }
1369 else { code |= co; }
1370 valueChanged = true;
1371 }
1372 else if (!singleSelect)
1373 {
1374 code &= ~co;
1375 valueChanged = true;
1376 }
1377 }
1378 if (ImGui::IsItemHovered())
1379 {
1380 ImGui::SetTooltip("%s", co.getDescription());
1381 }
1382 }
1383 }
1384 ImGui::Unindent();
1385 if (!(frequency & filterFreq))
1386 {
1387 ImGui::PopStyleVar();
1388 }
1389 }
1390 }
1391 }
1392
1393 ImGui::EndTable();
1394 }
1395 ImGui::EndCombo();
1396 }
1397 return valueChanged;
1398 }
1399
1400 } // namespace NAV
1401
1402 std::ostream& operator<<(std::ostream& os, const NAV::Code& obj)
1403 {
1404 return os << fmt::format("{}", obj);
1405 }
1406