Navigation Menu

Skip to content

Commit

Permalink
#5977: Implement registerDeclType and unregisterDeclType
Browse files Browse the repository at this point in the history
  • Loading branch information
codereader committed Jun 18, 2022
1 parent 0aa291a commit e0a3213
Showing 1 changed file with 17 additions and 1 deletion.
18 changes: 17 additions & 1 deletion radiantcore/decl/DeclarationManager.cpp
@@ -1,5 +1,6 @@
#include "ideclmanager.h"

#include <map>
#include "module/StaticModule.h"

namespace decl
Expand All @@ -8,15 +9,30 @@ namespace decl
class DeclarationManager :
public IDeclarationManager
{
private:
std::map<std::string, IDeclarationParser::Ptr> _parsersByTypename;

public:
void registerDeclType(const std::string& typeName, const IDeclarationParser::Ptr& parser) override
{

if (_parsersByTypename.count(typeName) > 0)
{
throw std::logic_error("Type name " + typeName + " has already been registered");
}

_parsersByTypename.emplace(typeName, parser);
}

void unregisterDeclType(const std::string& typeName) override
{
auto existing = _parsersByTypename.find(typeName);

if (existing == _parsersByTypename.end())
{
throw std::logic_error("Type name " + typeName + " has not been registered");
}

_parsersByTypename.erase(existing);
}

void registerDeclFolder(Type defaultType, const std::string& vfsFolder, const std::string& extension) override
Expand Down

0 comments on commit e0a3213

Please sign in to comment.