diff options
-rw-r--r-- | Source/cmState.cxx | 23 | ||||
-rw-r--r-- | Source/cmState.h | 5 | ||||
-rwxr-xr-x | bootstrap | 1 |
3 files changed, 29 insertions, 0 deletions
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<std::string> GetCommandNames() const; @@ -278,6 +278,7 @@ CMAKE_CXX_SOURCES="\ cmDefinitions \ cmDepends \ cmDependsC \ + cmDisallowedCommand \ cmDocumentationFormatter \ cmEnableLanguageCommand \ cmEnableTestingCommand \ |