// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "NNERuntimeRDGUtilsModelOptimizerInterface.h" #include "Templates/SharedPointer.h" namespace UE::NNERuntimeRDGUtils::Private { class FModelValidatorONNX : public Internal::IModelValidator { public: virtual FString GetName() const override; virtual bool ValidateModel(TConstArrayView InputModel) const override; }; class FModelOptimizerBase : public Internal::IModelOptimizer { protected: FModelOptimizerBase() {} TArray> OptimizationPasses; TArray> Validators; bool IsModelValid(TConstArrayView ModelToValidate); bool ApplyAllPassesAndValidations(TArray& OptimizedModel); public: virtual void AddOptimizationPass(TSharedPtr ModelOptimizerPass) override; virtual void AddValidator(TSharedPtr ModelValidator) override; virtual bool Optimize(TConstArrayView InputModel, TArray& OutModel) override; }; } // namespace UE::NNERuntimeRDGUtils::Private