GCC Code Coverage Report


ernie/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
158 / 241
65.6%
Branches:
123 / 229
53.7%
Functions:
26 / 34
76.5%

util/text.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 /// @file text.h
3 /// @brief Small string helpers for parsing text formats.
4 #pragma once
5
6 #include <algorithm>
7 #include <cctype>
8 #include <cmath>
9 #include <functional>
10 #include <sstream>
11 #include <stdexcept>
12 #include <string>
13 #include <string_view>
14 #include <utility>
15 #include <vector>
16
17 namespace ernie {
18
19 /// @brief Removes leading and trailing whitespace.
20 /// @param text The text.
21 /// @return The text without surrounding spaces, tabs and line breaks.
22 784 inline std::string Trim(std::string_view text) {
23
24/28
✓ Branch 0 taken 419 times.
✓ Branch 1 taken 178 times.
✓ Branch 2 taken 177 times.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 time.
✓ Branch 6 taken 1 time.
✗ Branch 7 not taken.
✓ Branch 8 taken 49 times.
✓ Branch 9 taken 4 times.
✓ Branch 10 taken 55 times.
✓ Branch 11 taken 14 times.
✓ Branch 12 taken 68 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 213 times.
✓ Branch 15 taken 395 times.
✓ Branch 16 taken 92 times.
✓ Branch 17 taken 121 times.
✓ Branch 18 taken 1 time.
✓ Branch 19 taken 91 times.
✓ Branch 20 taken 1 time.
✗ Branch 21 not taken.
✓ Branch 22 taken 16 times.
✓ Branch 23 taken 44 times.
✓ Branch 24 taken 14 times.
✓ Branch 25 taken 64 times.
✓ Branch 26 taken 54 times.
✓ Branch 27 taken 1 time.
1588 const auto space = [](unsigned char c) { return std::isspace(c) != 0; };
24 784 const auto begin = std::find_if_not(text.begin(), text.end(), space);
25 784 const auto end =
26 784 std::find_if_not(text.rbegin(), std::make_reverse_iterator(begin), space).base();
27 784 return std::string(begin, end);
28 }
29
30 /// @brief Converts ASCII letters to upper case.
31 /// @param text The text.
32 /// @return The text in capitals.
33 1223 inline std::string ToUpper(std::string_view text) {
34 1223 std::string upper(text);
35 1223 std::transform(upper.begin(), upper.end(), upper.begin(),
36 13990 [](unsigned char c) { return static_cast<char>(std::toupper(c)); });
37 1223 return upper;
38 }
39
40 /// @brief Converts ASCII letters to lower case.
41 /// @param text The text.
42 /// @return The text in small letters.
43 371 inline std::string ToLower(std::string_view text) {
44 371 std::string lower(text);
45 371 std::transform(lower.begin(), lower.end(), lower.begin(),
46 3166 [](unsigned char c) { return static_cast<char>(std::tolower(c)); });
47 371 return lower;
48 }
49
50 /// @return `count` bytes as lower-case hex digits, two per byte.
51 82 inline std::string Hex(const unsigned char* bytes, std::size_t count) {
52 82 static constexpr char kDigits[] = "0123456789abcdef";
53 82 std::string text;
54
2/2
✓ Branch 0 taken 1312 times.
✓ Branch 1 taken 82 times.
1394 for (std::size_t i = 0; i < count; ++i) {
55
1/2
✓ Branch 1 taken 1312 times.
✗ Branch 2 not taken.
1312 text += kDigits[bytes[i] >> 4];
56
1/2
✓ Branch 1 taken 1312 times.
✗ Branch 2 not taken.
2624 text += kDigits[bytes[i] & 15];
57 }
58 82 return text;
59 ✗ }
60
61 /// @return `number` as short text: "170" or "0.01", not "170.000000".
62 170 inline std::string ToText(double number) {
63 170 std::ostringstream text;
64
1/2
✓ Branch 1 taken 170 times.
✗ Branch 2 not taken.
170 text << number;
65
1/2
✓ Branch 1 taken 170 times.
✗ Branch 2 not taken.
340 return text.str();
66 170 }
67
68 /// @brief Tests for an ASCII identifier: a letter or underscore, then letters, digits and
69 /// underscores, whatever the locale. USD prim names and attribute name parts are identifiers.
70 /// @param text The text.
71 /// @return Whether it is one.
72 12706 constexpr bool IsIdentifier(std::string_view text) {
73 105526 const auto letter = [](char c) {
74
3/3
✓ Branch 0 taken 68166 times.
✓ Branch 1 taken 6682 times.
✓ Branch 2 taken 17972 times.
92820 return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '_';
75 };
76
4/4
✓ Branch 0 taken 12702 times.
✓ Branch 1 taken 4 times.
✓ Branch 2 taken 12700 times.
✓ Branch 3 taken 2 times.
12706 if (text.empty() || !letter(text.front())) {
77 return false;
78 }
79 12700 return std::all_of(text.begin(), text.end(),
80
4/4
✓ Branch 0 taken 17970 times.
✓ Branch 1 taken 62148 times.
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 17966 times.
92818 [&](char c) { return letter(c) || (c >= '0' && c <= '9'); });
81 }
82
83 /// @return The texts of `items`, each made by `text`, with `separator` between them.
84 template <typename Range, typename Text>
85 1077 std::string Join(const Range& items, std::string_view separator, const Text& text) {
86 1077 std::string out;
87 1077 bool first = true;
88
22/42
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, ernie::(anonymous namespace)::Print(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#2}>(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::Print(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#2} const&):
✓ Branch 4 taken 1359 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 2049 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1359 times.
✓ Branch 10 taken 690 times.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, ernie::(anonymous namespace)::UsdText(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, bool)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}>(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::UsdText(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, bool)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1} const&):
✓ Branch 4 taken 26 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 56 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 26 times.
✓ Branch 10 taken 30 times.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::array<glm::vec<4, double, (glm::qualifier)0>, 4ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda<int $N0, typename $T1>(glm::vec<$N0, $T1, (glm::qualifier)0> const&)#1}>(std::array<glm::vec<4, double, (glm::qualifier)0>, 4ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda<int $N0, typename $T1>(glm::vec<$N0, $T1, (glm::qualifier)0> const&)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<double const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<double const, 18446744073709551615ul> >(std::span<double const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<double const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<double const, 18446744073709551615ul> >(std::span<double const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<float const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<float const, 18446744073709551615ul> >(std::span<float const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<float const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<float const, 18446744073709551615ul> >(std::span<float const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<int const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<int const, 18446744073709551615ul> >(std::span<int const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<int const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<int const, 18446744073709551615ul> >(std::span<int const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<ernie::EditHistory::AttributeEdit, std::allocator<ernie::EditHistory::AttributeEdit> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::EditHistory::AttributeEdit::*>(std::vector<ernie::EditHistory::AttributeEdit, std::allocator<ernie::EditHistory::AttributeEdit> > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::EditHistory::AttributeEdit::* const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<ernie::Path, std::allocator<ernie::Path> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (ernie::Path::*)() const>(std::vector<ernie::Path, std::allocator<ernie::Path> > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (ernie::Path::* const&)() const):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<float, std::allocator<float> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::vector<float, std::allocator<float> > >(std::vector<float, std::allocator<float> > const&) const::{lambda(auto:1)#1}>(std::vector<float, std::allocator<float> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::vector<float, std::allocator<float> > >(std::vector<float, std::allocator<float> > const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::(anonymous namespace)::ArrayProblem(ernie::AttributeDef const&, ernie::Tensor const&)::{lambda(long)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::ArrayProblem(ernie::AttributeDef const&, ernie::Tensor const&)::{lambda(long)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::(anonymous namespace)::TypeText(ernie::AttributeDef const&)::{lambda(long)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::TypeText(ernie::AttributeDef const&)::{lambda(long)#1} const&):
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 5 times.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::app::(anonymous namespace)::AttributeText(ernie::Scene const&, ernie::PrimId, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::AttributeText(ernie::Scene const&, ernie::PrimId, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1}>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1} const&):
✓ Branch 0 taken 303 times.
✓ Branch 1 taken 310 times.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > (std::basic_string_view<char, std::char_traits<char> >)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ( const&)(std::basic_string_view<char, std::char_traits<char> >)):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >, ernie::(anonymous namespace)::Strings<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::Strings<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&):
✓ Branch 0 taken 73 times.
✓ Branch 1 taken 26 times.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >, ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1}>(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1} const&):
✓ Branch 0 taken 49 times.
✓ Branch 1 taken 8 times.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value> > >, ernie::(anonymous namespace)::SchemaSection(ernie::SchemaDef const&, ernie::SchemaFamily const&)::{lambda(auto:1 const&)#1}>(std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value> > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::SchemaSection(ernie::SchemaDef const&, ernie::SchemaFamily const&)::{lambda(auto:1 const&)#1} const&):
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 6 times.
4346 for (const auto& item : items) {
89
25/68
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, ernie::(anonymous namespace)::Print(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#2}>(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::Print(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#2} const&):
✓ Branch 0 taken 584 times.
✓ Branch 1 taken 775 times.
✓ Branch 3 taken 1359 times.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, ernie::(anonymous namespace)::UsdText(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, bool)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}>(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::UsdText(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, bool)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1} const&):
✓ Branch 0 taken 11 times.
✓ Branch 1 taken 15 times.
✓ Branch 3 taken 26 times.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::array<glm::vec<4, double, (glm::qualifier)0>, 4ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda<int $N0, typename $T1>(glm::vec<$N0, $T1, (glm::qualifier)0> const&)#1}>(std::array<glm::vec<4, double, (glm::qualifier)0>, 4ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda<int $N0, typename $T1>(glm::vec<$N0, $T1, (glm::qualifier)0> const&)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<double const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<double const, 18446744073709551615ul> >(std::span<double const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<double const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<double const, 18446744073709551615ul> >(std::span<double const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<float const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<float const, 18446744073709551615ul> >(std::span<float const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<float const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<float const, 18446744073709551615ul> >(std::span<float const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<int const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<int const, 18446744073709551615ul> >(std::span<int const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<int const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<int const, 18446744073709551615ul> >(std::span<int const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<ernie::EditHistory::AttributeEdit, std::allocator<ernie::EditHistory::AttributeEdit> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::EditHistory::AttributeEdit::*>(std::vector<ernie::EditHistory::AttributeEdit, std::allocator<ernie::EditHistory::AttributeEdit> > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::EditHistory::AttributeEdit::* const&):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<ernie::Path, std::allocator<ernie::Path> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (ernie::Path::*)() const>(std::vector<ernie::Path, std::allocator<ernie::Path> > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (ernie::Path::* const&)() const):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<float, std::allocator<float> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::vector<float, std::allocator<float> > >(std::vector<float, std::allocator<float> > const&) const::{lambda(auto:1)#1}>(std::vector<float, std::allocator<float> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::vector<float, std::allocator<float> > >(std::vector<float, std::allocator<float> > const&) const::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::(anonymous namespace)::ArrayProblem(ernie::AttributeDef const&, ernie::Tensor const&)::{lambda(long)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::ArrayProblem(ernie::AttributeDef const&, ernie::Tensor const&)::{lambda(long)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::(anonymous namespace)::TypeText(ernie::AttributeDef const&)::{lambda(long)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::TypeText(ernie::AttributeDef const&)::{lambda(long)#1} const&):
✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 time.
✓ Branch 3 taken 6 times.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::app::(anonymous namespace)::AttributeText(ernie::Scene const&, ernie::PrimId, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::AttributeText(ernie::Scene const&, ernie::PrimId, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1)#1} const&):
✗ Branch 0 not taken.
✗ Branch 1 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1}>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1} const&):
✓ Branch 0 taken 171 times.
✓ Branch 1 taken 132 times.
✓ Branch 3 taken 303 times.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > (std::basic_string_view<char, std::char_traits<char> >)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ( const&)(std::basic_string_view<char, std::char_traits<char> >)):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >, ernie::(anonymous namespace)::Strings<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::Strings<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&):
✓ Branch 0 taken 26 times.
✓ Branch 1 taken 47 times.
✓ Branch 3 taken 73 times.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >, ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1}>(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1} const&):
✓ Branch 0 taken 8 times.
✓ Branch 1 taken 41 times.
✓ Branch 3 taken 49 times.
✗ Branch 4 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value> > >, ernie::(anonymous namespace)::SchemaSection(ernie::SchemaDef const&, ernie::SchemaFamily const&)::{lambda(auto:1 const&)#1}>(std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value> > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::SchemaSection(ernie::SchemaDef const&, ernie::SchemaFamily const&)::{lambda(auto:1 const&)#1} const&):
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 5 times.
✓ Branch 3 taken 11 times.
✗ Branch 4 not taken.
3658 out += first ? std::string_view() : separator;
90
9/34
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, ernie::(anonymous namespace)::Print(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#2}>(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::Print(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#2} const&):
✓ Branch 1 taken 1359 times.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void>, ernie::(anonymous namespace)::UsdText(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, bool)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1}>(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::UsdText(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&, bool)::{lambda(nlohmann::json_abi_v3_12_0::basic_json<nlohmann::json_abi_v3_12_0::ordered_map, std::vector, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool, long, unsigned long, double, std::allocator, nlohmann::json_abi_v3_12_0::adl_serializer, std::vector<unsigned char, std::allocator<unsigned char> >, void> const&)#1} const&):
✓ Branch 1 taken 26 times.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::array<glm::vec<4, double, (glm::qualifier)0>, 4ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda<int $N0, typename $T1>(glm::vec<$N0, $T1, (glm::qualifier)0> const&)#1}>(std::array<glm::vec<4, double, (glm::qualifier)0>, 4ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda<int $N0, typename $T1>(glm::vec<$N0, $T1, (glm::qualifier)0> const&)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<double const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<double const, 18446744073709551615ul> >(std::span<double const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<double const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<double const, 18446744073709551615ul> >(std::span<double const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<float const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<float const, 18446744073709551615ul> >(std::span<float const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<float const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<float const, 18446744073709551615ul> >(std::span<float const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::span<int const, 18446744073709551615ul>, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<int const, 18446744073709551615ul> >(std::span<int const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1}>(std::span<int const, 18446744073709551615ul> const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::span<int const, 18446744073709551615ul> >(std::span<int const, 18446744073709551615ul> const&) const::{lambda(auto:1)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<ernie::EditHistory::AttributeEdit, std::allocator<ernie::EditHistory::AttributeEdit> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::EditHistory::AttributeEdit::*>(std::vector<ernie::EditHistory::AttributeEdit, std::allocator<ernie::EditHistory::AttributeEdit> > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::EditHistory::AttributeEdit::* const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<ernie::Path, std::allocator<ernie::Path> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (ernie::Path::*)() const>(std::vector<ernie::Path, std::allocator<ernie::Path> > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const& (ernie::Path::* const&)() const):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<float, std::allocator<float> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::vector<float, std::allocator<float> > >(std::vector<float, std::allocator<float> > const&) const::{lambda(auto:1)#1}>(std::vector<float, std::allocator<float> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::ValueText(ernie::Value const&)::{lambda(auto:1 const&)#1}::operator()<std::vector<float, std::allocator<float> > >(std::vector<float, std::allocator<float> > const&) const::{lambda(auto:1)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::(anonymous namespace)::ArrayProblem(ernie::AttributeDef const&, ernie::Tensor const&)::{lambda(long)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::ArrayProblem(ernie::AttributeDef const&, ernie::Tensor const&)::{lambda(long)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::(anonymous namespace)::TypeText(ernie::AttributeDef const&)::{lambda(long)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::TypeText(ernie::AttributeDef const&)::{lambda(long)#1} const&):
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<long, std::allocator<long> >, ernie::app::(anonymous namespace)::AttributeText(ernie::Scene const&, ernie::PrimId, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1)#1}>(std::vector<long, std::allocator<long> > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::app::(anonymous namespace)::AttributeText(ernie::Scene const&, ernie::PrimId, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(auto:1)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1}>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1} const&):
✓ Branch 1 taken 303 times.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > (std::basic_string_view<char, std::char_traits<char> >)>(std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ( const&)(std::basic_string_view<char, std::char_traits<char> >)):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >, ernie::(anonymous namespace)::Strings<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::Strings<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&):
✓ Branch 1 taken 73 times.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > >, ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1}>(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::Join<std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > >(std::vector<std::basic_string_view<char, std::char_traits<char> >, std::allocator<std::basic_string_view<char, std::char_traits<char> > > > const&, std::basic_string_view<char, std::char_traits<char> >)::{lambda(auto:1 const&)#1} const&):
✓ Branch 1 taken 49 times.
✗ Branch 2 not taken.
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > ernie::Join<std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value> > >, ernie::(anonymous namespace)::SchemaSection(ernie::SchemaDef const&, ernie::SchemaFamily const&)::{lambda(auto:1 const&)#1}>(std::vector<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value>, std::allocator<std::pair<std::basic_string_view<char, std::char_traits<char> >, ernie::Value> > > const&, std::basic_string_view<char, std::char_traits<char> >, ernie::(anonymous namespace)::SchemaSection(ernie::SchemaDef const&, ernie::SchemaFamily const&)::{lambda(auto:1 const&)#1} const&):
✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
3305 out += std::invoke(text, item);
91 1829 first = false;
92 }
93 1077 return out;
94 ✗ }
95 /// @return `items`, texts already, with `separator` between them.
96 318 template <typename Range> std::string Join(const Range& items, std::string_view separator) {
97
1/2
✓ Branch 1 taken 14 times.
✗ Branch 2 not taken.
332 return Join(items, separator, [](const auto& item) -> std::string_view { return item; });
98 }
99
100 /// @return `text` with every `from` replaced by `to`.
101 8285 inline std::string Replace(std::string_view text, std::string_view from, std::string_view to) {
102 8285 std::string out(text);
103
2/2
✓ Branch 2 taken 505 times.
✓ Branch 3 taken 8285 times.
8790 for (std::size_t at = out.find(from); at != std::string::npos; at = out.find(from, at)) {
104
1/2
✓ Branch 1 taken 505 times.
✗ Branch 2 not taken.
505 out.replace(at, from.size(), to);
105 505 at += to.size();
106 }
107 8285 return out;
108 ✗ }
109
110 /// @return The fewest insertions, deletions and substitutions turning `a` into `b` (Levenshtein).
111 36 inline std::size_t EditDistance(std::string_view a, std::string_view b) {
112 36 std::vector<std::size_t> row(b.size() + 1);
113
2/2
✓ Branch 0 taken 496 times.
✓ Branch 1 taken 36 times.
532 for (std::size_t j = 0; j < row.size(); ++j) {
114 496 row[j] = j;
115 }
116
2/2
✓ Branch 0 taken 529 times.
✓ Branch 1 taken 36 times.
565 for (std::size_t i = 1; i <= a.size(); ++i) {
117 529 std::size_t diagonal = row[0];
118 529 row[0] = i;
119
2/2
✓ Branch 0 taken 6991 times.
✓ Branch 1 taken 529 times.
7520 for (std::size_t j = 1; j <= b.size(); ++j) {
120 6991 const std::size_t above = row[j];
121 6991 row[j] =
122 6991 std::min({above + 1, row[j - 1] + 1, diagonal + std::size_t{a[i - 1] != b[j - 1]}});
123 6991 diagonal = above;
124 }
125 }
126 36 return row.back();
127 36 }
128
129 /// @brief Reads numbers separated by blanks, line breaks or commas, in turn.
130 16 class NumberReader {
131 public:
132 /// @param text The numbers.
133 /// @param format The format they belong to, for errors.
134
1/2
✓ Branch 2 taken 16 times.
✗ Branch 3 not taken.
16 NumberReader(std::string_view text, std::string format) : format_(std::move(format)) {
135
1/2
✓ Branch 1 taken 16 times.
✗ Branch 2 not taken.
16 std::string spaced(text);
136 16 std::replace(spaced.begin(), spaced.end(), ',', ' ');
137
1/2
✓ Branch 1 taken 16 times.
✗ Branch 2 not taken.
16 stream_.str(std::move(spaced));
138 16 }
139
140 /// @return The next number.
141 /// @throws std::invalid_argument If there are no more.
142 318 double Next() {
143 318 double value = 0.0;
144
2/2
✓ Branch 1 taken 2 times.
✓ Branch 2 taken 316 times.
318 if (!(stream_ >> value)) {
145
2/4
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
4 throw std::invalid_argument(format_ + " ends early");
146 }
147 316 return value;
148 }
149
150 /// @param count How many numbers to pass over.
151 35 void Skip(std::size_t count) {
152 35 Values(count);
153 35 }
154
155 /// @param count How many numbers to read.
156 /// @return The next `count` numbers.
157 77 std::vector<double> Values(std::size_t count) {
158 77 std::vector<double> values(count);
159
2/2
✓ Branch 0 taken 245 times.
✓ Branch 1 taken 76 times.
321 for (double& value : values) {
160
2/2
✓ Branch 1 taken 244 times.
✓ Branch 2 taken 1 time.
245 value = Next();
161 }
162 76 return values;
163 1 }
164
165 /// @return The next number, as a count.
166 /// @throws std::invalid_argument If it is negative or fractional.
167 31 std::size_t Count() {
168 31 const double value = Next();
169
3/4
✓ Branch 0 taken 31 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 30 times.
31 if (!(value >= 0.0) || value != std::floor(value)) {
170
2/4
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 time.
✗ Branch 6 not taken.
2 throw std::invalid_argument(format_ + " has a bad count");
171 }
172 30 return static_cast<std::size_t>(value);
173 }
174
175 private:
176 std::string format_;
177 std::istringstream stream_;
178 };
179
180 } // namespace ernie
181