| Line |
Branch |
Exec |
Source |
| 1 |
|
|
// SPDX-License-Identifier: BSD-3-Clause |
| 2 |
|
|
/// @file view.h |
| 3 |
|
|
/// @brief Typed views of prims, with accessors generated from their schemas' declarations. |
| 4 |
|
|
#pragma once |
| 5 |
|
|
|
| 6 |
|
|
#include "ernie/export.h" |
| 7 |
|
|
#include "ernie/scene/convert.h" |
| 8 |
|
|
#include "ernie/scene/scene.h" |
| 9 |
|
|
#include "ernie/scene/schema.h" |
| 10 |
|
|
|
| 11 |
|
|
#include <algorithm> |
| 12 |
|
|
#include <stdexcept> |
| 13 |
|
|
#include <string> |
| 14 |
|
|
#include <string_view> |
| 15 |
|
|
#include <type_traits> |
| 16 |
|
|
#include <vector> |
| 17 |
|
|
|
| 18 |
|
|
namespace ernie { |
| 19 |
|
|
|
| 20 |
|
|
/// The column element a declared type is stored as: itself, unless listed below. |
| 21 |
|
|
template <typename T> struct StoredAs { |
| 22 |
|
|
using type = T; |
| 23 |
|
|
}; |
| 24 |
|
|
template <> struct StoredAs<bool> { |
| 25 |
|
|
using type = std::uint8_t; |
| 26 |
|
|
}; |
| 27 |
|
|
template <> struct StoredAs<int> { |
| 28 |
|
|
using type = std::int32_t; |
| 29 |
|
|
}; |
| 30 |
|
|
template <> struct StoredAs<std::string> { |
| 31 |
|
|
using type = Token; |
| 32 |
|
|
}; |
| 33 |
|
|
template <> struct StoredAs<Path> { |
| 34 |
|
|
using type = Target; |
| 35 |
|
|
}; |
| 36 |
|
|
template <> struct StoredAs<std::vector<Path>> { |
| 37 |
|
|
using type = std::vector<Target>; |
| 38 |
|
|
}; |
| 39 |
|
|
template <> struct StoredAs<std::vector<std::string>> { |
| 40 |
|
|
using type = std::vector<Token>; |
| 41 |
|
|
}; |
| 42 |
|
|
|
| 43 |
|
|
/// @brief How a declared type is stored in a column and read back. |
| 44 |
|
|
template <typename T> struct AttributeTraits { |
| 45 |
|
|
using Stored = typename StoredAs<T>::type; |
| 46 |
|
|
using Result = T; |
| 47 |
|
|
|
| 48 |
|
87 |
static T Load(const PathTable& paths, const Stored& stored) { |
| 49 |
9/18
ernie::AttributeTraits<bool>::Load(ernie::PathTable const&, unsigned char const&):
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
ernie::AttributeTraits<double>::Load(ernie::PathTable const&, double const&):
✓ Branch 0 taken 43 times.
✗ Branch 1 not taken.
ernie::AttributeTraits<ernie::Path>::Load(ernie::PathTable const&, ernie::Target const&):
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Load(ernie::PathTable const&, glm::vec<2, double, (glm::qualifier)0> const&):
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
ernie::AttributeTraits<glm::vec<3, double, (glm::qualifier)0> >::Load(ernie::PathTable const&, glm::vec<3, double, (glm::qualifier)0> const&):
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
ernie::AttributeTraits<int>::Load(ernie::PathTable const&, int const&):
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Load(ernie::PathTable const&, unsigned int const&):
✓ Branch 2 taken 16 times.
✗ Branch 3 not taken.
ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Load(ernie::PathTable const&, std::vector<ernie::Target, std::allocator<ernie::Target> > const&):
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
ernie::AttributeTraits<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> > > > >::Load(ernie::PathTable const&, std::vector<unsigned int, std::allocator<unsigned int> > const&):
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
|
192 |
return *ToValue(paths, stored).template Get<T>(); |
| 50 |
|
|
} |
| 51 |
7/14
✓ Branch 1 taken 528 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4511 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 891 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 992 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1257 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 878 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 146 times.
✗ Branch 20 not taken.
|
11243 |
static Value Save(const T& value) { |
| 52 |
5/12
<unknown function 48>:
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
<unknown function 51>:
✓ Branch 1 taken 7 times.
✓ Branch 2 taken 1 time.
ernie::AttributeTraits<double>::Load(ernie::PathTable const&, double const&):
✓ Branch 1 taken 995 times.
✓ Branch 2 taken 2 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Load(ernie::PathTable const&, unsigned int const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
25818 |
return Value(value); |
| 53 |
|
|
} |
| 54 |
|
31546 |
static std::vector<std::string_view> Options() { |
| 55 |
|
31546 |
return {}; |
| 56 |
|
|
} |
| 57 |
|
|
}; |
| 58 |
|
|
|
| 59 |
|
|
template <typename E> struct AttributeTraits<Choice<E>> { |
| 60 |
|
|
using Stored = Token; |
| 61 |
|
|
using Result = E; |
| 62 |
|
|
|
| 63 |
|
4 |
static E Load(const PathTable& paths, Token token) { |
| 64 |
|
4 |
const auto& tokens = ChoiceTokens<E>::kTokens; |
| 65 |
|
4 |
const auto found = std::ranges::find(tokens, paths.Names().Text(token)); |
| 66 |
2/4
ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Load(ernie::PathTable const&, unsigned int):
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Load(ernie::PathTable const&, unsigned int):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
|
4 |
return static_cast<E>(found != tokens.end() ? found - tokens.begin() : 0); |
| 67 |
|
|
} |
| 68 |
|
1030 |
static Value Save(E value) { |
| 69 |
|
2060 |
return std::string(ChoiceTokens<E>::kTokens[static_cast<std::size_t>(value)]); |
| 70 |
|
|
} |
| 71 |
|
1023 |
static std::vector<std::string_view> Options() { |
| 72 |
|
1023 |
return {ChoiceTokens<E>::kTokens.begin(), ChoiceTokens<E>::kTokens.end()}; |
| 73 |
|
|
} |
| 74 |
|
|
}; |
| 75 |
|
|
|
| 76 |
|
|
/// Arrays: read as the authored tensor, an empty one when unauthored, and written by |
| 77 |
|
|
/// `Scene::Write`. |
| 78 |
|
|
template <> struct AttributeTraits<Tensor> { |
| 79 |
|
|
using Stored = Tensor; |
| 80 |
|
|
using Result = Tensor; |
| 81 |
|
|
|
| 82 |
|
7 |
static Tensor Load(const PathTable&, const Tensor& stored) { |
| 83 |
|
7 |
return stored; |
| 84 |
|
|
} |
| 85 |
|
6570 |
static Value Save(const Tensor&) { |
| 86 |
|
6570 |
return Value(); |
| 87 |
|
|
} |
| 88 |
|
6570 |
static std::vector<std::string_view> Options() { |
| 89 |
|
6570 |
return {}; |
| 90 |
|
|
} |
| 91 |
|
|
}; |
| 92 |
|
|
|
| 93 |
|
|
/// @brief An attribute declaration from a schema row: its column type, fallback and metadata. |
| 94 |
|
|
template <typename T, typename Fallback> |
| 95 |
|
44546 |
AttributeDef DeclareAttribute(std::string_view name, const Fallback& fallback, AttributeMeta meta) { |
| 96 |
|
|
using Traits = AttributeTraits<T>; |
| 97 |
31/58
ernie::AttributeDef ernie::DeclareAttribute<bool, bool>(std::basic_string_view<char, std::char_traits<char> >, bool const&, ernie::AttributeMeta):
✓ Branch 0 taken 2191 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<double, double>(std::basic_string_view<char, std::char_traits<char> >, double const&, ernie::AttributeMeta):
✓ Branch 0 taken 16064 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<ernie::Choice<ernie::Axis>, ernie::Axis>(std::basic_string_view<char, std::char_traits<char> >, ernie::Axis const&, ernie::AttributeMeta):
✓ Branch 0 taken 585 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<ernie::Choice<ernie::ExpansionRule>, ernie::ExpansionRule>(std::basic_string_view<char, std::char_traits<char> >, ernie::ExpansionRule const&, ernie::AttributeMeta):
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<ernie::Choice<ernie::PulseTrigger>, ernie::PulseTrigger>(std::basic_string_view<char, std::char_traits<char> >, ernie::PulseTrigger const&, ernie::AttributeMeta):
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<ernie::Choice<ernie::QuaternionOrder>, ernie::QuaternionOrder>(std::basic_string_view<char, std::char_traits<char> >, ernie::QuaternionOrder const&, ernie::AttributeMeta):
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<ernie::Path, ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::Path const&, ernie::AttributeMeta):
✓ Branch 0 taken 584 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<ernie::Tensor, ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::Tensor const&, ernie::AttributeMeta):
✓ Branch 0 taken 6570 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<glm::vec<2, double, (glm::qualifier)0>, glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, glm::vec<2, double, (glm::qualifier)0> const&, ernie::AttributeMeta):
✓ Branch 0 taken 1314 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<glm::vec<3, double, (glm::qualifier)0>, glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, glm::vec<3, double, (glm::qualifier)0> const&, ernie::AttributeMeta):
✓ Branch 0 taken 1023 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<glm::vec<4, double, (glm::qualifier)0>, glm::vec<4, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, glm::vec<4, double, (glm::qualifier)0> const&, ernie::AttributeMeta):
✓ Branch 0 taken 146 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<int, int>(std::basic_string_view<char, std::char_traits<char> >, int const&, ernie::AttributeMeta):
✓ Branch 0 taken 3068 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [10]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [10], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 586 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [12]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [12], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 585 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [13]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [13], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 438 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [14]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [14], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 146 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [15]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [15], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 146 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [19]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [19], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 146 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [1]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [1], ernie::AttributeMeta):
✓ Branch 0 taken 3650 times.
✓ Branch 1 taken 292 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [3]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [3], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 146 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [4]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [4], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 292 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [5]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [5], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 876 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [6]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [6], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 584 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [7]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [7], ernie::AttributeMeta):
✓ Branch 0 taken 146 times.
✓ Branch 1 taken 584 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [8]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [8], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 294 times.
ernie::AttributeDef ernie::DeclareAttribute<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, char [9]>(std::basic_string_view<char, std::char_traits<char> >, char const (&) [9], ernie::AttributeMeta):
✗ Branch 0 not taken.
✓ Branch 1 taken 292 times.
ernie::AttributeDef ernie::DeclareAttribute<std::vector<ernie::Path, std::allocator<ernie::Path> >, std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, std::vector<ernie::Path, std::allocator<ernie::Path> > const&, ernie::AttributeMeta):
✓ Branch 0 taken 1168 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, std::vector<float, std::allocator<float> > const&, ernie::AttributeMeta):
✓ Branch 0 taken 1607 times.
✗ Branch 1 not taken.
ernie::AttributeDef ernie::DeclareAttribute<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> > > > >(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&, ernie::AttributeMeta):
✓ Branch 0 taken 585 times.
✗ Branch 1 not taken.
|
44546 |
if (meta.options.empty()) { |
| 98 |
|
39139 |
meta.options = Traits::Options(); |
| 99 |
|
|
} |
| 100 |
|
44546 |
return {name, kColumnType<typename Traits::Stored>, Traits::Save(fallback), std::move(meta)}; |
| 101 |
|
53749 |
} |
| 102 |
|
|
|
| 103 |
|
|
/// @brief A prim seen through its schema: what generated accessors read and write. |
| 104 |
|
2595 |
class ERNIE_API SchemaView { |
| 105 |
|
|
public: |
| 106 |
|
758 |
PrimId Id() const { |
| 107 |
50/100
<unknown function 48>:
✓ Branch 1 taken 2 times.
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 time.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 time.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 time.
✗ Branch 26 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 time.
✗ Branch 31 not taken.
✓ Branch 32 taken 1 time.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
<unknown function 51>:
✓ Branch 1 taken 1 time.
✓ Branch 1 taken 699 times.
✗ Branch 2 not taken.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 time.
✗ Branch 20 not taken.
ernie::AttributeTraits<double>::Load(ernie::PathTable const&, double const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 14 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Save(ernie::Axis):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Save(ernie::PulseTrigger):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 time.
✗ Branch 20 not taken.
✓ Branch 22 taken 1 time.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 time.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 time.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 time.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 time.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 time.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 time.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 time.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 time.
✗ Branch 47 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Save(ernie::QuaternionOrder):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 10 taken 1 time.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 time.
✗ Branch 14 not taken.
|
758 |
return prim_; |
| 108 |
|
|
} |
| 109 |
|
3 |
Path GetPath() const { |
| 110 |
3/6
<unknown function 109>:
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Save(ernie::PulseTrigger):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 time.
✗ Branch 5 not taken.
|
3 |
return scene_->PrimPath(prim_); |
| 111 |
|
|
} |
| 112 |
|
|
const Scene& GetScene() const { |
| 113 |
|
|
return *scene_; |
| 114 |
|
|
} |
| 115 |
|
1 |
const SchemaDef& Schema() const { |
| 116 |
1/2
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
|
1 |
return *schema_; |
| 117 |
|
|
} |
| 118 |
|
|
|
| 119 |
|
|
/// The instance name of a multiple-apply API schema's view; empty otherwise. |
| 120 |
|
|
std::string_view Instance() const { |
| 121 |
|
|
return instance_; |
| 122 |
|
|
} |
| 123 |
|
|
|
| 124 |
|
|
protected: |
| 125 |
|
|
/// @throws std::invalid_argument if the prim is missing, is not of `schema`'s type or lacks |
| 126 |
|
|
/// the applied API schema. |
| 127 |
|
|
SchemaView(const Scene& scene, const Path& path, const SchemaDef& schema, |
| 128 |
|
|
std::string_view instance = {}); |
| 129 |
|
|
SchemaView(Scene& scene, const Path& path, const SchemaDef& schema, |
| 130 |
|
|
std::string_view instance = {}); |
| 131 |
|
|
|
| 132 |
|
|
/// Calls `use` with a declared attribute's name, its instance's for a multiple-apply schema. |
| 133 |
|
1202 |
template <typename Use> decltype(auto) Named(std::string_view declared, const Use& use) const { |
| 134 |
29/54
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Has(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Has(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 5 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<bool>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<bool>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 4 times.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 43 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 8 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<int>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<int>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 16 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<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::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<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::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Unset(std::basic_string_view<char, std::char_traits<char> >)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Unset(std::basic_string_view<char, std::char_traits<char> >)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<bool>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<bool>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<bool>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<bool>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 996 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::PulseTrigger> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::PulseTrigger> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::QuaternionOrder> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::QuaternionOrder> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Path>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Path>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 10 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Tensor>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Tensor>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 25 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 3 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<int>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<int>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<int>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<int>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 7 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 36 times.
✗ Branch 1 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<float, std::allocator<float> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<float, std::allocator<float> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 0 taken 4 times.
✗ Branch 1 not taken.
|
1202 |
if (instance_.empty()) { |
| 135 |
|
1193 |
return use(declared); |
| 136 |
|
|
} |
| 137 |
5/54
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Has(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Has(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<bool>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<bool>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<int>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<int>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<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::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<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::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Unset(std::basic_string_view<char, std::char_traits<char> >)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Unset(std::basic_string_view<char, std::char_traits<char> >)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<bool>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<bool>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<bool>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<bool>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 2 taken 1 time.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::PulseTrigger> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::PulseTrigger> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::QuaternionOrder> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::QuaternionOrder> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Path>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Path>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Tensor>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Tensor>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<int>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<int>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<int>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<int>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<float, std::allocator<float> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<float, std::allocator<float> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
9 |
const std::string name = ApiName{schema_, instance_}.Attribute(declared); |
| 138 |
5/52
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<bool>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<bool>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<glm::vec<3, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<int>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<int>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Read<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::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Read<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::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Unset(std::basic_string_view<char, std::char_traits<char> >)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Unset(std::basic_string_view<char, std::char_traits<char> >)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<bool>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<bool>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<bool>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<bool>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::Axis> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::Axis> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::ExpansionRule> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::ExpansionRule> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::PulseTrigger> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::PulseTrigger> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Choice<ernie::QuaternionOrder> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Choice<ernie::QuaternionOrder> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Path>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Path>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Path>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Tensor>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<ernie::Tensor>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<ernie::Tensor>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<glm::vec<2, double, (glm::qualifier)0> >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<glm::vec<2, double, (glm::qualifier)0> >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<int>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<int>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<int>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<int>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::vector<ernie::Path, std::allocator<ernie::Path> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<ernie::Path, std::allocator<ernie::Path> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
decltype(auto) ernie::SchemaView::Named<ernie::SchemaView::Write<std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<float, std::allocator<float> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}>(std::basic_string_view<char, std::char_traits<char> >, ernie::SchemaView::Write<std::vector<float, std::allocator<float> > >(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<std::vector<float, std::allocator<float> > >::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1} const&) const:
✗ Branch 1 not taken.
✗ Branch 2 not taken.
|
9 |
return use(std::string_view(name)); |
| 139 |
|
9 |
} |
| 140 |
|
|
|
| 141 |
|
|
template <typename T> |
| 142 |
|
98 |
typename AttributeTraits<T>::Result Read(std::string_view declared) const { |
| 143 |
|
80 |
return Named(declared, [&](std::string_view name) { |
| 144 |
|
|
using Traits = AttributeTraits<T>; |
| 145 |
|
98 |
const PrimStore& store = scene_->Store(); |
| 146 |
|
98 |
const Token token = *store.Tokens().Find(name); |
| 147 |
|
98 |
const auto column = store.Read<typename Traits::Stored>(store.PrimBucket(prim_), token); |
| 148 |
|
98 |
return Traits::Load(store.Paths(), column[store.PrimRow(prim_)]); |
| 149 |
|
33 |
}); |
| 150 |
|
|
} |
| 151 |
|
|
template <typename T> |
| 152 |
|
1097 |
void Write(std::string_view declared, const typename AttributeTraits<T>::Result& value) { |
| 153 |
|
1169 |
Named(declared, [&](std::string_view name) { |
| 154 |
|
|
if constexpr (std::is_same_v<T, Tensor>) { |
| 155 |
2/10
<unknown function 48>:
✗ Branch 3 not taken.
✗ Branch 4 not taken.
<unknown function 51>:
✗ Branch 3 not taken.
✗ Branch 4 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Save(ernie::QuaternionOrder):
✓ Branch 3 taken 22 times.
✓ Branch 4 taken 3 times.
ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}::operator()(std::basic_string_view<char, std::char_traits<char> >) const:
✗ Branch 3 not taken.
✗ Branch 4 not taken.
ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}::operator()[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >) const:
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
25 |
Edit().Write(prim_, name, value); |
| 156 |
|
|
} else { |
| 157 |
17/65
<unknown function 48>:
✗ Branch 2 not taken.
✓ Branch 3 taken 1 time.
✗ Branch 4 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 18 taken 4 times.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✓ Branch 22 taken 1 time.
✗ Branch 23 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
<unknown function 51>:
✓ Branch 2 taken 1 time.
✓ Branch 3 taken 8 times.
✗ Branch 4 not taken.
✓ Branch 7 taken 1 time.
✓ Branch 8 taken 9 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 31 times.
✓ Branch 14 taken 5 times.
✓ Branch 17 taken 6 times.
✓ Branch 18 taken 1 time.
ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Save(ernie::PulseTrigger):
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✓ Branch 17 taken 1 time.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::QuaternionOrder> >::Save(ernie::QuaternionOrder):
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 8 taken 1 time.
✗ Branch 9 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}::operator()(std::basic_string_view<char, std::char_traits<char> >) const:
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 7 taken 2 times.
✗ Branch 8 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
ernie::SchemaView::Read<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}::operator()[abi:cxx11](std::basic_string_view<char, std::char_traits<char> >) const:
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
ernie::SchemaView::Write<double>(std::basic_string_view<char, std::char_traits<char> >, ernie::AttributeTraits<double>::Result const&)::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}::operator()(std::basic_string_view<char, std::char_traits<char> >) const:
✓ Branch 2 taken 993 times.
✓ Branch 3 taken 2 times.
|
2135 |
Edit().Set(prim_, name, AttributeTraits<T>::Save(value)); |
| 158 |
|
|
} |
| 159 |
|
|
}); |
| 160 |
|
|
} |
| 161 |
|
5 |
bool Has(std::string_view declared) const { |
| 162 |
|
5 |
return Named(declared, |
| 163 |
0/4
<unknown function 48>:
✗ Branch 4 not taken.
✗ Branch 5 not taken.
ernie::AttributeTraits<ernie::Choice<ernie::PulseTrigger> >::Save(ernie::PulseTrigger):
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
10 |
[&](std::string_view name) { return scene_->IsAuthored(prim_, name); }); |
| 164 |
|
|
} |
| 165 |
|
2 |
void Unset(std::string_view declared) { |
| 166 |
|
4 |
Named(declared, [&](std::string_view name) { Edit().Clear(prim_, name); }); |
| 167 |
|
|
} |
| 168 |
|
|
Scene& Edit() const; |
| 169 |
|
|
|
| 170 |
|
|
private: |
| 171 |
|
|
const Scene* scene_ = nullptr; |
| 172 |
|
|
Scene* mutable_ = nullptr; |
| 173 |
|
|
PrimId prim_; |
| 174 |
|
|
const SchemaDef* schema_ = nullptr; |
| 175 |
|
|
std::string instance_; |
| 176 |
|
|
}; |
| 177 |
|
|
|
| 178 |
|
|
/// The root of every generated accessor chain. |
| 179 |
7/14
<unknown function 51>:
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
✓ Branch 7 taken 1 time.
✗ Branch 8 not taken.
✓ Branch 30 taken 1 time.
✗ Branch 31 not taken.
✓ Branch 42 taken 3 times.
✗ Branch 43 not taken.
ernie::SchemaView::Read<double>(std::basic_string_view<char, std::char_traits<char> >) const::{lambda(std::basic_string_view<char, std::char_traits<char> >)#1}::operator()(std::basic_string_view<char, std::char_traits<char> >) const:
✓ Branch 16 taken 1 time.
✗ Branch 17 not taken.
✓ Branch 22 taken 1 time.
✗ Branch 23 not taken.
✓ Branch 40 taken 1 time.
✗ Branch 41 not taken.
|
1307 |
template <typename Self, typename Base> class SchemaViewAccessors : public Base { |
| 180 |
|
|
public: |
| 181 |
|
2545 |
using Base::Base; |
| 182 |
|
|
}; |
| 183 |
|
|
|
| 184 |
|
|
} // namespace ernie |
| 185 |
|
|
|
| 186 |
|
|
/// For schemas that declare no attributes of their own. |
| 187 |
|
|
#define ERNIE_NO_ATTRIBUTES(X) |
| 188 |
|
|
|
| 189 |
|
|
/// The options of an attribute in `group` that is finite and 0 or more: a length, a power. |
| 190 |
|
|
#define ERNIE_NONNEGATIVE(group_) .group = group_, .lower = ::ernie::AtLeast(0.0), .finite = true |
| 191 |
|
|
/// The options of an attribute in `group` from 0 to 1: a fraction, a reflectance. |
| 192 |
|
|
#define ERNIE_FRACTION(group_) \ |
| 193 |
|
|
.group = group_, .lower = ::ernie::AtLeast(0.0), .upper = ::ernie::AtMost(1.0) |
| 194 |
|
|
|
| 195 |
|
|
#define ERNIE_ATTRIBUTE_ACCESSORS(Type, Name, usdName, fallback, ...) \ |
| 196 |
|
|
static constexpr std::string_view k##Name = usdName; \ |
| 197 |
|
|
typename ::ernie::AttributeTraits<Type>::Result Get##Name() const { \ |
| 198 |
|
|
return this->template Read<Type>(k##Name); \ |
| 199 |
|
|
} \ |
| 200 |
|
|
bool Has##Name() const { \ |
| 201 |
|
|
return this->Has(k##Name); \ |
| 202 |
|
|
} \ |
| 203 |
|
|
Self& Set##Name(const typename ::ernie::AttributeTraits<Type>::Result& value) { \ |
| 204 |
|
|
this->template Write<Type>(k##Name, value); \ |
| 205 |
|
|
return static_cast<Self&>(*this); \ |
| 206 |
|
|
} \ |
| 207 |
|
|
Self& Clear##Name() { \ |
| 208 |
|
|
this->Unset(k##Name); \ |
| 209 |
|
|
return static_cast<Self&>(*this); \ |
| 210 |
|
|
} |
| 211 |
|
|
|
| 212 |
|
|
#define ERNIE_ATTRIBUTE_DECLARE(Type, Name, usdName, fallback, text, ...) \ |
| 213 |
|
|
::ernie::DeclareAttribute<Type>(usdName, fallback, \ |
| 214 |
|
|
::ernie::AttributeMeta{.doc = text, __VA_ARGS__}), |
| 215 |
|
|
|
| 216 |
|
|
/// Declares `Class##Accessors`, the getters and setters of a schema's own attributes over its |
| 217 |
|
|
/// base's, each returning the most derived view. |
| 218 |
|
|
#define ERNIE_SCHEMA_ACCESSORS(Class, BaseClass, OWN_ATTRIBUTES) \ |
| 219 |
|
|
template <typename Self, typename Base> \ |
| 220 |
|
|
class Class##Accessors : public BaseClass##Accessors<Self, Base> { \ |
| 221 |
|
|
public: \ |
| 222 |
|
|
using BaseClass##Accessors<Self, Base>::BaseClass##Accessors; \ |
| 223 |
|
|
OWN_ATTRIBUTES(ERNIE_ATTRIBUTE_ACCESSORS) \ |
| 224 |
|
|
} |
| 225 |
|
|
|
| 226 |
|
|
/// What every schema view class has: its type name, its documentation (the schema reference's) and |
| 227 |
|
|
/// the base its registry entry derives from. |
| 228 |
|
|
#define ERNIE_SCHEMA_NAMES(Class, Base, text) \ |
| 229 |
|
|
public: \ |
| 230 |
|
|
using Self = Class; \ |
| 231 |
|
|
using SchemaBase = Base; \ |
| 232 |
|
|
static constexpr std::string_view kName = #Class; \ |
| 233 |
|
|
static constexpr std::string_view kDoc = text; \ |
| 234 |
|
|
ERNIE_API static const ::ernie::SchemaDef& Definition(); |
| 235 |
|
|
|
| 236 |
|
|
/// The constructors of a typed schema view class. |
| 237 |
|
|
#define ERNIE_SCHEMA_BODY(Class, Base, text) \ |
| 238 |
|
|
ERNIE_SCHEMA_NAMES(Class, Base, text) \ |
| 239 |
|
|
/** @throws std::invalid_argument if the prim does not exist or is not a `Class`. */ \ |
| 240 |
|
|
Class(const ::ernie::Scene& scene, const ::ernie::Path& path) \ |
| 241 |
|
|
: Class##Accessors<Class, Base>(scene, path, Definition()) {} \ |
| 242 |
|
|
Class(::ernie::Scene& scene, const ::ernie::Path& path) \ |
| 243 |
|
|
: Class##Accessors<Class, Base>(scene, path, Definition()) {} \ |
| 244 |
|
|
\ |
| 245 |
|
|
protected: \ |
| 246 |
|
|
Class(const ::ernie::Scene& scene, const ::ernie::Path& path, \ |
| 247 |
|
|
const ::ernie::SchemaDef& schema) \ |
| 248 |
|
|
: Class##Accessors<Class, Base>(scene, path, schema) {} \ |
| 249 |
|
|
Class(::ernie::Scene& scene, const ::ernie::Path& path, const ::ernie::SchemaDef& schema) \ |
| 250 |
|
|
: Class##Accessors<Class, Base>(scene, path, schema) {} \ |
| 251 |
|
|
\ |
| 252 |
|
|
public: |
| 253 |
|
|
|
| 254 |
|
|
/// `Class::Define(scene, path)` for a concrete schema. |
| 255 |
|
|
#define ERNIE_SCHEMA_DEFINE(Class) \ |
| 256 |
|
|
static Class Define(::ernie::Scene& scene, const ::ernie::Path& path) { \ |
| 257 |
|
|
scene.Define(path, Definition().name); \ |
| 258 |
|
|
return Class(scene, path); \ |
| 259 |
|
|
} |
| 260 |
|
|
|
| 261 |
|
|
/// The constructors and `Apply` of an API schema's view; a multiple-apply schema's take its |
| 262 |
|
|
/// instance name. |
| 263 |
|
|
#define ERNIE_API_SCHEMA_BODY(Class, text) \ |
| 264 |
|
|
ERNIE_SCHEMA_NAMES(Class, ::ernie::SchemaView, text) \ |
| 265 |
|
|
/** @throws std::invalid_argument if the prim is missing or lacks the API schema. */ \ |
| 266 |
|
|
Class(const ::ernie::Scene& scene, const ::ernie::Path& path, std::string_view instance = {}) \ |
| 267 |
|
|
: Class##Accessors<Class, ::ernie::SchemaView>(scene, path, Definition(), instance) {} \ |
| 268 |
|
|
Class(::ernie::Scene& scene, const ::ernie::Path& path, std::string_view instance = {}) \ |
| 269 |
|
|
: Class##Accessors<Class, ::ernie::SchemaView>(scene, path, Definition(), instance) {} \ |
| 270 |
|
|
static Class Apply(::ernie::Scene& scene, const ::ernie::Path& path, \ |
| 271 |
|
|
std::string_view instance = {}) { \ |
| 272 |
|
|
scene.ApplyApi(scene.Require(path), ::ernie::ApiName{&Definition(), instance}.ToString()); \ |
| 273 |
|
|
return Class(scene, path, instance); \ |
| 274 |
|
|
} |
| 275 |
|
|
|
| 276 |
|
|
/// Declares a schema's view class: an abstract base's, a prim type's with `Define`, or an applied |
| 277 |
|
|
/// API schema's with `Apply`. Classes adding members of their own spell the body out instead. |
| 278 |
|
|
#define ERNIE_SCHEMA(Class, Base, OWN_ATTRIBUTES, text) \ |
| 279 |
|
|
ERNIE_SCHEMA_ACCESSORS(Class, Base, OWN_ATTRIBUTES); \ |
| 280 |
|
|
class Class : public Class##Accessors<Class, Base> { \ |
| 281 |
|
|
ERNIE_SCHEMA_BODY(Class, Base, text) \ |
| 282 |
|
|
} |
| 283 |
|
|
#define ERNIE_CONCRETE_SCHEMA(Class, Base, OWN_ATTRIBUTES, text) \ |
| 284 |
|
|
ERNIE_SCHEMA_ACCESSORS(Class, Base, OWN_ATTRIBUTES); \ |
| 285 |
|
|
class Class : public Class##Accessors<Class, Base> { \ |
| 286 |
|
|
ERNIE_SCHEMA_BODY(Class, Base, text) \ |
| 287 |
|
|
ERNIE_SCHEMA_DEFINE(Class) \ |
| 288 |
|
|
} |
| 289 |
|
|
#define ERNIE_API_SCHEMA(Class, OWN_ATTRIBUTES, text) \ |
| 290 |
|
|
ERNIE_SCHEMA_ACCESSORS(Class, SchemaView, OWN_ATTRIBUTES); \ |
| 291 |
|
|
class Class : public Class##Accessors<Class, ::ernie::SchemaView> { \ |
| 292 |
|
|
ERNIE_API_SCHEMA_BODY(Class, text) \ |
| 293 |
|
|
} |
| 294 |
|
|
|
| 295 |
|
|
namespace ernie { |
| 296 |
|
|
/// @return The registry entry a view's base gives its schema; none for the root view. |
| 297 |
|
9497 |
template <typename Base> const SchemaDef* BaseDefinition() { |
| 298 |
|
|
if constexpr (std::is_same_v<Base, SchemaView>) { |
| 299 |
|
3214 |
return nullptr; |
| 300 |
|
|
} else { |
| 301 |
|
6283 |
return &Base::Definition(); |
| 302 |
|
|
} |
| 303 |
|
|
} |
| 304 |
|
|
} // namespace ernie |
| 305 |
|
|
|
| 306 |
|
|
/// Defines `Class::Definition()`, the schema's registry entry, from the view class's name, |
| 307 |
|
|
/// documentation and base; the variadic part takes the rest of its fields by name: |
| 308 |
|
|
/// `.openNamespaces = {...}`, `.builtinApis = {...}`, `.fallbackOverrides = {...}`. |
| 309 |
|
|
#define ERNIE_DEFINE_SCHEMA(Class, schemaKind, extentRule, OWN_ATTRIBUTES, ...) \ |
| 310 |
|
|
const ::ernie::SchemaDef& Class::Definition() { \ |
| 311 |
|
|
static const ::ernie::SchemaDef definition{ \ |
| 312 |
|
|
.name = Class::kName, \ |
| 313 |
|
|
.base = ::ernie::BaseDefinition<Class::SchemaBase>(), \ |
| 314 |
|
|
.kind = ::ernie::SchemaKind::schemaKind, \ |
| 315 |
|
|
.doc = Class::kDoc, \ |
| 316 |
|
|
.attributes = {OWN_ATTRIBUTES(ERNIE_ATTRIBUTE_DECLARE)}, \ |
| 317 |
|
|
.extent = extentRule, \ |
| 318 |
|
|
__VA_ARGS__}; \ |
| 319 |
|
|
return definition; \ |
| 320 |
|
|
} |
| 321 |
|
|
|