Macroprocessor: drop useless Expression::clone() method

master
Sébastien Villemot 2023-03-16 11:36:41 +01:00
parent 96e7a764b2
commit a219c68543
No known key found for this signature in database
GPG Key ID: 2CECE9350ECEBE4A
2 changed files with 2 additions and 76 deletions

View File

@ -1010,7 +1010,7 @@ Comprehension::eval(Environment &env) const
if (!c_expr)
throw StackTrace("Comprehension", "Internal Error: Impossible case", location);
else
values.emplace_back(c_expr->clone()->eval(env));
values.emplace_back(c_expr->eval(env));
else
{
RealPtr dp;
@ -1030,7 +1030,7 @@ Comprehension::eval(Environment &env) const
}
if ((bp && *bp) || (dp && *dp))
if (c_expr)
values.emplace_back(c_expr->clone()->eval(env));
values.emplace_back(c_expr->eval(env));
else
values.emplace_back(btp);
}
@ -1038,44 +1038,6 @@ Comprehension::eval(Environment &env) const
return make_shared<Array>(values);
}
ExpressionPtr
Tuple::clone() const noexcept
{
vector<ExpressionPtr> tup_copy;
for (const auto &it : tup)
tup_copy.emplace_back(it->clone());
return make_shared<Tuple>(tup_copy, location);
}
ExpressionPtr
Array::clone() const noexcept
{
vector<ExpressionPtr> arr_copy;
for (const auto &it : arr)
arr_copy.emplace_back(it->clone());
return make_shared<Array>(arr_copy, location);
}
ExpressionPtr
Function::clone() const noexcept
{
vector<ExpressionPtr> args_copy;
for (const auto &it : args)
args_copy.emplace_back(it->clone());
return make_shared<Function>(name, args_copy, location);
}
ExpressionPtr
Comprehension::clone() const noexcept
{
if (c_expr && c_when)
return make_shared<Comprehension>(c_expr->clone(), c_vars->clone(), c_set->clone(), c_when->clone(), location);
else if (c_expr)
return make_shared<Comprehension>(c_expr->clone(), c_vars->clone(), c_set->clone(), location);
else
return make_shared<Comprehension>(true, c_vars->clone(), c_set->clone(), c_when->clone(), location);
}
string
Array::to_string() const noexcept
{

View File

@ -121,7 +121,6 @@ namespace macro
virtual string to_string() const noexcept = 0;
virtual void print(ostream &output, bool matlab_output = false) const noexcept = 0;
virtual BaseTypePtr eval(Environment &env) const = 0;
virtual ExpressionPtr clone() const noexcept = 0;
};
@ -213,7 +212,6 @@ namespace macro
codes::BaseType getType() const noexcept override { return codes::BaseType::Bool; }
string to_string() const noexcept override { return value ? "true" : "false"; }
void print(ostream &output, [[maybe_unused]] bool matlab_output = false) const noexcept override { output << to_string(); }
ExpressionPtr clone() const noexcept override { return make_shared<Bool>(value, location); }
public:
operator bool() const { return value; }
BoolPtr is_equal(const BaseTypePtr &btp) const override;
@ -261,7 +259,6 @@ namespace macro
return strs.str();
}
void print(ostream &output, [[maybe_unused]] bool matlab_output = false) const noexcept override { output << to_string(); }
ExpressionPtr clone() const noexcept override { return make_shared<Real>(value, location); }
public:
operator double() const { return value; }
BaseTypePtr plus(const BaseTypePtr &bt) const override;
@ -355,7 +352,6 @@ namespace macro
codes::BaseType getType() const noexcept override { return codes::BaseType::String; }
string to_string() const noexcept override { return value; }
void print(ostream &output, bool matlab_output = false) const noexcept override;
ExpressionPtr clone() const noexcept override { return make_shared<String>(value, location); }
public:
operator string() const { return value; }
BaseTypePtr plus(const BaseTypePtr &bt) const override;
@ -401,7 +397,6 @@ namespace macro
string to_string() const noexcept override;
void print(ostream &output, bool matlab_output = false) const noexcept override;
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr clone() const noexcept override;
public:
size_t size() const { return tup.size(); }
bool empty() const { return tup.empty(); }
@ -432,7 +427,6 @@ namespace macro
string to_string() const noexcept override;
void print(ostream &output, bool matlab_output = false) const noexcept override;
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr clone() const noexcept override;
public:
size_t size() const { return arr.size(); }
const vector<ExpressionPtr> &getValue() const { return arr; }
@ -481,13 +475,6 @@ namespace macro
}
void print(ostream &output, [[maybe_unused]] bool matlab_output = false) const noexcept override { output << to_string(); }
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr
clone() const noexcept override
{
return inc ?
make_shared<Range>(start, inc, end, location)
: make_shared<Range>(start, end, location);
}
public:
BoolPtr
is_equal([[maybe_unused]] const BaseTypePtr &btp) const override
@ -512,12 +499,6 @@ namespace macro
string to_string() const noexcept override { return name; }
void print(ostream &output, [[maybe_unused]] bool matlab_output = false) const noexcept override { output << name; }
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr
clone() const noexcept override
{
return indices ? make_shared<Variable>(name, indices, location) :
make_shared<Variable>(name, location);
}
public:
const string &getName() const noexcept { return name; }
codes::BaseType getType(const Environment &env) const { return env.getType(name); }
@ -541,7 +522,6 @@ namespace macro
printName(output); printArgs(output);
}
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr clone() const noexcept override;
public:
void printName(ostream &output) const noexcept { output << name; }
void printArgs(ostream &output) const noexcept;
@ -563,11 +543,6 @@ namespace macro
string to_string() const noexcept override;
void print(ostream &output, bool matlab_output = false) const noexcept override;
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr
clone() const noexcept override
{
return make_shared<UnaryOp>(op_code, arg->clone(), location);
}
};
@ -586,11 +561,6 @@ namespace macro
string to_string() const noexcept override;
void print(ostream &output, bool matlab_output = false) const noexcept override;
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr
clone() const noexcept override
{
return make_shared<BinaryOp>(op_code, arg1->clone(), arg2->clone(), location);
}
};
@ -608,11 +578,6 @@ namespace macro
string to_string() const noexcept override;
void print(ostream &output, bool matlab_output = false) const noexcept override;
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr
clone() const noexcept override
{
return make_shared<TrinaryOp>(op_code, arg1->clone(), arg2->clone(), arg3->clone(), location);
}
};
@ -650,7 +615,6 @@ namespace macro
string to_string() const noexcept override;
void print(ostream &output, bool matlab_output = false) const noexcept override;
BaseTypePtr eval(Environment &env) const override;
ExpressionPtr clone() const noexcept override;
};
}
#endif