Skip to content

Commit

Permalink
Refactor modeler code (#2616)
Browse files Browse the repository at this point in the history
  • Loading branch information
pet-mit authored Feb 6, 2025
1 parent a2db7e5 commit 38af6da
Show file tree
Hide file tree
Showing 219 changed files with 1,318 additions and 1,296 deletions.
2 changes: 1 addition & 1 deletion sonar-project.properties
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ sonar.sourceEncoding=UTF-8
sonar.exclusions=src/ext/**,\
src/tests/**,\
src/ui/**,\
src/libs/antares/antlr-interface/**
src/expressions/antlr-interface/**

sonar.coverage.exclusions=src/ext/**,\
src/tests/**,\
Expand Down
9 changes: 6 additions & 3 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -264,15 +264,18 @@ OMESSAGE("") # empty line

# Sub Directories
add_subdirectory(api)
add_subdirectory(io)
add_subdirectory(libs) #antares-core fswalker

if(BUILD_UI)
add_subdirectory(ui) #all antares ui libs + antares simulator
endif()

add_subdirectory(study) #antares study model
add_subdirectory(solver) #antares solver and all associated libs
add_subdirectory(analyzer) #antares analyser
add_subdirectory(expressions) #modeler expressions (AST)
add_subdirectory(optimisation) #optimisation APIs
add_subdirectory(study) #antares study model
add_subdirectory(solver) #antares solver and all associated libs
add_subdirectory(analyzer) #antares analyser

# Tools
if (BUILD_TOOLS)
Expand Down
100 changes: 100 additions & 0 deletions src/expressions/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
project(Expressions)

add_subdirectory(antlr-interface)
set(SRC_Expressions
nodes/PortFieldNode.cpp
nodes/PortFieldSumNode.cpp
nodes/ComponentNode.cpp
nodes/BinaryNode.cpp
nodes/UnaryNode.cpp
nodes/SumNode.cpp

visitors/CloneVisitor.cpp
visitors/CompareVisitor.cpp
visitors/EvalVisitor.cpp
visitors/EvaluationContext.cpp
visitors/LinearityVisitor.cpp
visitors/TimeIndexVisitor.cpp
visitors/PrintVisitor.cpp
visitors/SubstitutionVisitor.cpp
visitors/PortFieldSubstitutionVisitor.cpp
visitors/PortFieldSumSubstitutionVisitor.cpp
visitors/AstDOTStyleVisitor.cpp
visitors/InvalidNode.cpp
visitors/NodeVisitor.cpp

hashable.cpp

NodeRegistry.cpp
include/antares/expressions/NodeRegistry.h
include/antares/expressions/nodes/SumNode.h
include/antares/expressions/nodes/BinaryNode.h
include/antares/expressions/nodes/ComparisonNode.h
include/antares/expressions/nodes/ComponentNode.h
include/antares/expressions/nodes/DivisionNode.h
include/antares/expressions/nodes/EqualNode.h
include/antares/expressions/nodes/ExpressionsNodes.h
include/antares/expressions/nodes/GreaterThanOrEqualNode.h
include/antares/expressions/nodes/Leaf.h
include/antares/expressions/nodes/LessThanOrEqualNode.h
include/antares/expressions/nodes/LiteralNode.h
include/antares/expressions/nodes/MultiplicationNode.h
include/antares/expressions/nodes/NegationNode.h
include/antares/expressions/nodes/Node.h
include/antares/expressions/nodes/NodesForwardDeclaration.h
include/antares/expressions/nodes/ParameterNode.h
include/antares/expressions/nodes/PortFieldNode.h
include/antares/expressions/nodes/PortFieldSumNode.h
include/antares/expressions/nodes/SubtractionNode.h
include/antares/expressions/nodes/UnaryNode.h
include/antares/expressions/nodes/VariableNode.h

include/antares/expressions/visitors/CloneVisitor.h
include/antares/expressions/visitors/CompareVisitor.h
include/antares/expressions/visitors/EvalVisitor.h
include/antares/expressions/visitors/EvaluationContext.h
include/antares/expressions/visitors/LinearStatus.h
include/antares/expressions/visitors/LinearityVisitor.h
include/antares/expressions/visitors/NodeVisitor.h
include/antares/expressions/visitors/PrintVisitor.h
include/antares/expressions/visitors/TimeIndexVisitor.h
include/antares/expressions/visitors/TimeIndex.h
include/antares/expressions/visitors/SubstitutionVisitor.h
include/antares/expressions/visitors/PortFieldSubstitutionVisitor.h
include/antares/expressions/visitors/PortFieldSumSubstitutionVisitor.h
include/antares/expressions/visitors/AstDOTStyleVisitor.h
include/antares/expressions/visitors/InvalidNode.h

include/antares/expressions/Registry.hxx
include/antares/expressions/IName.h
include/antares/expressions/hashable.h
include/antares/expressions/expression.h
)

source_group("expressions" FILES ${SRC_Expressions})
add_library(expressions
${SRC_Expressions})
add_library(Antares::expressions ALIAS expressions)

target_include_directories(expressions
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
)
target_link_libraries(expressions
PUBLIC
Boost::headers
Antares::logs
)


add_library(expressions-iterators
iterators/pre-order.cpp
include/antares/expressions/iterators/pre-order.h
)

target_link_libraries(expressions-iterators PRIVATE expressions)

install(DIRECTORY include/antares
DESTINATION "include"
)

15 changes: 15 additions & 0 deletions src/expressions/NodeRegistry.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include <antares/expressions/NodeRegistry.h>
#include <antares/expressions/nodes/ExpressionsNodes.h>
#include <antares/expressions/visitors/CloneVisitor.h>

namespace Antares::Expressions
{
NodeRegistry::NodeRegistry(
Antares::Expressions::Nodes::Node* node,
Antares::Expressions::Registry<Antares::Expressions::Nodes::Node> registry):
node(node),
registry(std::move(registry))
{
}

} // namespace Antares::Expressions
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

set(PROJ antlr-interface)
set(HEADERS
ExprBaseVisitor.h
Expand All @@ -7,23 +6,23 @@ set(HEADERS
ExprVisitor.h
)

Set(SRCS
ExprBaseVisitor.cpp
ExprLexer.cpp
ExprParser.cpp
ExprVisitor.cpp
Set(SRCS
ExprBaseVisitor.cpp
ExprLexer.cpp
ExprParser.cpp
ExprVisitor.cpp
)

add_library(${PROJ} ${SRCS})
add_library(${PROJ} ${SRCS})
add_library(Antares::${PROJ} ALIAS ${PROJ})

if(MSVC)
if (MSVC)
target_link_libraries(${PROJ} PUBLIC antlr4_shared) # vcpkg triplet x64-windows provides shared lib
else()
else ()
target_link_libraries(${PROJ} PUBLIC antlr4_static) # vcpkg triplet x64-linux provides static lib
endif()
endif ()

target_include_directories(${PROJ}
target_include_directories(${PROJ}
PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}
${ANTLR4_INCLUDE_DIR})
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
*/
#include <boost/functional/hash.hpp>

#include <antares/solver/expressions/hashable.h>
#include <antares/expressions/hashable.h>

namespace Antares::Solver
namespace Antares::Expressions
{

Hashable::Hashable(const std::string& s1, const std::string& s2):
Expand All @@ -46,4 +46,4 @@ std::size_t PortFieldHash::operator()(const Hashable& n) const
return seed;
}

} // namespace Antares::Solver
} // namespace Antares::Expressions
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#pragma once
#include <string>

