24 #ifndef PXR_USD_USD_PRIM_DEFINITION_H
25 #define PXR_USD_USD_PRIM_DEFINITION_H
37 #include <unordered_map>
59 return _appliedAPISchemas;
90 explicit operator bool()
const
198 explicit operator bool()
const {
264 explicit operator bool()
const{
302 const TfToken& propName)
const;
311 const TfToken& attrName)
const;
330 return _HasField(attrName, SdfFieldKeys->Default, value);
350 return _HasField(
TfToken(), key, value);
368 return _HasFieldDictKey(
TfToken(), key, keyPath, value);
393 return prop.GetMetadata(key, value);
412 return prop.GetMetadataByDictKey(key, keyPath, value);
484 primDef._HasField(propName, fieldName, value) :
485 primDef._HasFieldDictKey(propName, fieldName, keyPath, value);
490 struct _LayerAndPath {
502 return layer->HasField(
path, fieldName, value);
506 bool HasFieldDictKey(
508 return layer->HasFieldDictKey(
path, fieldName, keyPath, value);
516 bool _HasField(
const TfToken& propName,
520 if (
const _LayerAndPath *layerAndPath =
521 _GetPropertyLayerAndPath(propName)) {
522 return layerAndPath->HasField(fieldName, value);
528 bool _HasFieldDictKey(
const TfToken& propName,
533 if (
const _LayerAndPath *layerAndPath =
534 _GetPropertyLayerAndPath(propName)) {
535 return layerAndPath->HasFieldDictKey(fieldName, keyPath, value);
544 void _IntializeForTypedSchema(
545 const SdfLayerHandle &schematicsLayer,
546 const SdfPath &schematicsPrimPath,
547 const VtTokenArray &propertiesToIgnore);
550 void _IntializeForAPISchema(
552 const SdfLayerHandle &schematicsLayer,
553 const SdfPath &schematicsPrimPath,
554 const VtTokenArray &propertiesToIgnore);
557 bool _MapSchematicsPropertyPaths(
558 const VtTokenArray &propertiesToIgnore);
561 const _LayerAndPath *_GetPropertyLayerAndPath(
const TfToken& propName)
const
566 _LayerAndPath *_GetPropertyLayerAndPath(
const TfToken& propName)
572 void _ComposePropertiesFromPrimDef(
575 void _ComposePropertiesFromPrimDefInstance(
579 void _AddOrComposeProperty(
581 const _LayerAndPath &layerAndPath);
583 SdfPropertySpecHandle _FindOrCreatePropertySpecForComposition(
585 const _LayerAndPath &srcLayerAndPath);
587 SdfPropertySpecHandle _CreateComposedPropertyIfNeeded(
589 const _LayerAndPath &strongProp,
590 const _LayerAndPath &weakProp);
593 void _ComposeOverAndReplaceExistingProperty(
598 using _FamilyAndInstanceToVersionMap =
602 bool _ComposeWeakerAPIPrimDefinition(
605 _FamilyAndInstanceToVersionMap *alreadyAppliedSchemaFamilyVersions);
607 static bool _PropertyTypesMatch(
612 _LayerAndPath _primLayerAndPath;
616 using _PrimTypePropNameToPathMap =
617 std::unordered_map<TfToken, _LayerAndPath, TfToken::HashFunctor>;
618 _PrimTypePropNameToPathMap _propLayerAndPathMap;
648 return _layerAndPath->HasFieldDictKey(key, keyPath, value);
655 return _layerAndPath->HasField(SdfFieldKeys->Default, value);
661 #endif //PXR_USD_USD_PRIM_DEFINITION_H
USD_API Attribute GetAttributeDefinition(const TfToken &attrName) const
USD_API SdfAttributeSpecHandle GetSchemaAttributeSpec(const TfToken &attrName) const
USD_API TfTokenVector ListPropertyMetadataFields(const TfToken &propName) const
bool GetMetadataByDictKey(const TfToken &key, const TfToken &keyPath, T *value) const
USD_API Relationship GetRelationshipDefinition(const TfToken &relName) const
USD_API SdfValueTypeName GetTypeName() const
GLsizei const GLchar *const * string
USD_API const TfToken & GetName() const
USD_API SdfSpecType GetSpecType(const TfToken &propName) const
GLsizei const GLchar *const * path
USD_API SdfVariability GetVariability() const
Returns the variability of this property in the prim definition.
bool GetFallbackValue(T *value) const
~UsdPrimDefinition()=default
const TfTokenVector & GetAppliedAPISchemas() const
USD_API std::string GetDocumentation() const
USD_API bool IsAttribute() const
friend bool Usd_GetFallbackValue(const UsdPrimDefinition &primDef, const TfToken &propName, const TfToken &fieldName, const TfToken &keyPath, T *value)
USD_API TfTokenVector ListMetadataFields() const
bool GetPropertyMetadataByDictKey(const TfToken &propName, const TfToken &key, const TfToken &keyPath, T *value) const
GLenum GLuint GLint GLint layer
unsigned int UsdSchemaVersion
Schema versions are specified as a single unsigned integer value.
Property()=default
Default constructor returns an invalid property.
USD_API Property GetPropertyDefinition(const TfToken &propName) const
bool GetPropertyMetadata(const TfToken &propName, const TfToken &key, T *value) const
Property(const _LayerAndPath *layerAndPath)
USD_API std::string GetPropertyDocumentation(const TfToken &propName) const
const _LayerAndPath * _layerAndPath
Container::mapped_type * TfMapLookupPtr(Container &map, Key const &key)
USD_API std::string GetDocumentation() const
bool GetAttributeFallbackValue(const TfToken &attrName, T *value) const
std::vector< TfToken > TfTokenVector
Convenience types.
USD_API TfToken GetTypeNameToken() const
GLuint const GLchar * name
USD_API SdfSpecType GetSpecType() const
Returns the spec type of this property in the prim definition.
USD_API TfTokenVector ListMetadataFields() const
Relationship()=default
Default constructor returns an invalid relationship.
bool GetMetadataByDictKey(const TfToken &key, const TfToken &keyPath, T *value) const
static USD_API bool IsDisallowedField(const TfToken &fieldName)
const TfTokenVector & GetPropertyNames() const
Return the list of names of builtin properties for this prim definition.
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
Attribute()=default
Default constructor returns an invalid attribute.
USD_API SdfRelationshipSpecHandle GetSchemaRelationshipSpec(const TfToken &relName) const
#define PXR_NAMESPACE_CLOSE_SCOPE
bool GetMetadata(const TfToken &key, T *value) const
Property(const TfToken &name, const _LayerAndPath *layerAndPath)
bool GetMetadata(const TfToken &key, T *value) const
USD_API bool FlattenTo(const SdfLayerHandle &layer, const SdfPath &path, SdfSpecifier newSpecSpecifier=SdfSpecifierOver) const
USD_API SdfPropertySpecHandle GetSchemaPropertySpec(const TfToken &propName) const
USD_API bool IsRelationship() const
bool IsEmpty() const
Returns true iff this token contains the empty string "".