| 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 |
|
|
|