namespace Antares::Solver
namespace Antares::Expressions
{
class IName
{
Expand All @@ -30,4 +30,4 @@ class IName
virtual std::string name() const = 0;
bool operator==(const IName& other) const = default;
};
} // namespace Antares::Solver
} // namespace Antares::Expressions
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
#pragma once

#include <antares/solver/expressions/Registry.hxx>
#include <antares/solver/expressions/nodes/Node.h>
#include <antares/expressions/Registry.hxx>
#include <antares/expressions/nodes/Node.h>

namespace Antares::Solver
namespace Antares::Expressions
{
class NodeRegistry
{
Expand All @@ -18,4 +18,4 @@ class NodeRegistry
Nodes::Node* node;
Registry<Nodes::Node> registry;
};
} // namespace Antares::Solver
} // namespace Antares::Expressions
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
#include <mutex>
#include <vector>

namespace Antares::Solver
namespace Antares::Expressions
{
// Template class to manage the memory allocation and registry for a base class
template<class Base>
Expand All @@ -51,4 +51,4 @@ private:
std::vector<std::unique_ptr<Base>>
registry_; // Registry to manage dynamically allocated objects
};
} // namespace Antares::Solver
} // namespace Antares::Expressions
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,9 @@

#include <string>

#include <antares/solver/expressions/NodeRegistry.h>
#include <antares/expressions/NodeRegistry.h>

