Macroprocessor: make method Expression::eval() const
parent
df7144525d
commit
96e7a764b2
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue