7 #ifndef PXR_USD_USD_PRIM_DEFINITION_H
8 #define PXR_USD_USD_PRIM_DEFINITION_H
20 #include <unordered_map>
50 return _locallyDefinedPropertyNames;
56 return _appliedAPISchemas;
87 explicit operator bool()
const
195 explicit operator bool()
const {
261 explicit operator bool()
const{
299 const TfToken& propName)
const;
308 const TfToken& attrName)
const;
327 return _HasField(attrName, SdfFieldKeys->Default, value);
347 return _HasField(
TfToken(), key, value);
365 return _HasFieldDictKey(
TfToken(), key, keyPath, value);
390 return prop.GetMetadata(key, value);
409 return prop.GetMetadataByDictKey(key, keyPath, value);
481 primDef._HasField(propName, fieldName, value) :
482 primDef._HasFieldDictKey(propName, fieldName, keyPath, value);
487 struct _LayerAndPath {
499 return layer->HasField(
path, fieldName, value);
503 bool HasFieldDictKey(
505 return layer->HasFieldDictKey(
path, fieldName, keyPath, value);
512 explicit operator bool() const noexcept {
521 bool _HasField(
const TfToken& propName,
525 if (
const _LayerAndPath *layerAndPath =
526 _GetPropertyLayerAndPath(propName)) {
527 return layerAndPath->HasField(fieldName, value);
533 bool _HasFieldDictKey(
const TfToken& propName,
538 if (
const _LayerAndPath *layerAndPath =
539 _GetPropertyLayerAndPath(propName)) {
540 return layerAndPath->HasFieldDictKey(fieldName, keyPath, value);
548 void _ApplyPropertyOrder();
551 void _InitializeForTypedSchema(
552 const SdfLayerHandle &schematicsLayer,
553 const SdfPath &schematicsPrimPath,
554 const VtTokenArray &propertiesToIgnore);
557 void _InitializeForAPISchema(
559 const SdfLayerHandle &schematicsLayer,
560 const SdfPath &schematicsPrimPath,
561 const VtTokenArray &propertiesToIgnore);
564 bool _MapSchematicsPropertyPaths(
565 const VtTokenArray &propertiesToIgnore);
568 const _LayerAndPath *_GetPropertyLayerAndPath(
const TfToken& propName)
const
573 _LayerAndPath *_GetPropertyLayerAndPath(
const TfToken& propName)
579 void _ComposePropertiesFromPrimDef(
582 void _ComposePropertiesFromPrimDefInstance(
584 const std::string &instanceName);
586 void _AddOrComposeProperty(
588 const _LayerAndPath &layerAndPath);
590 SdfSpecHandle _FindOrCreateSpecForComposition(
592 const _LayerAndPath &srcLayerAndPath);
594 SdfSpecHandle _CreateComposedPrimOrPropertyIfNeeded(
596 const _LayerAndPath &strongProp,
597 const _LayerAndPath &weakProp);
600 void _ComposeOverAndReplaceExistingProperty(
605 using _FamilyAndInstanceToVersionMap =
609 bool _ComposeWeakerAPIPrimDefinition(
612 _FamilyAndInstanceToVersionMap *alreadyAppliedSchemaFamilyVersions);
614 static bool _PropertyTypesMatch(
619 _LayerAndPath _primLayerAndPath;
623 using _PrimTypePropNameToPathMap =
624 std::unordered_map<TfToken, _LayerAndPath, TfToken::HashFunctor>;
625 _PrimTypePropNameToPathMap _propLayerAndPathMap;
659 return _layerAndPath->HasFieldDictKey(key, keyPath, value);
666 return _layerAndPath->HasField(SdfFieldKeys->Default, value);
672 #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
#define PXR_NAMESPACE_OPEN_SCOPE
GLsizei const GLfloat * value
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.
const TfTokenVector & GetLocallyDefinedPropertyNames() const
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
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 "".