7#ifndef PXR_USD_VALIDATION_USD_VALIDATION_REGISTRY_H
8#define PXR_USD_VALIDATION_USD_VALIDATION_REGISTRY_H
12#include "pxr/usdValidation/usdValidation/api.h"
14#include "pxr/usdValidation/usdValidation/fixer.h"
17#include <shared_mutex>
18#include <unordered_map>
22PXR_NAMESPACE_OPEN_SCOPE
204 std::vector<UsdValidationFixer> fixers = {});
230 std::vector<UsdValidationFixer> fixers = {});
256 std::vector<UsdValidationFixer> fixers = {});
293 std::vector<UsdValidationFixer> fixers = {});
322 std::vector<UsdValidationFixer> fixers = {});
351 std::vector<UsdValidationFixer> fixers = {});
378 const TfToken &validatorSuiteName,
379 const std::vector<const UsdValidationValidator *> &containedValidators);
419 const std::vector<const UsdValidationValidator *> &containedValidators);
464 std::vector<const UsdValidationValidator *>
479 std::vector<const UsdValidationValidatorSuite *>
502 std::vector<const UsdValidationValidatorSuite *>
526 UsdValidationValidatorMetadataVector
537 UsdValidationValidatorMetadataVector
548 UsdValidationValidatorMetadataVector
562 UsdValidationValidatorMetadataVector
576 UsdValidationValidatorMetadataVector
590 UsdValidationValidatorMetadataVector
601 void _PopulateMetadataFromPlugInfo();
606 template <
typename Val
idateTaskFn>
607 void _RegisterPluginValidator(
const TfToken &validatorName,
608 const ValidateTaskFn &taskFn,
609 std::vector<UsdValidationFixer> fixers);
613 template <
typename Val
idateTaskFn>
615 const ValidateTaskFn &taskFn,
616 std::vector<UsdValidationFixer> fixers,
617 bool addMetadata =
true);
619 void _RegisterValidatorSuite(
621 const std::vector<const UsdValidationValidator *> &containedValidators,
622 bool addMetadata =
true);
632 bool checkForPrimTask,
bool expectSuite =
false);
640 using _ValidatorNameToValidatorMap
641 = std::unordered_map<TfToken, std::unique_ptr<UsdValidationValidator>,
643 using _ValidatorSuiteNameToValidatorSuiteMap
645 std::unique_ptr<UsdValidationValidatorSuite>,
647 using _ValidatorNameToMetadataMap
650 using _TokenToValidatorNamesMap
651 = std::unordered_map<TfToken, TfTokenVector, TfToken::HashFunctor>;
654 UsdValidationValidatorMetadataVector _GetValidatorMetadataForToken(
655 const _TokenToValidatorNamesMap &tokenToValidatorNames,
662 _UpdateValidatorNamesMappings(_TokenToValidatorNamesMap &tokenMap,
668 _ValidatorNameToValidatorMap _validators;
671 _ValidatorSuiteNameToValidatorSuiteMap _validatorSuites;
674 _ValidatorNameToMetadataMap _validatorNameToMetadata;
682 _TokenToValidatorNamesMap _keywordToValidatorNames;
687 _TokenToValidatorNamesMap _schemaTypeToValidatorNames;
692 _TokenToValidatorNamesMap _pluginNameToValidatorNames;
695 mutable std::shared_mutex _mutex;
705PXR_NAMESPACE_CLOSE_SCOPE
Manage a single instance of an object (see.
static void DeleteInstance()
Destroy the sole instance object of type T, if it exists.
static T & GetInstance()
Return a reference to an object of type T, creating it if necessary.
Token for efficient comparison, assignment, and hashing of known strings.
UsdValidationRegistry manages and provides access to UsdValidationValidator / UsdValidationValidatorS...
USDVALIDATION_API std::vector< const UsdValidationValidatorSuite * > GetOrLoadValidatorSuitesByName(const TfTokenVector &suiteNames)
Returns a vector of const pointer to UsdValidationValidatorSuite corresponding to suiteNames found in...
USDVALIDATION_API void RegisterPluginValidatorSuite(const TfToken &validatorSuiteName, const std::vector< const UsdValidationValidator * > &containedValidators)
Register UsdValidationValidatorSuite defined in a plugin using validatorSuiteName and containedValida...
USDVALIDATION_API bool GetValidatorMetadata(const TfToken &name, UsdValidationValidatorMetadata *metadata) const
Returns true if metadata is found in the _validatorNameToMetadata for a validator/suite name,...
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForSchemaType(const TfToken &schemaType) const
Returns vector of UsdValidationValidatorMetadata associated with the Validators which has the schemaT...
USDVALIDATION_API bool HasValidatorSuite(const TfToken &suiteName) const
Return true if a UsdValidationValidatorSuite is registered with the name validatorSuiteName; false ot...
USDVALIDATION_API std::vector< const UsdValidationValidator * > GetOrLoadValidatorsByName(const TfTokenVector &validatorNames)
Returns a vector of const pointer to UsdValidationValidator corresponding to validatorNames found in ...
USDVALIDATION_API const UsdValidationValidatorSuite * GetOrLoadValidatorSuiteByName(const TfToken &suiteName)
Returns a const pointer to UsdValidationValidatorSuite if suiteName is found in the registry.
USDVALIDATION_API void RegisterValidatorSuite(const UsdValidationValidatorMetadata &metadata, const std::vector< const UsdValidationValidator * > &containedValidators)
Register UsdValidationValidatorSuite using metadata and containedValidators with the UsdValidationReg...
USDVALIDATION_API bool HasValidator(const TfToken &validatorName) const
Return true if a UsdValidationValidator is registered with the name validatorName; false otherwise.
USDVALIDATION_API UsdValidationValidatorMetadataVector GetAllValidatorMetadata() const
Return vector of all UsdValidationValidatorMetadata known to the registry.
USDVALIDATION_API std::vector< const UsdValidationValidator * > GetOrLoadAllValidators()
Returns a vector of const pointer to UsdValidationValidator corresponding to all validators registere...
USDVALIDATION_API void RegisterPluginValidator(const TfToken &validatorName, const UsdValidateStageTaskFn &stageTaskFn, std::vector< UsdValidationFixer > fixers={})
Register UsdValidationValidator defined in a plugin using validatorName and stageTaskFn with the UsdV...
USDVALIDATION_API void RegisterPluginValidator(const TfToken &validatorName, const UsdValidateLayerTaskFn &layerTaskFn, std::vector< UsdValidationFixer > fixers={})
Register UsdValidationValidator defined in a plugin using validatorName and layerTaskFn with the UsdV...
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForSchemaTypes(const TfTokenVector &schemaTypes) const
Returns vector of UsdValidationValidatorMetadata associated with the Validators which has at least on...
USDVALIDATION_API void RegisterValidator(const UsdValidationValidatorMetadata &metadata, const UsdValidateLayerTaskFn &layerTaskFn, std::vector< UsdValidationFixer > fixers={})
Register UsdValidationValidator using metadata and layerTaskFn with the UsdValidationRegistry.
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForPlugin(const TfToken &pluginName) const
Returns vector of UsdValidationValidatorMetadata associated with the Validators which belong to the p...
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForKeyword(const TfToken &keyword) const
Returns vector of UsdValidationValidatorMetadata associated with the Validators which has the keyword...
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForPlugins(const TfTokenVector &pluginNames) const
Returns vector of UsdValidationValidatorMetadata associated with the Validators which belong to the p...
USDVALIDATION_API void RegisterPluginValidator(const TfToken &validatorName, const UsdValidatePrimTaskFn &primTaskFn, std::vector< UsdValidationFixer > fixers={})
Register UsdValidationValidator defined in a plugin using validatorName and primTaskFn with the UsdVa...
USDVALIDATION_API UsdValidationValidatorMetadataVector GetValidatorMetadataForKeywords(const TfTokenVector &keywords) const
Returns vector of UsdValidationValidatorMetadata associated with the Validators which has at least on...
USDVALIDATION_API const UsdValidationValidator * GetOrLoadValidatorByName(const TfToken &validatorName)
Returns a const pointer to UsdValidationValidator if validatorName is found in the registry.
USDVALIDATION_API void RegisterValidator(const UsdValidationValidatorMetadata &metadata, const UsdValidatePrimTaskFn &primTaskFn, std::vector< UsdValidationFixer > fixers={})
Register UsdValidationValidator using metadata and primTaskFn with the UsdValidationRegistry.
USDVALIDATION_API void RegisterValidator(const UsdValidationValidatorMetadata &metadata, const UsdValidateStageTaskFn &stageTaskFn, std::vector< UsdValidationFixer > fixers={})
Register UsdValidationValidator using metadata and stageTaskFn with the UsdValidationRegistry.
USDVALIDATION_API std::vector< const UsdValidationValidatorSuite * > GetOrLoadAllValidatorSuites()
Returns a vector of const pointer to UsdValidationValidatorSuite corresponding to all validator suite...
UsdValidationValidator is a class describing a single test.
UsdValidationValidatorSuite acts like a suite for a collection of tests, which clients can use to bun...
std::function< UsdValidationErrorVector( const UsdPrim &, const UsdValidationTimeRange)> UsdValidatePrimTaskFn
UsdValidatePrimTaskFn: Validation logic operating on a given UsdPrim.
std::function< UsdValidationErrorVector( const SdfLayerHandle &)> UsdValidateLayerTaskFn
UsdValidateLayerTaskFn: Validation logic operating on a given SdfLayerHandle.
std::function< UsdValidationErrorVector( const UsdStagePtr &, const UsdValidationTimeRange)> UsdValidateStageTaskFn
UsdValidateStageTaskFn: Validation logic operating on a given UsdStage.
Manage a single instance of an object.
Functor to use for hash maps from tokens to other things.
std::vector< TfToken > TfTokenVector
Convenience types.