namespace Antares::Solver::Nodes
namespace Antares::Expressions::Nodes
{
class Node;
}
Expand All @@ -38,7 +38,7 @@ class Expression
public:
Expression() = default;

explicit Expression(const std::string& value, Solver::NodeRegistry root):
explicit Expression(const std::string& value, Expressions::NodeRegistry root):
value_(value),
root_(std::move(root)),
empty_(false)
Expand All @@ -50,7 +50,7 @@ class Expression
return value_;
}

Solver::Nodes::Node* RootNode() const
Expressions::Nodes::Node* RootNode() const
{
return root_.node;
}
Expand All @@ -62,7 +62,7 @@ class Expression

private:
std::string value_;
Solver::NodeRegistry root_;
Expressions::NodeRegistry root_;
bool empty_ = true;
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
#pragma once
#include <string>

namespace Antares::Solver
namespace Antares::Expressions
{
class Hashable
{
Expand All @@ -40,4 +40,4 @@ struct PortFieldHash
std::size_t operator()(const Hashable& n) const;
};

} // namespace Antares::Solver
} // namespace Antares::Expressions
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
#include <stack>
#include <vector>

namespace Antares::Solver::Nodes
namespace Antares::Expressions::Nodes
{
// Forward-declaration is enough

Expand Down Expand Up @@ -55,4 +55,4 @@ class AST
// End iterator (indicating traversal is complete)
ASTPreOrderIterator end();
};
} // namespace Antares::Solver::Nodes
} // namespace Antares::Expressions::Nodes
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
*/
#pragma once

#include <antares/solver/expressions/nodes/Node.h>
#include <antares/expressions/nodes/Node.h>

namespace Antares::Solver::Nodes
namespace Antares::Expressions::Nodes
{
class BinaryNode: public Node
{
Expand Down Expand Up @@ -61,4 +61,4 @@ class BinaryNode: public Node
*/
Node* rightOperand_ = nullptr;
};
} // namespace Antares::Solver::Nodes
} // namespace Antares::Expressions::Nodes
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
*/
#pragma once

#include <antares/solver/expressions/nodes/BinaryNode.h>
#include <antares/expressions/nodes/BinaryNode.h>

namespace Antares::Solver::Nodes
namespace Antares::Expressions::Nodes
{
/**
* @brief Represents a comparison node in a syntax tree.
Expand All @@ -32,4 +32,4 @@ class ComparisonNode: public BinaryNode
public:
using BinaryNode::BinaryNode;
};
} // namespace Antares::Solver::Nodes
} // namespace Antares::Expressions::Nodes
Original file line number Diff line number Diff line change
Expand Up @@ -21,9 +21,9 @@
#pragma once
#include <string>

#include <antares/solver/expressions/nodes/Node.h>
#include <antares/expressions/nodes/Node.h>

namespace Antares::Solver::Nodes
namespace Antares::Expressions::Nodes
{
/**
* @brief Represents a component node in a syntax tree.
Expand Down Expand Up @@ -86,4 +86,4 @@ class ComponentParameterNode: public ComponentNode
return "ComponentParameterNode";
}
};
} // namespace Antares::Solver::Nodes
} // namespace Antares::Expressions::Nodes
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@
*/
#pragma once

#include <antares/solver/expressions/nodes/BinaryNode.h>
#include <antares/expressions/nodes/BinaryNode.h>

namespace Antares::Solver::Nodes
namespace Antares::Expressions::Nodes
{
/**
* @brief Represents a division node in a syntax tree.
Expand All @@ -37,4 +37,4 @@ class DivisionNode: public BinaryNode
return "DivisionNode";
}
};
} // namespace Antares::Solver::Nodes
} // namespace Antares::Expressions::Nodes
Loading

0 comments on commit 38af6da

Please sign in to comment.