cmCommand: implement functions in cxx file

This commit is contained in:
Daniel Pfeifer
2016-10-20 00:29:18 +02:00
parent 8483dab8e1
commit 6c9b3b5c03
4 changed files with 57 additions and 42 deletions

View File

@@ -386,6 +386,8 @@ set(SRCS
cmake.cxx
cmake.h
cmCommand.cxx
cmCommand.h
cmCommands.cxx
cmCommands.h
cmAddCompileOptionsCommand.cxx

48
Source/cmCommand.cxx Normal file
View File

@@ -0,0 +1,48 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmCommand.h"
bool cmCommand::InvokeInitialPass(const std::vector<cmListFileArgument>& args,
cmExecutionStatus& status)
{
std::vector<std::string> expandedArguments;
if (!this->Makefile->ExpandArguments(args, expandedArguments)) {
// There was an error expanding arguments. It was already
// reported, so we can skip this command without error.
return true;
}
return this->InitialPass(expandedArguments, status);
}
const char* cmCommand::GetError()
{
if (this->Error.empty()) {
this->Error = this->GetName();
this->Error += " unknown error.";
}
return this->Error.c_str();
}
void cmCommand::SetError(const std::string& e)
{
this->Error = this->GetName();
this->Error += " ";
this->Error += e;
}
bool cmCommand::Disallowed(cmPolicies::PolicyID pol, const char* e)
{
switch (this->Makefile->GetPolicyStatus(pol)) {
case cmPolicies::WARN:
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING,
cmPolicies::GetPolicyWarning(pol));
case cmPolicies::OLD:
return false;
case cmPolicies::REQUIRED_IF_USED:
case cmPolicies::REQUIRED_ALWAYS:
case cmPolicies::NEW:
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e);
break;
}
return true;
}

View File

@@ -28,9 +28,9 @@ public:
* Construct the command. By default it is enabled with no makefile.
*/
cmCommand()
: Makefile(CM_NULLPTR)
, Enabled(true)
{
this->Makefile = CM_NULLPTR;
this->Enabled = true;
}
/**
@@ -50,16 +50,7 @@ public:
* arguments and then invokes the InitialPass.
*/
virtual bool InvokeInitialPass(const std::vector<cmListFileArgument>& args,
cmExecutionStatus& status)
{
std::vector<std::string> expandedArguments;
if (!this->Makefile->ExpandArguments(args, expandedArguments)) {
// There was an error expanding arguments. It was already
// reported, so we can skip this command without error.
return true;
}
return this->InitialPass(expandedArguments, status);
}
cmExecutionStatus& status);
/**
* This is called when the command is first encountered in
@@ -127,42 +118,15 @@ public:
/**
* Return the last error string.
*/
const char* GetError()
{
if (this->Error.empty()) {
this->Error = this->GetName();
this->Error += " unknown error.";
}
return this->Error.c_str();
}
const char* GetError();
/**
* Set the error message
*/
void SetError(const std::string& e)
{
this->Error = this->GetName();
this->Error += " ";
this->Error += e;
}
void SetError(const std::string& e);
/** Check if the command is disallowed by a policy. */
bool Disallowed(cmPolicies::PolicyID pol, const char* e)
{
switch (this->Makefile->GetPolicyStatus(pol)) {
case cmPolicies::WARN:
this->Makefile->IssueMessage(cmake::AUTHOR_WARNING,
cmPolicies::GetPolicyWarning(pol));
case cmPolicies::OLD:
return false;
case cmPolicies::REQUIRED_IF_USED:
case cmPolicies::REQUIRED_ALWAYS:
case cmPolicies::NEW:
this->Makefile->IssueMessage(cmake::FATAL_ERROR, e);
break;
}
return true;
}
bool Disallowed(cmPolicies::PolicyID pol, const char* e);
protected:
cmMakefile* Makefile;

View File

@@ -254,6 +254,7 @@ CMAKE_CXX_SOURCES="\
cmCMakePolicyCommand \
cmCPackPropertiesGenerator \
cmCacheManager \
cmCommand \
cmCommandArgumentLexer \
cmCommandArgumentParser \
cmCommandArgumentParserHelper \