1
0
mirror of https://github.com/Kitware/CMake.git synced 2025-10-14 02:08:27 +08:00

cmCommand: Remove

Finally. All commands are immutable.
This commit is contained in:
Daniel Pfeifer
2024-11-02 16:14:01 +01:00
parent 8768a0c6e1
commit 1b8f9274b2
6 changed files with 0 additions and 169 deletions

View File

@@ -510,8 +510,6 @@ add_library(
cmake.cxx
cmake.h
cmCommand.cxx
cmCommand.h
cmCommands.cxx
cmCommands.h
cmAddCompileDefinitionsCommand.cxx

View File

@@ -1,59 +0,0 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#include "cmCommand.h"
#include <utility>
#include "cmExecutionStatus.h"
#include "cmMakefile.h"
struct cmListFileArgument;
void cmCommand::SetExecutionStatus(cmExecutionStatus* status)
{
this->Status = status;
this->Makefile = &status->GetMakefile();
}
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);
}
void cmCommand::SetError(const std::string& e)
{
this->Status->SetError(e);
}
cmLegacyCommandWrapper::cmLegacyCommandWrapper(std::unique_ptr<cmCommand> cmd)
: Command(std::move(cmd))
{
}
cmLegacyCommandWrapper::cmLegacyCommandWrapper(
cmLegacyCommandWrapper const& other)
: Command(other.Command->Clone())
{
}
cmLegacyCommandWrapper& cmLegacyCommandWrapper::operator=(
cmLegacyCommandWrapper const& other)
{
this->Command = other.Command->Clone();
return *this;
}
bool cmLegacyCommandWrapper::operator()(
std::vector<cmListFileArgument> const& args, cmExecutionStatus& status) const
{
auto cmd = this->Command->Clone();
cmd->SetExecutionStatus(&status);
return cmd->InvokeInitialPass(args, status);
}

View File

@@ -1,97 +0,0 @@
/* Distributed under the OSI-approved BSD 3-Clause License. See accompanying
file Copyright.txt or https://cmake.org/licensing for details. */
#pragma once
#include "cmConfigure.h" // IWYU pragma: keep
#include <memory>
#include <string>
#include <vector>
class cmExecutionStatus;
class cmMakefile;
struct cmListFileArgument;
/** \class cmCommand
* \brief Superclass for all commands in CMake.
*
* cmCommand is the base class for all commands in CMake. A command
* manifests as an entry in CMakeLists.txt and produces one or
* more makefile rules. Commands are associated with a particular
* makefile. This base class cmCommand defines the API for commands
* to support such features as enable/disable, inheritance,
* documentation, and construction.
*/
class cmCommand
{
public:
/**
* Construct the command. By default it has no makefile.
*/
cmCommand() = default;
/**
* Need virtual destructor to destroy real command type.
*/
virtual ~cmCommand() = default;
cmCommand(cmCommand const&) = delete;
cmCommand& operator=(cmCommand const&) = delete;
/**
* Specify the makefile.
*/
cmMakefile* GetMakefile() { return this->Makefile; }
void SetExecutionStatus(cmExecutionStatus* s);
cmExecutionStatus* GetExecutionStatus() { return this->Status; }
/**
* This is called by the cmMakefile when the command is first
* encountered in the CMakeLists.txt file. It expands the command's
* arguments and then invokes the InitialPass.
*/
bool InvokeInitialPass(const std::vector<cmListFileArgument>& args,
cmExecutionStatus& status);
/**
* This is called when the command is first encountered in
* the CMakeLists.txt file.
*/
virtual bool InitialPass(std::vector<std::string> const& args,
cmExecutionStatus&) = 0;
/**
* This is a virtual constructor for the command.
*/
virtual std::unique_ptr<cmCommand> Clone() = 0;
/**
* Set the error message
*/
void SetError(const std::string& e);
protected:
cmMakefile* Makefile = nullptr;
private:
cmExecutionStatus* Status = nullptr;
};
class cmLegacyCommandWrapper
{
public:
explicit cmLegacyCommandWrapper(std::unique_ptr<cmCommand> cmd);
cmLegacyCommandWrapper(cmLegacyCommandWrapper const& other);
cmLegacyCommandWrapper& operator=(cmLegacyCommandWrapper const& other);
cmLegacyCommandWrapper(cmLegacyCommandWrapper&&) = default;
cmLegacyCommandWrapper& operator=(cmLegacyCommandWrapper&&) = default;
bool operator()(std::vector<cmListFileArgument> const& args,
cmExecutionStatus& status) const;
private:
std::unique_ptr<cmCommand> Command;
};

View File

@@ -13,7 +13,6 @@
#include "cmsys/RegularExpression.hxx"
#include "cmCacheManager.h"
#include "cmCommand.h"
#include "cmDefinitions.h"
#include "cmExecutionStatus.h"
#include "cmGlobCacheEntry.h"
@@ -397,12 +396,6 @@ void cmState::SetIsGeneratorMultiConfig(bool b)
this->IsGeneratorMultiConfig = b;
}
void cmState::AddBuiltinCommand(std::string const& name,
std::unique_ptr<cmCommand> command)
{
this->AddBuiltinCommand(name, cmLegacyCommandWrapper(std::move(command)));
}
void cmState::AddBuiltinCommand(std::string const& name, Command command)
{
assert(name == cmSystemTools::LowerCase(name));

View File

@@ -27,7 +27,6 @@
#include "cmValue.h"
class cmCacheManager;
class cmCommand;
class cmGlobVerificationManager;
class cmMakefile;
class cmStateSnapshot;
@@ -177,8 +176,6 @@ public:
// Returns a command from its name, or nullptr
Command GetCommandByExactName(std::string const& name) const;
void AddBuiltinCommand(std::string const& name,
std::unique_ptr<cmCommand> command);
void AddBuiltinCommand(std::string const& name, Command command);
void AddBuiltinCommand(std::string const& name, BuiltinCommand command);
void AddFlowControlCommand(std::string const& name, Command command);

View File

@@ -315,7 +315,6 @@ CMAKE_CXX_SOURCES="\
cmCMakePolicyCommand \
cmCPackPropertiesGenerator \
cmCacheManager \
cmCommand \
cmCommandArgumentParserHelper \
cmCommands \
cmCommonTargetGenerator \