Skip to content

Commit

Permalink
Merge remote-tracking branch 'github/feature/expression-visitors' int…
Browse files Browse the repository at this point in the history
…o fix/move-try-out-of-class
  • Loading branch information
flomnes committed Aug 14, 2024
2 parents 070000d + 8e88bad commit 206d27c
Show file tree
Hide file tree
Showing 8 changed files with 29 additions and 29 deletions.
4 changes: 2 additions & 2 deletions src/solver/expressions/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ set(SRC_Expressions
visitors/PrintVisitor.cpp
visitors/CloneVisitor.cpp
visitors/EvalVisitor.cpp
visitors/LinearVisitor.cpp
visitors/LinearityVisitor.cpp
visitors/EvaluationContext.cpp

include/antares/solver/expressions/nodes/ParentNode.h
Expand Down Expand Up @@ -41,7 +41,7 @@ set(SRC_Expressions
include/antares/solver/expressions/visitors/EvaluationContext.h
include/antares/solver/expressions/visitors/PrintVisitor.h
include/antares/solver/expressions/visitors/LinearStatus.h
include/antares/solver/expressions/visitors/LinearVisitor.h
include/antares/solver/expressions/visitors/LinearityVisitor.h

include/antares/solver/expressions/Registry.hxx
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@

namespace Antares::Solver::Nodes
{
class NegationNode: public UnaryNode
class NegationNode final: public UnaryNode
{
public:
using UnaryNode::UnaryNode;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace Antares::Solver::Nodes
{
class ParameterNode: public Leaf<std::string>
class ParameterNode final: public Leaf<std::string>
{
public:
using Leaf<std::string>::Leaf;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

namespace Antares::Solver::Nodes
{
class VariableNode: public Leaf<std::string>
class VariableNode final: public Leaf<std::string>
{
public:
using Leaf<std::string>::Leaf;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ class LinearStatus
}
default:
return LinearStatus::NON_LINEAR;
};
}
}

constexpr LinearStatus operator-(const LinearStatus& other)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ namespace Antares::Solver::Visitors

class LinearStatus;

class LinearVisitor: public Nodes::NodeVisitor<LinearStatus>
class LinearityVisitor: public Nodes::NodeVisitor<LinearStatus>
{
public:
using Base = Nodes::NodeVisitor<LinearStatus>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,80 +19,80 @@
** along with Antares_Simulator. If not, see <https://opensource.org/license/mpl-2-0/>.
*/

#include "antares/solver/expressions/visitors/LinearVisitor.h"
#include "antares/solver/expressions/visitors/LinearityVisitor.h"

#include <antares/solver/expressions/nodes/ExpressionsNodes.h>
#include <antares/solver/expressions/visitors/LinearStatus.h>

namespace Antares::Solver::Visitors
{

LinearStatus LinearVisitor::visit(const Nodes::AddNode& add)
LinearStatus LinearityVisitor::visit(const Nodes::AddNode& add)
{
return dispatch(*add[0]) + dispatch(*add[1]);
}

LinearStatus LinearVisitor::visit(const Nodes::SubtractionNode& sub)
LinearStatus LinearityVisitor::visit(const Nodes::SubtractionNode& sub)
{
return dispatch(*sub[0]) - dispatch(*sub[1]);
}

LinearStatus LinearVisitor::visit(const Nodes::MultiplicationNode& mult)
LinearStatus LinearityVisitor::visit(const Nodes::MultiplicationNode& mult)
{
return dispatch(*mult[0]) * dispatch(*mult[1]);
}

LinearStatus LinearVisitor::visit(const Nodes::DivisionNode& div)
LinearStatus LinearityVisitor::visit(const Nodes::DivisionNode& div)
{
return dispatch(*div[0]) / dispatch(*div[1]);
}

LinearStatus LinearVisitor::visit(const Nodes::EqualNode& equ)
LinearStatus LinearityVisitor::visit(const Nodes::EqualNode& equ)
{
return LinearStatus::NON_LINEAR;
}

LinearStatus LinearVisitor::visit(const Nodes::LessThanOrEqualNode& lt)
LinearStatus LinearityVisitor::visit(const Nodes::LessThanOrEqualNode& lt)
{
return LinearStatus::NON_LINEAR;
}

LinearStatus LinearVisitor::visit(const Nodes::GreaterThanOrEqualNode& gt)
LinearStatus LinearityVisitor::visit(const Nodes::GreaterThanOrEqualNode& gt)
{
return LinearStatus::NON_LINEAR;
}

LinearStatus LinearVisitor::visit(const Nodes::VariableNode& var)
LinearStatus LinearityVisitor::visit(const Nodes::VariableNode& var)
{
return LinearStatus::LINEAR;
}

LinearStatus LinearVisitor::visit(const Nodes::ParameterNode& param)
LinearStatus LinearityVisitor::visit(const Nodes::ParameterNode& param)
{
return LinearStatus::CONSTANT;
}

LinearStatus LinearVisitor::visit(const Nodes::LiteralNode& lit)
LinearStatus LinearityVisitor::visit(const Nodes::LiteralNode& lit)
{
return LinearStatus::CONSTANT;
}

LinearStatus LinearVisitor::visit(const Nodes::NegationNode& neg)
LinearStatus LinearityVisitor::visit(const Nodes::NegationNode& neg)
{
return -dispatch(*neg[0]);
}

LinearStatus LinearVisitor::visit(const Nodes::PortFieldNode& port_field_node)
LinearStatus LinearityVisitor::visit(const Nodes::PortFieldNode& port_field_node)
{
return LinearStatus::CONSTANT;
}

LinearStatus LinearVisitor::visit(const Nodes::ComponentVariableNode& component_variable_node)
LinearStatus LinearityVisitor::visit(const Nodes::ComponentVariableNode& component_variable_node)
{
return LinearStatus::LINEAR;
}

LinearStatus LinearVisitor::visit(const Nodes::ComponentParameterNode& component_parameter_node)
LinearStatus LinearityVisitor::visit(const Nodes::ComponentParameterNode& component_parameter_node)
{
return LinearStatus::CONSTANT;
}
Expand Down
14 changes: 7 additions & 7 deletions src/tests/src/solver/expressions/test_expressions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
#include <antares/solver/expressions/visitors/CloneVisitor.h>
#include <antares/solver/expressions/visitors/EvalVisitor.h>
#include <antares/solver/expressions/visitors/LinearStatus.h>
#include <antares/solver/expressions/visitors/LinearVisitor.h>
#include <antares/solver/expressions/visitors/LinearityVisitor.h>
#include <antares/solver/expressions/visitors/PrintVisitor.h>

using namespace Antares::Solver;
Expand Down Expand Up @@ -290,7 +290,7 @@ BOOST_FIXTURE_TEST_CASE(simple_linear, Registry<Node>)

PrintVisitor printVisitor;
BOOST_CHECK_EQUAL(printVisitor.dispatch(*expr), "((10.000000*x)+(20.000000*id.y))");
LinearVisitor linearVisitor;
LinearityVisitor linearVisitor;
BOOST_CHECK_EQUAL(linearVisitor.dispatch(*expr), LinearStatus::LINEAR);
}

Expand All @@ -303,7 +303,7 @@ BOOST_FIXTURE_TEST_CASE(simple_not_linear, Registry<Node>)

PrintVisitor printVisitor;
BOOST_CHECK_EQUAL(printVisitor.dispatch(*expr), "(x*id.y)");
LinearVisitor linearVisitor;
LinearityVisitor linearVisitor;
BOOST_CHECK_EQUAL(linearVisitor.dispatch(*expr), LinearStatus::NON_LINEAR);
}

Expand All @@ -317,7 +317,7 @@ BOOST_FIXTURE_TEST_CASE(simple_linear_division, Registry<Node>)

PrintVisitor printVisitor;
BOOST_CHECK_EQUAL(printVisitor.dispatch(*expr), "(x/y)");
LinearVisitor linearVisitor;
LinearityVisitor linearVisitor;
BOOST_CHECK_EQUAL(linearVisitor.dispatch(*expr), LinearStatus::LINEAR);
}

Expand All @@ -331,14 +331,14 @@ BOOST_FIXTURE_TEST_CASE(simple_non_linear_division, Registry<Node>)

PrintVisitor printVisitor;
BOOST_CHECK_EQUAL(printVisitor.dispatch(*expr), "(x/y)");
LinearVisitor linearVisitor;
LinearityVisitor linearVisitor;
BOOST_CHECK_EQUAL(linearVisitor.dispatch(*expr), LinearStatus::NON_LINEAR);
}

BOOST_FIXTURE_TEST_CASE(comparison_nodes_are_not_linear, Registry<Node>)
{
PrintVisitor printVisitor;
LinearVisitor linearVisitor;
LinearityVisitor linearVisitor;

VariableNode var1("x");
// variable
Expand All @@ -360,7 +360,7 @@ BOOST_FIXTURE_TEST_CASE(comparison_nodes_are_not_linear, Registry<Node>)
BOOST_FIXTURE_TEST_CASE(simple_constant_expression, Registry<Node>)
{
PrintVisitor printVisitor;
LinearVisitor linearVisitor;
LinearityVisitor linearVisitor;
LiteralNode var1(65.);
// Parameter
ParameterNode par("p1");
Expand Down

0 comments on commit 206d27c

Please sign in to comment.