9 #ifndef PXR_IMAGING_PX_OSD_MESH_TOPOLOGY_VALIDATION_H
10 #define PXR_IMAGING_PX_OSD_MESH_TOPOLOGY_VALIDATION_H
102 class _OptionalInvalidationVector {
103 std::unique_ptr<std::vector<Invalidation>> _value;
106 _OptionalInvalidationVector() =
default;
107 _OptionalInvalidationVector(_OptionalInvalidationVector&&) =
default;
108 _OptionalInvalidationVector&
operator=(_OptionalInvalidationVector&&) =
110 _OptionalInvalidationVector(_OptionalInvalidationVector
const& other)
113 _value.reset(
new std::vector<Invalidation>(*other._value));
117 _OptionalInvalidationVector
const& other) {
120 _value.reset(
new std::vector<Invalidation>(*other._value));
124 void emplace() { _value.reset(
new std::vector<Invalidation>); }
125 explicit operator bool()
const {
return _value !=
nullptr; }
126 std::vector<Invalidation>&
value() {
130 std::vector<Invalidation>
const&
value()
const {
136 _OptionalInvalidationVector _invalidations;
140 const std::array<TfToken, S>& validTokens);
142 void _AppendInvalidation(
const Invalidation& invalidation) {
143 if (!_invalidations) {
144 _invalidations.emplace();
146 _invalidations.value().push_back(invalidation);
161 explicit operator bool()
const {
162 return !_invalidations || _invalidations.value().empty();
165 using iterator = std::vector<Invalidation>::const_iterator;
171 return _invalidations ? _invalidations.value().cbegin()
177 return _invalidations ? _invalidations.value().cend()
184 return _invalidations ? _invalidations.value().cbegin()
190 return _invalidations ? _invalidations.value().cend()
Encodes invalid triangle subdivision token value.
std::vector< Invalidation >::const_iterator iterator
PxOsdMeshTopologyValidation & operator=(PxOsdMeshTopologyValidation &&)=default
GLsizei const GLfloat * value
const_iterator cbegin() const
Encodes invalid face varying interpolation rule token value.
Encodes invalid crease method token value.
#define TF_DEV_AXIOM(cond)
Encodes if crease weights are negative.
Encodes invalid vertex interpolation rule token value.
Code
Codes for various invalid states for PxOsdMeshTopology.
std::vector< Invalidation >::const_iterator const_iterator
const_iterator end() const
GLuint const GLchar * name
Encodes invalid scheme token value.
Encodes if the element is negative.
Encodes if a vertex count is less than 3.
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE
const_iterator begin() const
const_iterator cend() const
Encodes invalid orientation token value.
Encodes if corner weights are negative.
PxOsdMeshTopologyValidation()=default
Encodes crease lengths element less than 2.