// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "MetasoundFrontendDocument.h" #include "MetasoundFrontendQuery.h" #include "MetasoundFrontendSearchEngine.h" #include "MetasoundFrontendSearchEngineCore.h" #if WITH_EDITORONLY_DATA namespace Metasound { namespace Frontend { // Policy for finding all registered metasound classes. struct FFindAllClassesQueryPolicy { using ResultType = TArray; static FFrontendQuery CreateQuery(); static ResultType BuildResult(const FFrontendQueryPartition& InPartition); }; // Policy for finding all registered metasound classes, including deprecated classes. struct FFindAllClassesIncludingAllVersionsQueryPolicy { using ResultType = TArray; static FFrontendQuery CreateQuery(); static ResultType BuildResult(const FFrontendQueryPartition& InPartition); }; // Policy for finding all registered metasound classes sorted by version // and indexed by name. struct FFindClassesWithNameSortedQueryPolicy { using ResultType = TArray; static FFrontendQuery CreateQuery(); static ResultType BuildResult(const FFrontendQueryPartition& InPartition); }; // Policy for finding all registered metasound classes indexed by name. struct FFindClassesWithNameUnsortedQueryPolicy { using ResultType = TArray; static FFrontendQuery CreateQuery(); static ResultType BuildResult(const FFrontendQueryPartition& InPartition); }; // Policy for finding highest versioned metasound class by name. struct FFindClassWithHighestVersionQueryPolicy { using ResultType = FMetasoundFrontendClass; static FFrontendQuery CreateQuery(); static ResultType BuildResult(const FFrontendQueryPartition& InPartition); }; // To minimize runtime memory costs during gampeplay, some search engine // queries are only exposed when the editor only data is available. This // class supports the editor only functionality of the search engine. class FSearchEngineEditorOnly : public FSearchEngineCore { FSearchEngineEditorOnly(const FSearchEngineEditorOnly&) = delete; FSearchEngineEditorOnly(FSearchEngineEditorOnly&&) = delete; FSearchEngineEditorOnly& operator=(const FSearchEngineEditorOnly&) = delete; FSearchEngineEditorOnly& operator=(FSearchEngineEditorOnly&&) = delete; using Super = FSearchEngineCore; public: FSearchEngineEditorOnly() = default; virtual ~FSearchEngineEditorOnly() = default; virtual void Prime() override; virtual TArray FindAllClasses(bool bInIncludeAllVersions) override; virtual TArray FindClassesWithName(const FMetasoundFrontendClassName& InName, bool bInSortByVersion) override; virtual bool FindClassWithHighestVersion(const FMetasoundFrontendClassName& InName, FMetasoundFrontendClass& OutClass) override; virtual TArray FindAllInterfaces(bool bInIncludeAllVersions) override; private: TSearchEngineQuery FindAllClassesQuery; TSearchEngineQuery FindAllClassesIncludingAllVersionsQuery; TSearchEngineQuery FindClassesWithNameUnsortedQuery; TSearchEngineQuery FindClassesWithNameSortedQuery; TSearchEngineQuery FindClassWithHighestVersionQuery; TSearchEngineQuery FindAllInterfacesQuery; TSearchEngineQuery FindAllInterfacesIncludingAllVersionsQuery; }; } } #endif