7 #ifndef PXR_USD_SDF_DECLARE_SPEC_H
8 #define PXR_USD_SDF_DECLARE_SPEC_H
40 #define SDF_DECLARE_ABSTRACT_SPEC(SpecType, BaseSpecType) \
43 SpecType(const SpecType& spec) \
44 : BaseSpecType(spec) { } \
45 explicit SpecType(const Sdf_IdentityRefPtr& identity) \
46 : BaseSpecType(identity) { } \
48 friend struct Sdf_CastAccess; \
49 explicit SpecType(const SdfSpec& spec) \
50 : BaseSpecType(spec) { } \
52 #define SDF_DEFINE_ABSTRACT_SPEC(SchemaType, SpecType, BaseSpecType) \
53 TF_REGISTRY_FUNCTION_WITH_TAG(TfType, Type) \
55 TfType::Define<SpecType, TfType::Bases<BaseSpecType> >(); \
57 TF_REGISTRY_FUNCTION_WITH_TAG(SdfSpecTypeRegistration, Registration) \
59 SdfSpecTypeRegistration::RegisterAbstractSpecType< \
60 SchemaType, SpecType>(); \
65 #define SDF_DECLARE_SPEC(SpecType, BaseSpecType) \
66 SDF_DECLARE_ABSTRACT_SPEC(SpecType, BaseSpecType) \
68 #define SDF_DEFINE_SPEC(SchemaType, SpecTypeEnum, SpecType, BaseSpecType) \
69 TF_REGISTRY_FUNCTION_WITH_TAG(TfType, Type) \
71 TfType::Define<SpecType, TfType::Bases<BaseSpecType> >(); \
73 TF_REGISTRY_FUNCTION_WITH_TAG(SdfSpecTypeRegistration, Registration) \
75 SdfSpecTypeRegistration::RegisterSpecType<SchemaType, SpecType> \
82 #define SDF_DECLARE_BASE_SPEC(SpecType) \
85 SpecType(const SpecType& spec) : _id(spec._id) { } \
86 explicit SpecType(const Sdf_IdentityRefPtr& id) : _id(id) { } \
88 #define SDF_DEFINE_BASE_SPEC(SchemaType, SpecType) \
89 TF_REGISTRY_FUNCTION_WITH_TAG(TfType, Type) \
91 TfType::Define<SpecType>(); \
93 TF_REGISTRY_FUNCTION_WITH_TAG(SdfSpecTypeRegistration, Registration) \
95 SdfSpecTypeRegistration::RegisterAbstractSpecType< \
96 SchemaType, SpecType>(); \
101 #endif // PXR_USD_SDF_DECLARE_SPEC_H
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE