cmCommand refactor: cmSeparateArgumentsCommand

This commit is contained in:
Gabor Bencze
2019-08-04 19:05:36 +02:00
committed by Brad King
parent d780822da6
commit 2a9299782e
3 changed files with 12 additions and 34 deletions
+1 -2
View File
@@ -153,8 +153,7 @@ void GetScriptingCommands(cmState* state)
state->AddBuiltinCommand("option", cmOptionCommand);
state->AddBuiltinCommand("cmake_parse_arguments", cmParseArgumentsCommand);
state->AddBuiltinCommand("return", cmReturnCommand);
state->AddBuiltinCommand("separate_arguments",
cm::make_unique<cmSeparateArgumentsCommand>());
state->AddBuiltinCommand("separate_arguments", cmSeparateArgumentsCommand);
state->AddBuiltinCommand("set", cm::make_unique<cmSetCommand>());
state->AddBuiltinCommand("set_directory_properties",
cm::make_unique<cmSetDirectoryPropertiesCommand>());
+8 -9
View File
@@ -5,17 +5,16 @@
#include <algorithm>
#include <sstream>
#include "cmExecutionStatus.h"
#include "cmMakefile.h"
#include "cmSystemTools.h"
class cmExecutionStatus;
// cmSeparateArgumentsCommand
bool cmSeparateArgumentsCommand::InitialPass(
std::vector<std::string> const& args, cmExecutionStatus&)
bool cmSeparateArgumentsCommand(std::vector<std::string> const& args,
cmExecutionStatus& status)
{
if (args.empty()) {
this->SetError("must be given at least one argument.");
status.SetError("must be given at least one argument.");
return false;
}
@@ -59,17 +58,17 @@ bool cmSeparateArgumentsCommand::InitialPass(
} else {
std::ostringstream e;
e << "given unknown argument " << arg;
this->SetError(e.str());
status.SetError(e.str());
return false;
}
}
if (mode == ModeOld) {
// Original space-replacement version of command.
if (const char* def = this->Makefile->GetDefinition(var)) {
if (const char* def = status.GetMakefile().GetDefinition(var)) {
std::string value = def;
std::replace(value.begin(), value.end(), ' ', ';');
this->Makefile->AddDefinition(var, value);
status.GetMakefile().AddDefinition(var, value);
}
} else {
// Parse the command line.
@@ -97,7 +96,7 @@ bool cmSeparateArgumentsCommand::InitialPass(
value += si;
}
}
this->Makefile->AddDefinition(var, value);
status.GetMakefile().AddDefinition(var, value);
}
return true;
+3 -23
View File
@@ -8,34 +8,14 @@
#include <string>
#include <vector>
#include "cm_memory.hxx"
#include "cmCommand.h"
class cmExecutionStatus;
/** \class cmSeparateArgumentsCommand
/**
* \brief separate_arguments command
*
* cmSeparateArgumentsCommand implements the separate_arguments CMake command
*/
class cmSeparateArgumentsCommand : public cmCommand
{
public:
/**
* This is a virtual constructor for the command.
*/
std::unique_ptr<cmCommand> Clone() override
{
return cm::make_unique<cmSeparateArgumentsCommand>();
}
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
bool InitialPass(std::vector<std::string> const& args,
cmExecutionStatus& status) override;
};
bool cmSeparateArgumentsCommand(std::vector<std::string> const& args,
cmExecutionStatus& status);
#endif