GCC Code Coverage Report


ernie/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
169 / 370
45.7%
Branches:
141 / 425
33.2%
Functions:
15 / 30, 5 excl
50.0%

util/bytes.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 /// @file bytes.h
3 /// @brief Typed loads from raw bytes, byte-order swaps for reading binary formats, and bit sets.
4 #pragma once
5
6 #include <algorithm>
7 #include <array>
8 #include <bit>
9 #include <cstddef>
10 #include <cstdint>
11 #include <cstring>
12 #include <span>
13 #include <stdexcept>
14 #include <string>
15 #include <type_traits>
16 #include <vector>
17
18 namespace ernie {
19
20 /// @brief Reads a value from bytes that need not be aligned for it.
21 /// @tparam T A trivially copyable type.
22 /// @param bytes Where the value starts, in host byte order.
23 /// @return The value.
24 13945 template <typename T> T LoadAs(const std::byte* bytes) {
25 static_assert(std::is_trivially_copyable_v<T>);
26 T value;
27 13945 std::memcpy(&value, bytes, sizeof(T));
28 13945 return value;
29 }
30
31 /// @brief Reads a little-endian value at an offset, as binary formats store them.
32 /// @tparam T A trivially copyable type.
33 /// @param bytes The data, of any one-byte element type.
34 /// @param at The value's offset in bytes.
35 /// @return The value in host order.
36 /// @throws std::runtime_error If the value runs past the data's end.
37 template <typename T, typename Byte, std::size_t Extent>
38 requires(sizeof(Byte) == 1)
39
2/4
unsigned char ernie::ReadLittleEndian<unsigned char, unsigned char, 18446744073709551615ul>(std::span<unsigned char const, 18446744073709551615ul>, unsigned long):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
unsigned int ernie::ReadLittleEndian<unsigned int, unsigned char, 18446744073709551615ul>(std::span<unsigned char const, 18446744073709551615ul>, unsigned long):
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
1103 T ReadLittleEndian(std::span<const Byte, Extent> bytes, std::size_t at) {
40
6/12
unsigned char ernie::ReadLittleEndian<unsigned char, unsigned char, 18446744073709551615ul>(std::span<unsigned char const, 18446744073709551615ul>, unsigned long):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
unsigned int ernie::ReadLittleEndian<unsigned int, unsigned char, 18446744073709551615ul>(std::span<unsigned char const, 18446744073709551615ul>, unsigned long):
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 1 time.
unsigned short ernie::ReadLittleEndian<unsigned short, std::byte, 6ul>(std::span<std::byte const, 6ul>, unsigned long):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 time.
1103 if (at > bytes.size() || sizeof(T) > bytes.size() - at) {
41
6/18
unsigned char ernie::ReadLittleEndian<unsigned char, unsigned char, 18446744073709551615ul>(std::span<unsigned char const, 18446744073709551615ul>, unsigned long):
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 time.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
unsigned int ernie::ReadLittleEndian<unsigned int, unsigned char, 18446744073709551615ul>(std::span<unsigned char const, 18446744073709551615ul>, unsigned long):
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 time.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
unsigned short ernie::ReadLittleEndian<unsigned short, std::byte, 6ul>(std::span<std::byte const, 6ul>, unsigned long):
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
6 throw std::runtime_error("Data ends before the value at byte " + std::to_string(at));
42 }
43 std::array<std::byte, sizeof(T)> value;
44 1100 std::memcpy(value.data(), bytes.data() + at, sizeof(T));
45 if constexpr (std::endian::native == std::endian::big) {
46 std::reverse(value.begin(), value.end());
47 }
48 1100 return std::bit_cast<T>(value);
49 }
50
51 /// @brief A four-character code as formats store it, its first character in the lowest byte.
52 /// @param code The four characters.
53 /// @return The code as a little-endian 32-bit value.
54 constexpr std::uint32_t FourCc(const char (&code)[5]) {
55 return static_cast<std::uint32_t>(static_cast<unsigned char>(code[0])) |
56 static_cast<std::uint32_t>(static_cast<unsigned char>(code[1])) << 8 |
57 static_cast<std::uint32_t>(static_cast<unsigned char>(code[2])) << 16 |
58 static_cast<std::uint32_t>(static_cast<unsigned char>(code[3])) << 24;
59 }
60
61 /// @brief Whether values stored in one byte order need swapping on this host.
62 /// @param bigEndian Whether they are stored most significant byte first.
63 /// @param width Their size in bytes.
64 /// @return True if they are wider than a byte and stored in the other order.
65 272 constexpr bool NeedsByteSwap(bool bigEndian, std::size_t width) {
66
7/8
✓ Branch 0 taken 24 times.
✓ Branch 1 taken 205 times.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 23 times.
✓ Branch 4 taken 43 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 2 times.
✓ Branch 7 taken 41 times.
272 return width > 1 && bigEndian != (std::endian::native == std::endian::big);
67 }
68
69 /// @brief A resizable set of bits in 64-bit words, such as a flag per row.
70
6/52
✗ Branch 1 not taken.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 11 taken 62 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 62 times.
✗ Branch 15 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 41 not taken.
✗ Branch 42 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 54 not taken.
✗ Branch 55 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
✗ Branch 71 not taken.
✗ Branch 72 not taken.
✗ Branch 74 not taken.
✗ Branch 75 not taken.
✓ Branch 81 taken 124 times.
✗ Branch 82 not taken.
✓ Branch 84 taken 124 times.
✗ Branch 85 not taken.
✓ Branch 91 taken 62 times.
✗ Branch 92 not taken.
✓ Branch 94 taken 62 times.
✗ Branch 95 not taken.
✗ Branch 101 not taken.
✗ Branch 102 not taken.
✗ Branch 104 not taken.
✗ Branch 105 not taken.
✗ Branch 112 not taken.
✗ Branch 113 not taken.
✗ Branch 115 not taken.
✗ Branch 116 not taken.
✗ Branch 123 not taken.
✗ Branch 124 not taken.
✗ Branch 126 not taken.
✗ Branch 127 not taken.
2343 class BitSet {
71 public:
72 static constexpr std::size_t kWordBits = 64;
73
74 /// @return The words `bits` bits take.
75 669124 static constexpr std::size_t WordCount(std::size_t bits) {
76 333911 return (bits + kWordBits - 1) / kWordBits;
77 }
78
79 1 std::size_t Size() const {
80
1/2
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
1 return size_;
81 }
82 /// @brief Grows with clear bits, or drops the bits past `bits`.
83 335217 void Resize(std::size_t bits) {
84 335217 words_.resize(WordCount(bits), 0);
85 335217 size_ = bits;
86
2/2
✓ Branch 0 taken 185017 times.
✓ Branch 1 taken 150200 times.
335217 if (const std::size_t tail = bits % kWordBits; tail != 0) {
87 185017 words_.back() &= (std::uint64_t{1} << tail) - 1;
88 }
89 335217 }
90 247767 bool Test(std::size_t bit) const {
91
32/81
<unknown function 70>:
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 10 times.
✓ Branch 3 taken 18520 times.
✓ Branch 4 taken 254 times.
✓ Branch 5 taken 9 times.
✓ Branch 6 taken 1743 times.
✓ Branch 7 taken 12234 times.
✓ Branch 8 taken 485 times.
✓ Branch 9 taken 2874 times.
<unknown function 90>:
✓ Branch 0 taken 76 times.
✓ Branch 1 taken 9117 times.
✓ Branch 2 taken 3 times.
✓ Branch 3 taken 3 times.
ernie::BitSet::Resize(unsigned long):
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 time.
✓ Branch 2 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 3 taken 35 times.
✓ Branch 4 taken 1 time.
✓ Branch 4 taken 1211 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 10 not taken.
✓ Branch 11 taken 1 time.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 12 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 14 not taken.
✓ Branch 15 taken 1 time.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 2 times.
✓ Branch 19 taken 1 time.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✓ Branch 41 taken 9012 times.
✓ Branch 42 taken 139 times.
✗ Branch 43 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
✗ Branch 48 not taken.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
✗ Branch 51 not taken.
✗ Branch 52 not taken.
✗ Branch 53 not taken.
✗ Branch 54 not taken.
✓ Branch 55 taken 18026 times.
✓ Branch 56 taken 280 times.
✓ Branch 57 taken 556 times.
✓ Branch 58 taken 139 times.
✗ Branch 59 not taken.
✗ Branch 60 not taken.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
✗ Branch 63 not taken.
✗ Branch 64 not taken.
247765 return (words_[bit / kWordBits] >> (bit % kWordBits) & 1u) != 0;
92 }
93 202453 void Set(std::size_t bit, bool value = true) {
94 202453 const std::uint64_t mask = std::uint64_t{1} << (bit % kWordBits);
95
4/6
ernie::BitSet::Resize(unsigned long):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
ernie::BitSet::Set(unsigned long, bool):
✓ Branch 0 taken 29709 times.
✓ Branch 1 taken 172742 times.
202453 std::uint64_t& word = words_[bit / kWordBits];
96
4/6
ernie::BitSet::Resize(unsigned long):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 time.
ernie::BitSet::Set(unsigned long, bool):
✓ Branch 0 taken 29709 times.
✓ Branch 1 taken 172742 times.
202453 word = value ? word | mask : word & ~mask;
97 202451 }
98 /// @brief Sets bits [begin, end), a word at a time.
99 6681 void SetRange(std::size_t begin, std::size_t end) {
100
2/2
✓ Branch 0 taken 7894 times.
✓ Branch 1 taken 6681 times.
14575 for (std::size_t bit = begin; bit < end;) {
101 7894 const std::size_t offset = bit % kWordBits;
102
2/2
✓ Branch 0 taken 1213 times.
✓ Branch 1 taken 6681 times.
7894 const std::size_t span = std::min(end - bit, kWordBits - offset);
103 15788 const std::uint64_t ones =
104
2/2
✓ Branch 0 taken 6035 times.
✓ Branch 1 taken 1859 times.
7894 span == kWordBits ? ~std::uint64_t{0} : (std::uint64_t{1} << span) - 1;
105 7894 words_[bit / kWordBits] |= ones << offset;
106 7894 bit += span;
107 }
108 6681 }
109 1 std::span<const std::uint64_t> Words() const {
110
1/2
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
1 return words_;
111 }
112 67 void Clear() {
113 67 std::ranges::fill(words_, 0);
114 67 }
115 /// @brief Calls `visit(begin, end)` for each run of set bits, skipping clear words.
116 316 template <typename Visit> void ForEachRun(const Visit& visit) const {
117
12/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 time.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 time.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 91 times.
✓ Branch 1 taken 66 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 373 times.
✓ Branch 1 taken 62 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 2987 times.
✓ Branch 1 taken 62 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 5976 times.
✓ Branch 1 taken 124 times.
9751 for (std::size_t bit = 0; bit < size_;) {
118
11/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 3 times.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 75 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 285 times.
✓ Branch 1 taken 88 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2841 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 292 times.
✓ Branch 1 taken 5684 times.
9435 const std::uint64_t word = words_[bit / kWordBits] >> (bit % kWordBits);
119
11/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 3 times.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 16 times.
✓ Branch 1 taken 75 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 285 times.
✓ Branch 1 taken 88 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 2841 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 292 times.
✓ Branch 1 taken 5684 times.
9435 if (word == 0) {
120 744 bit += kWordBits - bit % kWordBits;
121 744 continue;
122 }
123 8691 bit += static_cast<std::size_t>(std::countr_zero(word));
124 8691 std::size_t end = bit;
125
6/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 251 times.
✓ Branch 1 taken 1 time.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 98 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 2970 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 5942 times.
✗ Branch 1 not taken.
9267 while (end < size_) {
126 9266 const std::size_t offset = end % kWordBits;
127 9266 const auto ones =
128
7/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 time.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 74 times.
✓ Branch 1 taken 177 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 98 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 2970 times.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 5942 times.
✗ Branch 1 not taken.
9266 static_cast<std::size_t>(std::countr_one(words_[end / kWordBits] >> offset));
129 9266 end += ones;
130
10/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 3 times.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 177 times.
✓ Branch 1 taken 74 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 10 times.
✓ Branch 1 taken 88 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 129 times.
✓ Branch 1 taken 2841 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✓ Branch 0 taken 258 times.
✓ Branch 1 taken 5684 times.
9266 if (offset + ones < kWordBits) {
131 break; // The run ends inside this word.
132 }
133 }
134
5/32
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
void ernie::BitSet::ForEachRun<ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2}>(ernie::(anonymous namespace)::Bytes_BitSetRunsSpanWordsAndClearingEmptiesThem_Test::TestBody()::{lambda(unsigned long, unsigned long)#2} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1}>(ernie::ExtentCache::Refresh(ernie::ExtentCache::Entry&, ernie::PrimStore const&, unsigned int)::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 75 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<double>(std::type_identity<double>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<ernie::Target>(std::type_identity<ernie::Target>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 88 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::mat<4, 4, double, (glm::qualifier)0> >(std::type_identity<glm::mat<4, 4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::qua<double, (glm::qualifier)0> >(std::type_identity<glm::qua<double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<2, double, (glm::qualifier)0> >(std::type_identity<glm::vec<2, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<3, double, (glm::qualifier)0> >(std::type_identity<glm::vec<3, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<glm::vec<4, double, (glm::qualifier)0> >(std::type_identity<glm::vec<4, double, (glm::qualifier)0> >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<int>(std::type_identity<int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 2841 times.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<ernie::Target, std::allocator<ernie::Target> > >(std::type_identity<std::vector<ernie::Target, std::allocator<ernie::Target> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<float, std::allocator<float> > >(std::type_identity<std::vector<float, std::allocator<float> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<std::vector<unsigned int, std::allocator<unsigned int> > >(std::type_identity<std::vector<unsigned int, std::allocator<unsigned int> > >) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned char>(std::type_identity<unsigned char>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✗ Branch 1 not taken.
void ernie::BitSet::ForEachRun<ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1}>(ernie::Scene::Resolve()::{lambda<typename $T0>(std::type_identity<$T0>)#1}::operator()<unsigned int>(std::type_identity<unsigned int>) const::{lambda(unsigned long, unsigned long)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 5684 times.
8691 visit(bit, std::min(end, size_));
135 8691 bit = end;
136 }
137 316 }
138
139 private:
140 std::vector<std::uint64_t> words_;
141 std::size_t size_ = 0;
142 };
143
144 /// @brief Reverses the bytes of each `width`-byte value in place, between byte orders.
145 /// @param data The values, packed.
146 /// @param width Each value's size in bytes.
147 4 inline void SwapByteOrder(std::span<std::byte> data, std::size_t width) {
148
2/2
✓ Branch 0 taken 859 times.
✓ Branch 1 taken 4 times.
863 for (std::size_t i = 0; i + width <= data.size(); i += width) {
149 859 std::reverse(data.begin() + static_cast<std::ptrdiff_t>(i),
150 859 data.begin() + static_cast<std::ptrdiff_t>(i + width));
151 }
152 4 }
153
154 } // namespace ernie
155