7 #ifndef PXR_USD_VALIDATION_USD_VALIDATION_REGISTRY_H
8 #define PXR_USD_VALIDATION_USD_VALIDATION_REGISTRY_H
17 #include <shared_mutex>
18 #include <unordered_map>
197 std::vector<UsdValidationFixer> fixers = {});
219 std::vector<UsdValidationFixer> fixers = {});
241 std::vector<UsdValidationFixer> fixers = {});
264 std::vector<UsdValidationFixer> fixers = {});
287 std::vector<UsdValidationFixer> fixers = {});
310 std::vector<UsdValidationFixer> fixers = {});
333 const TfToken &validatorSuiteName,
334 const std::vector<const UsdValidationValidator *> &containedValidators);
358 const std::vector<const UsdValidationValidator *> &containedValidators);
403 std::vector<const UsdValidationValidator *>
418 std::vector<const UsdValidationValidatorSuite *>
441 std::vector<const UsdValidationValidatorSuite *>
540 void _PopulateMetadataFromPlugInfo();
545 template <
typename Val
idateTaskFn>
546 void _RegisterPluginValidator(
const TfToken &validatorName,
547 const ValidateTaskFn &taskFn,
548 std::vector<UsdValidationFixer> fixers);
552 template <
typename Val
idateTaskFn>
554 const ValidateTaskFn &taskFn,
555 std::vector<UsdValidationFixer> fixers,
556 bool addMetadata =
true);
558 void _RegisterValidatorSuite(
560 const std::vector<const UsdValidationValidator *> &containedValidators,
561 bool addMetadata =
true);
571 bool checkForPrimTask,
bool expectSuite =
false);
579 using _ValidatorNameToValidatorMap
580 = std::unordered_map<TfToken, std::unique_ptr<UsdValidationValidator>,
582 using _ValidatorSuiteNameToValidatorSuiteMap
584 std::unique_ptr<UsdValidationValidatorSuite>,
586 using _ValidatorNameToMetadataMap
589 using _TokenToValidatorNamesMap
590 = std::unordered_map<TfToken, TfTokenVector, TfToken::HashFunctor>;
594 const _TokenToValidatorNamesMap &tokenToValidatorNames,
601 _UpdateValidatorNamesMappings(_TokenToValidatorNamesMap &tokenMap,
607 _ValidatorNameToValidatorMap _validators;
610 _ValidatorSuiteNameToValidatorSuiteMap _validatorSuites;
613 _ValidatorNameToMetadataMap _validatorNameToMetadata;
621 _TokenToValidatorNamesMap _keywordToValidatorNames;
626 _TokenToValidatorNamesMap _schemaTypeToValidatorNames;
631 _TokenToValidatorNamesMap _pluginNameToValidatorNames;
634 mutable std::shared_mutex _mutex;
646 #endif // PXR_USD_VALIDATION_USD_VALIDATION_REGISTRY_H
USDVALIDATION_API std::vector< const UsdValidationValidator * > GetOrLoadAllValidators()
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForKeywords(const TfTokenVector &keywords) const
USDVALIDATION_API_TEMPLATE_CLASS(TfSingleton< UsdValidationRegistry >)
std::vector< UsdValidationValidatorMetadata > UsdValidationValidatorMetadataVector
USDVALIDATION_API UsdValidationValidatorMetadataVector GetAllValidatorMetadata() const
USDVALIDATION_API const UsdValidationValidator * GetOrLoadValidatorByName(const TfToken &validatorName)
#define PXR_NAMESPACE_OPEN_SCOPE
static USDVALIDATION_API UsdValidationRegistry & GetInstance()
Functor to use for hash maps from tokens to other things.
USDVALIDATION_API bool HasValidator(const TfToken &validatorName) const
std::function< UsdValidationErrorVector(const UsdStagePtr &, const UsdValidationTimeRange)> UsdValidateStageTaskFn
UsdValidateStageTaskFn: Validation logic operating on a given UsdStage.
#define USDVALIDATION_API
USDVALIDATION_API void RegisterValidator(const UsdValidationValidatorMetadata &metadata, const UsdValidateLayerTaskFn &layerTaskFn, std::vector< UsdValidationFixer > fixers={})
std::function< UsdValidationErrorVector(const SdfLayerHandle &)> UsdValidateLayerTaskFn
UsdValidateLayerTaskFn: Validation logic operating on a given SdfLayerHandle.
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForKeyword(const TfToken &keyword) const
USDVALIDATION_API void RegisterPluginValidatorSuite(const TfToken &validatorSuiteName, const std::vector< const UsdValidationValidator * > &containedValidators)
USDVALIDATION_API bool HasValidatorSuite(const TfToken &suiteName) const
USDVALIDATION_API std::vector< const UsdValidationValidatorSuite * > GetOrLoadAllValidatorSuites()
USDVALIDATION_API void RegisterValidatorSuite(const UsdValidationValidatorMetadata &metadata, const std::vector< const UsdValidationValidator * > &containedValidators)
std::vector< TfToken > TfTokenVector
Convenience types.
GLuint const GLchar * name
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForPlugin(const TfToken &pluginName) const
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForSchemaType(const TfToken &schemaType) const
USDVALIDATION_API bool GetValidatorMetadata(const TfToken &name, UsdValidationValidatorMetadata *metadata) const
USDVALIDATION_API std::vector< const UsdValidationValidatorSuite * > GetOrLoadValidatorSuitesByName(const TfTokenVector &suiteNames)
std::function< UsdValidationErrorVector(const UsdPrim &, const UsdValidationTimeRange)> UsdValidatePrimTaskFn
UsdValidatePrimTaskFn: Validation logic operating on a given UsdPrim.
USDVALIDATION_API void RegisterPluginValidator(const TfToken &validatorName, const UsdValidateLayerTaskFn &layerTaskFn, std::vector< UsdValidationFixer > fixers={})
#define PXR_NAMESPACE_CLOSE_SCOPE
USDVALIDATION_API std::vector< const UsdValidationValidator * > GetOrLoadValidatorsByName(const TfTokenVector &validatorNames)
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForSchemaTypes(const TfTokenVector &schemaTypes) const
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForPlugins(const TfTokenVector &pluginNames) const
static void DeleteInstance()
USDVALIDATION_API const UsdValidationValidatorSuite * GetOrLoadValidatorSuiteByName(const TfToken &suiteName)