Macroprocessor: make method Expression::eval() const

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

View File

@ -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;

View File

@ -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;
};
}