Loading...
Searching...
No Matches
schema.h
1//
2// Copyright 2016 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_USD_SDF_SCHEMA_H
8#define PXR_USD_SDF_SCHEMA_H
9
10#include "pxr/pxr.h"
11#include "pxr/usd/sdf/api.h"
12#include "pxr/usd/sdf/allowed.h"
13#include "pxr/usd/sdf/types.h"
14#include "pxr/usd/sdf/valueTypeName.h"
15
16#include "pxr/base/plug/notice.h"
17#include "pxr/base/tf/hash.h"
18#include "pxr/base/tf/hashmap.h"
21#include "pxr/base/tf/token.h"
22#include "pxr/base/tf/type.h"
24#include "pxr/base/vt/value.h"
25
26#include <memory>
27#include <string>
28#include <vector>
29
30PXR_NAMESPACE_OPEN_SCOPE
31
32class JsValue;
33class SdfPath;
34class SdfPayload;
35class SdfReference;
36class Sdf_ValueTypeRegistry;
37
39
45class SdfSchemaBase : public TfWeakBase {
46 SdfSchemaBase(const SdfSchemaBase&) = delete;
47 SdfSchemaBase& operator=(const SdfSchemaBase&) = delete;
48protected:
49 class _SpecDefiner;
50
51public:
57 public:
59 const SdfSchemaBase& schema,
60 const TfToken& name,
61 const VtValue& fallbackValue);
62
63 typedef std::vector< std::pair<TfToken, JsValue> > InfoVec;
64
65 SDF_API const TfToken& GetName() const;
66 SDF_API const VtValue& GetFallbackValue() const;
67 SDF_API const InfoVec& GetInfo() const;
68
69 SDF_API bool IsPlugin() const;
70 SDF_API bool IsReadOnly() const;
71 SDF_API bool HoldsChildren() const;
72
76
77 template <class T>
78 SdfAllowed IsValidValue(const T& value) const
79 {
80 return (_valueValidator ?
81 _valueValidator(_schema, VtValue(value)) :
82 SdfAllowed(true));
83 }
84
85 template <class T>
86 SdfAllowed IsValidListValue(const T& value) const
87 {
88 return (_listValueValidator ?
89 _listValueValidator(_schema, VtValue(value)) :
90 SdfAllowed(true));
91 }
92
93 template <class T>
94 SdfAllowed IsValidMapKey(const T& value) const
95 {
96 return (_mapKeyValidator ?
97 _mapKeyValidator(_schema, VtValue(value)) :
98 SdfAllowed(true));
99 }
100
101 template <class T>
102 SdfAllowed IsValidMapValue(const T& value) const
103 {
104 return (_mapValueValidator ?
105 _mapValueValidator(_schema, VtValue(value)) :
106 SdfAllowed(true));
107 }
108
110
113
115
116 FieldDefinition& Plugin();
117 FieldDefinition& Children();
118 FieldDefinition& ReadOnly();
119 FieldDefinition& AddInfo(const TfToken& tok, const JsValue& val);
120
121 using Validator =
122 SdfAllowed (*) (const SdfSchemaBase&, const VtValue&);
123 FieldDefinition& ValueValidator(Validator v);
124 FieldDefinition& ListValueValidator(Validator v);
125 FieldDefinition& MapKeyValidator(Validator v);
126 FieldDefinition& MapValueValidator(Validator v);
127
129
130 private:
131 const SdfSchemaBase& _schema;
132 TfToken _name;
133 VtValue _fallbackValue;
134 InfoVec _info;
135
136 bool _isPlugin;
137 bool _isReadOnly;
138 bool _holdsChildren;
139
140 Validator _valueValidator;
141 Validator _listValueValidator;
142 Validator _mapKeyValidator;
143 Validator _mapValueValidator;
144 };
145
146 // Structure containing information about a field as it pertains to the
147 // spec this object defines.
148 struct _FieldInfo {
149 _FieldInfo(): required(false), metadata(false) { }
150 bool required;
151 bool metadata;
152 TfToken metadataDisplayGroup;
153 };
154
155 class SpecDefinition;
156
162 public:
164 SDF_API TfTokenVector GetFields() const;
165
168 return _requiredFields;
169 }
170
173
175 SDF_API bool IsValidField(const TfToken& name) const;
176
178 SDF_API bool IsMetadataField(const TfToken& name) const;
179
183 SDF_API
185
187 SDF_API bool IsRequiredField(const TfToken& name) const;
188
189
190 private:
191 typedef TfHashMap<TfToken, _FieldInfo, TfToken::HashFunctor>
192 _FieldMap;
193 _FieldMap _fields;
194
195 // A separate vector of required field names from _fields. Access to
196 // these is in a hot path, so we cache them separately.
197 TfTokenVector _requiredFields;
198
199 private:
200 friend class _SpecDefiner;
201 void _AddField(const TfToken& name, const _FieldInfo& fieldInfo);
202 };
203
206 SDF_API
207 const FieldDefinition* GetFieldDefinition(const TfToken &fieldKey) const;
208
211 inline const SpecDefinition* GetSpecDefinition(SdfSpecType specType) const {
212 return _specDefinitions[specType].second ?
213 &_specDefinitions[specType].first : nullptr;
214 }
215
218
221 SDF_API
222 bool IsRegistered(const TfToken &fieldKey, VtValue *fallback=NULL) const;
223
226 SDF_API
227 bool HoldsChildren(const TfToken &fieldKey) const;
228
231 SDF_API
232 const VtValue& GetFallback(const TfToken &fieldKey) const;
233
235 SDF_API
236 VtValue CastToTypeOf(const TfToken &fieldKey, const VtValue &value) const;
237
239 SDF_API
240 bool IsValidFieldForSpec(const TfToken &fieldKey, SdfSpecType specType) const;
241
243 SDF_API TfTokenVector GetFields(SdfSpecType specType) const;
244
247
251 SDF_API
253 TfToken const &metadataField) const;
254
256 SDF_API const TfTokenVector &GetRequiredFields(SdfSpecType specType) const;
257
262 inline bool IsRequiredFieldName(const TfToken &fieldName) const {
263 for (TfToken const &fname: _requiredFieldNames) {
264 if (fname == fieldName) {
265 return true;
266 }
267 }
268 return false;
269 }
270
272
277
278 SDF_API
280 SDF_API
281 static SdfAllowed IsValidIdentifier(const std::string& name);
282 SDF_API
283 static SdfAllowed IsValidNamespacedIdentifier(const std::string& name);
284 SDF_API
285 static SdfAllowed IsValidInheritPath(const SdfPath& path);
286 SDF_API
287 static SdfAllowed IsValidPayload(const SdfPayload& payload);
288 SDF_API
289 static SdfAllowed IsValidReference(const SdfReference& ref);
290 SDF_API
291 static SdfAllowed IsValidRelationshipTargetPath(const SdfPath& path);
292 SDF_API
293 static SdfAllowed IsValidRelocatesSourcePath(const SdfPath& path);
294 SDF_API
295 static SdfAllowed IsValidRelocatesTargetPath(const SdfPath& path);
296 SDF_API
297 static SdfAllowed IsValidRelocate(const SdfRelocate& relocate);
298 SDF_API
299 static SdfAllowed IsValidSpecializesPath(const SdfPath& path);
300 SDF_API
301 static SdfAllowed IsValidSubLayer(const std::string& sublayer);
302 SDF_API
303 static SdfAllowed IsValidVariantIdentifier(const std::string& name);
304 SDF_API
305 static SdfAllowed IsValidVariantSelection(const std::string& sel);
306
308
311
317 SDF_API
318 SdfAllowed IsValidValue(const VtValue& value) const;
319
321 SDF_API
322 std::vector<SdfValueTypeName> GetAllTypes() const;
323
325 SDF_API
326 SdfValueTypeName FindType(const TfToken& typeName) const;
328 SDF_API
329 SdfValueTypeName FindType(const char *typeName) const;
331 SDF_API
332 SdfValueTypeName FindType(std::string const &typeName) const;
333
335 SDF_API
337 const TfToken& role = TfToken()) const;
338
340 SDF_API
342 const TfToken& role = TfToken()) const;
343
347 SDF_API
349
351
352protected:
358 public:
361
363 const TfToken& name, bool required = false);
364 _SpecDefiner& MetadataField(
365 const TfToken& name, bool required = false);
366 _SpecDefiner& MetadataField(
367 const TfToken& name, const TfToken& displayGroup,
368 bool required = false);
369
370 _SpecDefiner &CopyFrom(const SpecDefinition &other);
371
373 private:
374 friend class SdfSchemaBase;
375 explicit _SpecDefiner(SdfSchemaBase *schema, SpecDefinition *definition)
376 : _schema(schema)
377 , _definition(definition)
378 {}
379 SdfSchemaBase *_schema;
380 SpecDefinition *_definition;
381 };
382
385 public:
386 explicit _ValueTypeRegistrar(Sdf_ValueTypeRegistry*);
387
388 class Type
389 {
390 public:
391 ~Type();
392
393 // Specify a type with the given name, default value, and default
394 // array value of VtArray<T>.
395 template <class T>
396 Type(const TfToken& name, const T& defaultValue)
397 : Type(name, VtValue(defaultValue), VtValue(VtArray<T>()))
398 { }
399 template <class T>
400 Type(char const *name, const T& defaultValue)
401 : Type(TfToken(name),
402 VtValue(defaultValue), VtValue(VtArray<T>()))
403 { }
404
405 // Specify a type with the given name and underlying C++ type.
406 // No default value or array value will be registered.
407 Type(const TfToken& name, const TfType& type);
408
409 // Set C++ type name string for this type. Defaults to type name
410 // from TfType.
411 Type& CPPTypeName(const std::string& cppTypeName);
412
413 // Set shape for this type. Defaults to shapeless.
414 Type& Dimensions(const SdfTupleDimensions& dims);
415
416 // Set default unit for this type. Defaults to dimensionless unit.
417 Type& DefaultUnit(TfEnum unit);
418
419 // Set role for this type. Defaults to no role.
420 Type& Role(const TfToken& role);
421
422 // Indicate that arrays of this type are not supported.
423 Type& NoArrays();
424
425 private:
426 Type(const TfToken& name,
427 const VtValue& defaultValue,
428 const VtValue& defaultArrayValue);
429
430 class _Impl;
431 std::unique_ptr<_Impl> _impl;
432
433 friend class _ValueTypeRegistrar;
434 };
435
437 void AddType(const Type& type);
438
439 private:
440 Sdf_ValueTypeRegistry* _registry;
441 };
442
444
447 class EmptyTag {};
449
450 virtual ~SdfSchemaBase();
451
459 template <class T>
461 const TfToken &fieldKey, const T &fallback, bool plugin = false)
462 {
463 return _CreateField(fieldKey, VtValue(fallback), plugin);
464 }
465
469 // Mark the definition as valid and return a pointer to it.
470 _specDefinitions[type].second = true;
471 return _SpecDefiner(this, &_specDefinitions[type].first);
472 }
473
477
480
484
487
490
493
497 typedef std::function<VtValue(const std::string&, const JsValue&)>
499
502 const std::vector<const SdfSchemaBase::FieldDefinition *>
503 _UpdateMetadataFromPlugins(const PlugPluginPtrVector& plugins,
504 const std::string& metadataTag =
505 std::string(),
506 const _DefaultValueFactoryFn& defFactory =
508
509private:
510 friend class _SpecDefiner;
511
512 void _OnDidRegisterPlugins(const PlugNotice::DidRegisterPlugins& n);
513
514 // Return a _SpecDefiner for an existing spec definition, \p local.
516 return _SpecDefiner(this, local);
517 }
518
519 void _AddRequiredFieldName(const TfToken &name);
520
521 const SpecDefinition* _CheckAndGetSpecDefinition(SdfSpecType type) const;
522
523 friend struct Sdf_SchemaFieldTypeRegistrar;
524 FieldDefinition& _CreateField(
525 const TfToken &fieldKey, const VtValue &fallback, bool plugin = false);
526
527 template <class T>
528 FieldDefinition& _DoRegisterField(const TfToken &fieldKey, const T &fallback)
529 {
530 return _DoRegisterField(fieldKey, VtValue(fallback));
531 }
532
533 FieldDefinition& _DoRegisterField(
534 const TfToken &fieldKey, const VtValue &fallback);
535
536private:
537 typedef TfHashMap<TfToken, SdfSchemaBase::FieldDefinition,
539 _FieldDefinitionMap;
540 _FieldDefinitionMap _fieldDefinitions;
541
542 // Pair of definition and flag indicating validity.
543 std::pair<SdfSchemaBase::SpecDefinition, bool>
544 _specDefinitions[SdfNumSpecTypes];
545
546 std::unique_ptr<Sdf_ValueTypeRegistry> _valueTypeRegistry;
547 TfTokenVector _requiredFieldNames;
548};
549
555class SdfSchema : public SdfSchemaBase {
556public:
557 SDF_API
558 static const SdfSchema& GetInstance()
559 {
561 }
562
563private:
564 friend class TfSingleton<SdfSchema>;
565 SdfSchema();
566 virtual ~SdfSchema();
567};
568
569SDF_API_TEMPLATE_CLASS(TfSingleton<SdfSchema>);
570
574#define SDF_FIELD_KEYS \
575 ((Active, "active")) \
576 ((AllowedTokens, "allowedTokens")) \
577 ((AssetInfo, "assetInfo")) \
578 ((ColorConfiguration, "colorConfiguration")) \
579 ((ColorManagementSystem, "colorManagementSystem")) \
580 ((ColorSpace, "colorSpace")) \
581 ((Comment, "comment")) \
582 ((ConnectionPaths, "connectionPaths")) \
583 ((Custom, "custom")) \
584 ((CustomData, "customData")) \
585 ((CustomLayerData, "customLayerData")) \
586 ((Default, "default")) \
587 ((DefaultPrim, "defaultPrim")) \
588 ((DisplayGroup, "displayGroup")) \
589 ((DisplayGroupOrder, "displayGroupOrder")) \
590 ((DisplayName, "displayName")) \
591 ((DisplayUnit, "displayUnit")) \
592 ((Documentation, "documentation")) \
593 ((EndTimeCode, "endTimeCode")) \
594 ((ExpressionVariables, "expressionVariables")) \
595 ((FramePrecision, "framePrecision")) \
596 ((FramesPerSecond, "framesPerSecond")) \
597 ((Hidden, "hidden")) \
598 ((HasOwnedSubLayers, "hasOwnedSubLayers")) \
599 ((InheritPaths, "inheritPaths")) \
600 ((Instanceable, "instanceable")) \
601 ((Kind, "kind")) \
602 ((LayerRelocates, "layerRelocates")) \
603 ((PrimOrder, "primOrder")) \
604 ((NoLoadHint, "noLoadHint")) \
605 ((Owner, "owner")) \
606 ((Payload, "payload")) \
607 ((Permission, "permission")) \
608 ((Prefix, "prefix")) \
609 ((PrefixSubstitutions, "prefixSubstitutions")) \
610 ((PropertyOrder, "propertyOrder")) \
611 ((References, "references")) \
612 ((Relocates, "relocates")) \
613 ((SessionOwner, "sessionOwner")) \
614 ((Specializes, "specializes")) \
615 ((Specifier, "specifier")) \
616 ((StartTimeCode, "startTimeCode")) \
617 ((SubLayers, "subLayers")) \
618 ((SubLayerOffsets, "subLayerOffsets")) \
619 ((Suffix, "suffix")) \
620 ((SuffixSubstitutions, "suffixSubstitutions")) \
621 ((SymmetricPeer, "symmetricPeer")) \
622 ((SymmetryArgs, "symmetryArgs")) \
623 ((SymmetryArguments, "symmetryArguments")) \
624 ((SymmetryFunction, "symmetryFunction")) \
625 ((TargetPaths, "targetPaths")) \
626 ((TimeSamples, "timeSamples")) \
627 ((TimeCodesPerSecond, "timeCodesPerSecond")) \
628 ((TypeName, "typeName")) \
629 ((VariantSelection, "variantSelection")) \
630 ((Variability, "variability")) \
631 ((VariantSetNames, "variantSetNames")) \
632 \
633 /* XXX: These fields should move into Sd. See bug 123508. */ \
634 ((EndFrame, "endFrame")) \
635 ((StartFrame, "startFrame"))
636
637#define SDF_CHILDREN_KEYS \
638 ((ConnectionChildren, "connectionChildren")) \
639 ((ExpressionChildren, "expressionChildren")) \
640 ((MapperArgChildren, "mapperArgChildren")) \
641 ((MapperChildren, "mapperChildren")) \
642 ((PrimChildren, "primChildren")) \
643 ((PropertyChildren, "properties")) \
644 ((RelationshipTargetChildren, "targetChildren")) \
645 ((VariantChildren, "variantChildren")) \
646 ((VariantSetChildren, "variantSetChildren"))
647
648TF_DECLARE_PUBLIC_TOKENS(SdfFieldKeys, SDF_API, SDF_FIELD_KEYS);
649TF_DECLARE_PUBLIC_TOKENS(SdfChildrenKeys, SDF_API, SDF_CHILDREN_KEYS);
650
651PXR_NAMESPACE_CLOSE_SCOPE
652
653#endif // PXR_USD_SDF_SCHEMA_H
A discriminated union type for JSON values.
Definition: value.h:45
Notice sent after new plugins have been registered with the Plug registry.
Definition: notice.h:34
Defines an interface to registered plugins.
Definition: plugin.h:40
Indicates if an operation is allowed and, if not, why not.
Definition: allowed.h:29
A path value used to locate objects in layers or scenegraphs.
Definition: path.h:274
Represents a payload and all its meta data.
Definition: payload.h:41
Represents a reference and all its meta data.
Definition: reference.h:58
Class that defines fields for a spec type.
Definition: schema.h:357
_SpecDefiner & Field(const TfToken &name, bool required=false)
Functions for setting spec attributes during registration.
A helper for registering value types.
Definition: schema.h:384
void AddType(const Type &type)
Register a value type and its corresponding array value type.
Class defining various attributes for a field.
Definition: schema.h:56
FieldDefinition & FallbackValue(const VtValue &v)
Functions for setting field attributes during registration.
SdfAllowed IsValidValue(const T &value) const
Validation functions that return true if a given value passes the registered validator or if no valid...
Definition: schema.h:78
Class representing fields and other information for a spec type.
Definition: schema.h:161
SDF_API bool IsValidField(const TfToken &name) const
Returns whether the given field is valid for this spec.
TfTokenVector const & GetRequiredFields() const
Returns all value fields marked as required for this spec.
Definition: schema.h:167
SDF_API TfTokenVector GetFields() const
Returns all fields for this spec.
SDF_API bool IsMetadataField(const TfToken &name) const
Returns whether the given field is metadata for this spec.
SDF_API bool IsRequiredField(const TfToken &name) const
Returns whether the given field is required for this spec.
SDF_API TfTokenVector GetMetadataFields() const
Returns all value fields marked as metadata for this spec.
SDF_API TfToken GetMetadataFieldDisplayGroup(const TfToken &name) const
Returns the display group for this metadata field.
Generic class that provides information about scene description fields but doesn't actually provide a...
Definition: schema.h:45
void _RegisterPluginFields()
Registers plugin fields and sets up handling so that fields will be added when additional plugins are...
SDF_API std::vector< SdfValueTypeName > GetAllTypes() const
Returns all registered type names.
SDF_API TfToken GetMetadataFieldDisplayGroup(SdfSpecType specType, TfToken const &metadataField) const
Return the metadata field display group for metadata metadataField on specType.
SDF_API VtValue CastToTypeOf(const TfToken &fieldKey, const VtValue &value) const
Coerce value to the correct type for the specified field.
SDF_API const FieldDefinition * GetFieldDefinition(const TfToken &fieldKey) const
Returns the field definition for the given field.
SDF_API SdfValueTypeName FindType(const TfToken &typeName) const
Return the type name object for the given type name token.
std::function< VtValue(const std::string &, const JsValue &)> _DefaultValueFactoryFn
Factory function for creating a default value for a metadata field.
Definition: schema.h:498
bool IsRequiredFieldName(const TfToken &fieldName) const
Return true if fieldName is a required field name for at least one spec type, return false otherwise.
Definition: schema.h:262
SDF_API bool HoldsChildren(const TfToken &fieldKey) const
Returns whether the given field is a 'children' field – that is, it indexes certain children beneath ...
SDF_API TfTokenVector GetMetadataFields(SdfSpecType specType) const
Returns all metadata fields registered for the given spec type.
SDF_API SdfValueTypeName FindType(const VtValue &value, const TfToken &role=TfToken()) const
Return the type name object for the value's type and optional role.
_SpecDefiner _ExtendSpecDefinition(SdfSpecType specType)
Returns a _SpecDefiner for the previously-defined spec type for specifying additional fields.
SDF_API bool IsRegistered(const TfToken &fieldKey, VtValue *fallback=NULL) const
Convenience functions for accessing specific field information.
SDF_API SdfValueTypeName FindOrCreateType(const TfToken &typeName) const
Return the type name object for the given type name string if it exists otherwise create a temporary ...
static SDF_API SdfAllowed IsValidAttributeConnectionPath(const SdfPath &path)
Specific validation functions for various fields.
SDF_API const VtValue & GetFallback(const TfToken &fieldKey) const
Return the fallback value for the specified fieldKey or the empty value if fieldKey is not registered...
void _RegisterStandardTypes()
Registers standard attribute value types.
void _RegisterStandardFields()
Registers the standard fields.
SDF_API SdfAllowed IsValidValue(const VtValue &value) const
Scene description value types.
SDF_API SdfValueTypeName FindType(std::string const &typeName) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
const std::vector< const SdfSchemaBase::FieldDefinition * > _UpdateMetadataFromPlugins(const PlugPluginPtrVector &plugins, const std::string &metadataTag=std::string(), const _DefaultValueFactoryFn &defFactory=_DefaultValueFactoryFn())
Registers all metadata fields specified in the given plugins under the given metadata tag.
const SpecDefinition * GetSpecDefinition(SdfSpecType specType) const
Returns the spec definition for the given spec type.
Definition: schema.h:211
SDF_API bool IsValidFieldForSpec(const TfToken &fieldKey, SdfSpecType specType) const
Return whether the given field is valid for the given spec type.
SDF_API TfTokenVector GetFields(SdfSpecType specType) const
Returns all fields registered for the given spec type.
void _RegisterLegacyTypes()
Registers legacy attribute value types.
SDF_API SdfValueTypeName FindType(const TfType &type, const TfToken &role=TfToken()) const
Return the type name object for the given type and optional role.
_ValueTypeRegistrar _GetTypeRegistrar() const
Returns a type registrar.
SDF_API SdfValueTypeName FindType(const char *typeName) const
This is an overloaded member function, provided for convenience. It differs from the above function o...
_SpecDefiner _Define(SdfSpecType type)
Registers the given spec type with this schema and return a _SpecDefiner for specifying additional fi...
Definition: schema.h:468
SDF_API const TfTokenVector & GetRequiredFields(SdfSpecType specType) const
Returns all required fields registered for the given spec type.
FieldDefinition & _RegisterField(const TfToken &fieldKey, const T &fallback, bool plugin=false)
Creates and registers a new field named fieldKey with the fallback value fallback.
Definition: schema.h:460
Construct an SdfSchemaBase but does not populate it with standard fields and types.
Definition: schema.h:447
Class that provides information about the various scene description fields.
Definition: schema.h:555
Represents a value type name, i.e.
Definition: valueTypeName.h:71
An enum class that records both enum type and enum value.
Definition: enum.h:120
Manage a single instance of an object (see.
Definition: singleton.h:105
static T & GetInstance()
Return a reference to an object of type T, creating it if necessary.
Definition: singleton.h:120
Token for efficient comparison, assignment, and hashing of known strings.
Definition: token.h:71
TfType represents a dynamic runtime type.
Definition: type.h:48
Enable a concrete base class for use with TfWeakPtr.
Definition: weakBase.h:124
Represents an arbitrary dimensional rectangular container class.
Definition: array.h:211
Provides a container which may hold any type, and provides introspection and iteration over array typ...
Definition: value.h:147
#define TF_DECLARE_WEAK_PTRS(type)
Define standard weak pointer types.
Definition: declarePtrs.h:45
Manage a single instance of an object.
This file defines some macros that are useful for declaring and using static TfTokens.
#define TF_DECLARE_PUBLIC_TOKENS(...)
Macro to define public tokens.
Definition: staticTokens.h:81
Represents the shape of a value type (or that of an element in an array).
Definition: valueTypeName.h:30
Functor to use for hash maps from tokens to other things.
Definition: token.h:149
TfToken class for efficient string referencing and hashing, plus conversions to and from stl string c...
std::vector< TfToken > TfTokenVector
Convenience types.
Definition: token.h:440
Basic Sdf data types.
SdfSpecType
An enum that specifies the type of an object.
Definition: types.h:68
std::pair< SdfPath, SdfPath > SdfRelocate
A single relocate specifying a source SdfPath and a target SdfPath for a relocation.
Definition: types.h:271