// Copyright Epic Games, Inc. All Rights Reserved. #include "MetasoundDocumentInterface.h" namespace Metasound::Frontend { namespace DocumentBuilderRegistryPrivate { static bool bInitialized = false; TUniqueFunction GetInstance; } // namespace DocumentBuilderRegistryPrivate IDocumentBuilderRegistry* IDocumentBuilderRegistry::Get() { using namespace DocumentBuilderRegistryPrivate; if (!DocumentBuilderRegistryPrivate::bInitialized) { return nullptr; } return &GetInstance(); } IDocumentBuilderRegistry& IDocumentBuilderRegistry::GetChecked() { using namespace DocumentBuilderRegistryPrivate; checkf(GetInstance, TEXT("Failed to return MetaSoundDocumentBuilderRegistry instance: Registry has not been initialized")); return GetInstance(); } void IDocumentBuilderRegistry::Set(TUniqueFunction&& InGetInstance) { using namespace DocumentBuilderRegistryPrivate; checkf(!GetInstance, TEXT("Failed to initialize MetaSoundDocumentBuilderRegistry getter: Cannot reinitialize once initialized.")) GetInstance = MoveTemp(InGetInstance); DocumentBuilderRegistryPrivate::bInitialized = true; } IMetaSoundDocumentBuilderRegistry& IMetaSoundDocumentBuilderRegistry::GetChecked() { return static_cast(IDocumentBuilderRegistry::GetChecked()); } } // namespace Metasound::Frontend