1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- // Copyright 2018-2020 marynate. All Rights Reserved.
- #pragma once
- #include "IDocumentation.h"
- #include "DocumentationDefines.h"
- namespace EXT_DOC_NAMESPACE
- {
- class IDocumentationProvider
- {
- public:
- virtual TSharedRef<IDocumentation> GetDocumentation() const = 0;
- };
- struct FDocumentationProvider
- {
- static FDocumentationProvider& Get()
- {
- static FDocumentationProvider Instance;
- return Instance;
- }
- const IDocumentationProvider* GetProvider(const FName& InProviderName)
- {
- if (const IDocumentationProvider** ProviderPtr = DocumentationProviders.Find(InProviderName))
- {
- return *ProviderPtr;
- }
- return NULL;
- }
- void RegisterProvider(const FName& InProviderName, const IDocumentationProvider* InProvider)
- {
- if (!InProvider)
- {
- return;
- }
- if (!DocumentationProviders.Find(InProviderName)) // Add
- {
- DocumentationProviders.Add(InProviderName, InProvider);
- }
- else // Override
- {
- DocumentationProviders[InProviderName] = InProvider;
- }
- }
- private:
- TMap<FName, const IDocumentationProvider*> DocumentationProviders;
- };
- }
|