cmState: introduce methods for adding builtin commands

This commit is contained in:
Daniel Pfeifer 2017-05-10 21:05:29 +02:00
parent a890ca2f8d
commit 587084052b
3 changed files with 29 additions and 0 deletions

View File

@ -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;

View File

@ -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;

View File

@ -278,6 +278,7 @@ CMAKE_CXX_SOURCES="\
cmDefinitions \
cmDepends \
cmDependsC \
cmDisallowedCommand \
cmDocumentationFormatter \
cmEnableLanguageCommand \
cmEnableTestingCommand \