// Copyright Epic Games, Inc. All Rights Reserved. #include "IAudioParameterInterfaceRegistry.h" namespace Audio { namespace ParameterInterfaceRegistryPrivate { class FParameterInterfaceRegistry : public IAudioParameterInterfaceRegistry { public: virtual void IterateInterfaces(TFunction InFunction) const override { for (const FParameterInterfacePtr& InterfacePtr : Interfaces) { InFunction(InterfacePtr); } } virtual void RegisterInterface(FParameterInterfacePtr InInterface) override { Interfaces.Add(InInterface); if (RegistrationFunction) { RegistrationFunction(InInterface); } } virtual void OnRegistration(TUniqueFunction&& InFunction) override { RegistrationFunction = MoveTemp(InFunction); } }; } // namespace ParameterInterfaceRegistryPrivate TUniquePtr IAudioParameterInterfaceRegistry::Instance; IAudioParameterInterfaceRegistry& IAudioParameterInterfaceRegistry::Get() { using namespace ParameterInterfaceRegistryPrivate; if (!Instance.IsValid()) { Instance = MakeUnique(); } return *Instance; } } // namespace Audio