From 587084052bbecc812de00e75aac389faef6b7eed Mon Sep 17 00:00:00 2001 From: Daniel Pfeifer Date: Wed, 10 May 2017 21:05:29 +0200 Subject: cmState: introduce methods for adding builtin commands --- Source/cmState.cxx | 23 +++++++++++++++++++++++ Source/cmState.h | 5 +++++ bootstrap | 1 + 3 files changed, 29 insertions(+) diff --git a/Source/cmState.cxx b/Source/cmState.cxx index 43f439c..510501b 100644 --- a/Source/cmState.cxx +++ b/Source/cmState.cxx @@ -12,10 +12,12 @@ #include "cmCacheManager.h" #include "cmCommand.h" #include "cmDefinitions.h" +#include "cmDisallowedCommand.h" #include "cmListFileCache.h" #include "cmStatePrivate.h" #include "cmStateSnapshot.h" #include "cmSystemTools.h" +#include "cmUnexpectedCommand.h" #include "cmake.h" cmState::cmState() @@ -410,6 +412,27 @@ void cmState::AddCommand(cmCommand* command) this->Commands.insert(std::make_pair(name, command)); } +void cmState::AddBuiltinCommand(std::string const& name, cmCommand* command) +{ + assert(name == cmSystemTools::LowerCase(name)); + assert(name == cmSystemTools::LowerCase(command->GetName())); + assert(this->Commands.find(name) == this->Commands.end()); + this->Commands.insert(std::make_pair(name, command)); +} + +void cmState::AddDisallowedCommand(std::string const& name, cmCommand* command, + cmPolicies::PolicyID policy, + const char* message) +{ + this->AddBuiltinCommand(name, + new cmDisallowedCommand(command, policy, message)); +} + +void cmState::AddUnexpectedCommand(std::string const& name, const char* error) +{ + this->AddBuiltinCommand(name, new cmUnexpectedCommand(name, error)); +} + cmCommand* cmState::GetCommand(std::string const& name) const { cmCommand* command = CM_NULLPTR; diff --git a/Source/cmState.h b/Source/cmState.h index 240d75b..603fe5d 100644 --- a/Source/cmState.h +++ b/Source/cmState.h @@ -12,6 +12,7 @@ #include "cmDefinitions.h" #include "cmLinkedTree.h" +#include "cmPolicies.h" #include "cmProperty.h" #include "cmPropertyDefinitionMap.h" #include "cmPropertyMap.h" @@ -121,6 +122,10 @@ public: cmCommand* GetCommand(std::string const& name) const; void AddCommand(cmCommand* command); + void AddBuiltinCommand(std::string const& name, cmCommand* command); + void AddDisallowedCommand(std::string const& name, cmCommand* command, + cmPolicies::PolicyID policy, const char* message); + void AddUnexpectedCommand(std::string const& name, const char* error); void RenameCommand(std::string const& oldName, std::string const& newName); void RemoveUserDefinedCommands(); std::vector GetCommandNames() const; diff --git a/bootstrap b/bootstrap index 515e8be..b4b4c28 100755 --- a/bootstrap +++ b/bootstrap @@ -278,6 +278,7 @@ CMAKE_CXX_SOURCES="\ cmDefinitions \ cmDepends \ cmDependsC \ + cmDisallowedCommand \ cmDocumentationFormatter \ cmEnableLanguageCommand \ cmEnableTestingCommand \ -- cgit v0.12