// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "MetasoundFrontendArchetypeRegistry.h" #include "MetasoundFrontendController.h" #include "MetasoundFrontendDocument.h" #include "MetasoundFrontendRegistryTransaction.h" #include "UObject/NoExportTypes.h" namespace Metasound { namespace Frontend { using FInterfaceTransactionStream = TTransactionStream; class FInterfaceRegistry : public IInterfaceRegistry { public: static FInterfaceRegistry& Get(); FInterfaceRegistry(); virtual ~FInterfaceRegistry() = default; virtual void RegisterInterface(TUniquePtr&& InEntry) override; virtual const IInterfaceRegistryEntry* FindInterfaceRegistryEntry(const FInterfaceRegistryKey& InKey) const override; virtual bool FindInterface(const FInterfaceRegistryKey& InKey, FMetasoundFrontendInterface& OutInterface) const override; TUniquePtr CreateTransactionStream(); virtual void ForEachRegistryTransactionSince(FRegistryTransactionID InSince, FRegistryTransactionID* OutCurrentRegistryTransactionID, TFunctionRef InFunc) const override; private: using FInterfaceTransactionBuffer = TTransactionBuffer; TMap> Entries; TSharedRef TransactionBuffer; }; } }