// Copyright Epic Games, Inc. All Rights Reserved. #include "MetasoundFrontendSearchEngineEditorOnly.h" #include "Containers/Array.h" #include "Interfaces/MetasoundFrontendInterfaceRegistry.h" #include "MetasoundFrontendDocument.h" #include "MetasoundFrontendQuery.h" #include "MetasoundFrontendQuerySteps.h" #include "MetasoundFrontendRegistryTransaction.h" #include "MetasoundFrontendSearchEngineCore.h" #include "MetasoundTrace.h" #if WITH_EDITORONLY_DATA namespace Metasound { namespace Frontend { FFrontendQuery FFindAllClassesQueryPolicy::CreateQuery() { using namespace SearchEngineQuerySteps; FFrontendQuery Query; Query.AddStep() .AddStep() .AddStep() .AddStep() .AddStep() .AddStep(); return Query; } TArray FFindAllClassesQueryPolicy::BuildResult(const FFrontendQueryPartition& InPartition) { using namespace SearchEngineQuerySteps; return BuildArrayOfClassesFromPartition(InPartition); } FFrontendQuery FFindAllClassesIncludingAllVersionsQueryPolicy::CreateQuery() { using namespace SearchEngineQuerySteps; FFrontendQuery Query; Query.AddStep() .AddStep() .AddStep() .AddStep() .AddStep(); return Query; } TArray FFindAllClassesIncludingAllVersionsQueryPolicy::BuildResult(const FFrontendQueryPartition& InPartition) { using namespace SearchEngineQuerySteps; return BuildArrayOfClassesFromPartition(InPartition); } FFrontendQuery FFindClassesWithNameSortedQueryPolicy::CreateQuery() { using namespace SearchEngineQuerySteps; FFrontendQuery Query; Query.AddStep() .AddStep() .AddStep() .AddStep() .AddStep() .AddStep(); return Query; } TArray FFindClassesWithNameSortedQueryPolicy::BuildResult(const FFrontendQueryPartition& InPartition) { using namespace SearchEngineQuerySteps; return BuildArrayOfClassesFromPartition(InPartition); } FFrontendQuery FFindClassesWithNameUnsortedQueryPolicy::CreateQuery() { using namespace SearchEngineQuerySteps; FFrontendQuery Query; Query.AddStep() .AddStep() .AddStep() .AddStep() .AddStep(); return Query; } TArray FFindClassesWithNameUnsortedQueryPolicy::BuildResult(const FFrontendQueryPartition& InPartition) { using namespace SearchEngineQuerySteps; return BuildArrayOfClassesFromPartition(InPartition); } FFrontendQuery FFindClassWithHighestVersionQueryPolicy::CreateQuery() { using namespace SearchEngineQuerySteps; FFrontendQuery Query; Query.AddStep() .AddStep() .AddStep() .AddStep() .AddStep() .AddStep() .AddStep(); return Query; } FMetasoundFrontendClass FFindClassWithHighestVersionQueryPolicy::BuildResult(const FFrontendQueryPartition& InPartition) { using namespace SearchEngineQuerySteps; return BuildSingleClassFromPartition(InPartition); } void FSearchEngineEditorOnly::Prime() { Super::Prime(); { METASOUND_LLM_SCOPE; METASOUND_TRACE_CPUPROFILER_EVENT_SCOPE(metasound::FSearchEngineEditorOnly::Prime); FindAllClassesQuery.Prime(); FindAllClassesIncludingAllVersionsQuery.Prime(); FindClassesWithNameUnsortedQuery.Prime(); FindClassesWithNameSortedQuery.Prime(); FindClassWithHighestVersionQuery.Prime(); FindAllInterfacesIncludingAllVersionsQuery.Prime(); FindAllInterfacesQuery.Prime(); } } TArray FSearchEngineEditorOnly::FindAllClasses(bool bInIncludeAllVersions) { METASOUND_TRACE_CPUPROFILER_EVENT_SCOPE(metasound::FSearchEngineEditorOnly::FindAllClasses); FFrontendQueryKey NullKey; if (bInIncludeAllVersions) { return FindAllClassesIncludingAllVersionsQuery.UpdateAndFindResult(NullKey); } else { return FindAllClassesQuery.UpdateAndFindResult(NullKey); } } TArray FSearchEngineEditorOnly::FindClassesWithName(const FMetasoundFrontendClassName& InName, bool bInSortByVersion) { METASOUND_TRACE_CPUPROFILER_EVENT_SCOPE(metasound::FSearchEngineEditorOnly::FindClassesWithName); const FFrontendQueryKey Key(InName.GetFullName()); if (bInSortByVersion) { return FindClassesWithNameSortedQuery.UpdateAndFindResult(Key); } else { return FindClassesWithNameUnsortedQuery.UpdateAndFindResult(Key); } } bool FSearchEngineEditorOnly::FindClassWithHighestVersion(const FMetasoundFrontendClassName& InName, FMetasoundFrontendClass& OutClass) { METASOUND_TRACE_CPUPROFILER_EVENT_SCOPE(metasound::FSearchEngineEditorOnly::FindClassWithHighestVersion); const FFrontendQueryKey Key{InName.GetFullName()}; return FindClassWithHighestVersionQuery.UpdateAndFindResult(Key, OutClass); } TArray FSearchEngineEditorOnly::FindAllInterfaces(bool bInIncludeAllVersions) { METASOUND_TRACE_CPUPROFILER_EVENT_SCOPE(metasound::FSearchEngineEditorOnly::FindAllInterfaces); const FFrontendQueryKey NullKey; if (bInIncludeAllVersions) { return FindAllInterfacesIncludingAllVersionsQuery.UpdateAndFindResult(NullKey); } else { return FindAllInterfacesQuery.UpdateAndFindResult(NullKey); } } } } #endif