diff --git a/src/macro/Expressions.cc b/src/macro/Expressions.cc index 9d34f81723850e6679359520f1bf8ed6738cd0bc..2c9eb762a6123c65979a8a9c465768d76b959a49 100644 --- a/src/macro/Expressions.cc +++ b/src/macro/Expressions.cc @@ -1,5 +1,5 @@ /* - * Copyright © 2019-2022 Dynare Team + * Copyright © 2019-2023 Dynare Team * * This file is part of Dynare. * @@ -607,7 +607,7 @@ Tuple::cast_real(Environment &env) const } BaseTypePtr -Range::eval(Environment &env) +Range::eval(Environment &env) const { RealPtr incdbl = make_shared<Real>(1); if (inc) @@ -630,7 +630,7 @@ Range::eval(Environment &env) } BaseTypePtr -Array::eval(Environment &env) +Array::eval(Environment &env) const { vector<ExpressionPtr> retval; for (const auto &it : arr) @@ -639,7 +639,7 @@ Array::eval(Environment &env) } BaseTypePtr -Tuple::eval(Environment &env) +Tuple::eval(Environment &env) const { vector<ExpressionPtr> retval; for (const auto &it : tup) @@ -648,7 +648,7 @@ Tuple::eval(Environment &env) } BaseTypePtr -Variable::eval(Environment &env) +Variable::eval(Environment &env) const { if (indices && !indices->empty()) { @@ -731,7 +731,7 @@ Variable::eval(Environment &env) } BaseTypePtr -Function::eval(Environment &env) +Function::eval(Environment &env) const { FunctionPtr func; ExpressionPtr body; @@ -770,7 +770,7 @@ Function::eval(Environment &env) } BaseTypePtr -UnaryOp::eval(Environment &env) +UnaryOp::eval(Environment &env) const { try { @@ -870,7 +870,7 @@ UnaryOp::eval(Environment &env) } BaseTypePtr -BinaryOp::eval(Environment &env) +BinaryOp::eval(Environment &env) const { try { @@ -930,7 +930,7 @@ BinaryOp::eval(Environment &env) } BaseTypePtr -TrinaryOp::eval(Environment &env) +TrinaryOp::eval(Environment &env) const { try { @@ -956,7 +956,7 @@ TrinaryOp::eval(Environment &env) } BaseTypePtr -Comprehension::eval(Environment &env) +Comprehension::eval(Environment &env) const { ArrayPtr input_set; VariablePtr vp; diff --git a/src/macro/Expressions.hh b/src/macro/Expressions.hh index b66f5038761ffa265c62d3a400f89e96f8622aa0..cbd0cf75a5f6df9e0bee4aa97d163fa1947e26e5 100644 --- a/src/macro/Expressions.hh +++ b/src/macro/Expressions.hh @@ -1,5 +1,5 @@ /* - * Copyright © 2019-2022 Dynare Team + * Copyright © 2019-2023 Dynare Team * * This file is part of Dynare. * @@ -120,7 +120,7 @@ namespace macro Node(move(location_arg)) { } virtual string to_string() const noexcept = 0; virtual void print(ostream &output, bool matlab_output = false) const noexcept = 0; - virtual BaseTypePtr eval(Environment &env) = 0; + virtual BaseTypePtr eval(Environment &env) const = 0; virtual ExpressionPtr clone() const noexcept = 0; }; @@ -131,7 +131,7 @@ namespace macro explicit BaseType(Tokenizer::location location_arg = Tokenizer::location()) : Expression(move(location_arg)) { } virtual codes::BaseType getType() const noexcept = 0; - BaseTypePtr eval([[maybe_unused]] Environment &env) override { return shared_from_this(); } + BaseTypePtr eval([[maybe_unused]] Environment &env) const override { return const_pointer_cast<BaseType>(shared_from_this()); } public: virtual BaseTypePtr plus([[maybe_unused]] const BaseTypePtr &bt) const { throw StackTrace("Operator + does not exist for this type"); } virtual BaseTypePtr unary_plus() const { throw StackTrace("Unary operator + does not exist for this type"); } @@ -400,7 +400,7 @@ namespace macro codes::BaseType getType() const noexcept override { return codes::BaseType::Tuple; } string to_string() const noexcept override; void print(ostream &output, bool matlab_output = false) const noexcept override; - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override; public: size_t size() const { return tup.size(); } @@ -431,7 +431,7 @@ namespace macro codes::BaseType getType() const noexcept override { return codes::BaseType::Array; } string to_string() const noexcept override; void print(ostream &output, bool matlab_output = false) const noexcept override; - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override; public: size_t size() const { return arr.size(); } @@ -480,7 +480,7 @@ namespace macro return retval + end->to_string() + "]"; } void print(ostream &output, [[maybe_unused]] bool matlab_output = false) const noexcept override { output << to_string(); } - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override { @@ -511,7 +511,7 @@ namespace macro Expression(move(location_arg)), name{move(name_arg)}, indices{move(indices_arg)} { } 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) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override { @@ -540,7 +540,7 @@ namespace macro { printName(output); printArgs(output); } - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override; public: void printName(ostream &output) const noexcept { output << name; } @@ -562,7 +562,7 @@ namespace macro Expression(move(location_arg)), op_code{move(op_code_arg)}, arg{move(arg_arg)} { } string to_string() const noexcept override; void print(ostream &output, bool matlab_output = false) const noexcept override; - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override { @@ -585,7 +585,7 @@ namespace macro public: string to_string() const noexcept override; void print(ostream &output, bool matlab_output = false) const noexcept override; - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override { @@ -607,7 +607,7 @@ namespace macro arg1{move(arg1_arg)}, arg2{move(arg2_arg)}, arg3{move(arg3_arg)} { } string to_string() const noexcept override; void print(ostream &output, bool matlab_output = false) const noexcept override; - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override { @@ -649,7 +649,7 @@ namespace macro c_vars{move(c_vars_arg)}, c_set{move(c_set_arg)}, c_when{move(c_when_arg)} { } string to_string() const noexcept override; void print(ostream &output, bool matlab_output = false) const noexcept override; - BaseTypePtr eval(Environment &env) override; + BaseTypePtr eval(Environment &env) const override; ExpressionPtr clone() const noexcept override; }; }