diff --git a/src/macro/Expressions.cc b/src/macro/Expressions.cc index 2c9eb762a6123c65979a8a9c465768d76b959a49..c34e850052e170bade9f27f9725488a022288685 100644 --- a/src/macro/Expressions.cc +++ b/src/macro/Expressions.cc @@ -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 { diff --git a/src/macro/Expressions.hh b/src/macro/Expressions.hh index cbd0cf75a5f6df9e0bee4aa97d163fa1947e26e5..52f0903070bdd917fdb1710c21f7196fa24a9c38 100644 --- a/src/macro/Expressions.hh +++ b/src/macro/Expressions.hh @@ -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