From 488209106a985886aed29924930e3958bb4d2bb0 Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Mon, 2 Sep 2019 22:13:15 +0200 Subject: [PATCH] Make INodeProcessor::describe() function no more virtual this simplifies the code --- .../node_processor/ASTNodeListProcessor.hpp | 9 +-------- .../node_processor/AffectationProcessor.hpp | 10 +--------- .../node_processor/AffectationToStringProcessor.hpp | 10 +--------- .../node_processor/BinaryExpressionProcessor.hpp | 12 +----------- src/language/node_processor/BreakProcessor.hpp | 8 -------- .../node_processor/ConcatExpressionProcessor.hpp | 13 ++----------- src/language/node_processor/ContinueProcessor.hpp | 8 -------- src/language/node_processor/DoWhileProcessor.hpp | 9 +-------- src/language/node_processor/FakeProcessor.hpp | 10 ---------- src/language/node_processor/ForProcessor.hpp | 9 +-------- src/language/node_processor/INodeProcessor.hpp | 8 +++++++- src/language/node_processor/IfProcessor.hpp | 9 +-------- .../node_processor/IncDecExpressionProcessor.hpp | 9 +-------- src/language/node_processor/NameProcessor.hpp | 9 +-------- src/language/node_processor/OStreamProcessor.hpp | 9 +-------- .../node_processor/UnaryExpressionProcessor.hpp | 9 +-------- src/language/node_processor/WhileProcessor.hpp | 9 +-------- 17 files changed, 21 insertions(+), 139 deletions(-) diff --git a/src/language/node_processor/ASTNodeListProcessor.hpp b/src/language/node_processor/ASTNodeListProcessor.hpp index 0eb6590b5..b907b6fda 100644 --- a/src/language/node_processor/ASTNodeListProcessor.hpp +++ b/src/language/node_processor/ASTNodeListProcessor.hpp @@ -3,19 +3,12 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class ASTNodeListProcessor final : public INodeProcessor { + private: ASTNode& m_node; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/AffectationProcessor.hpp b/src/language/node_processor/AffectationProcessor.hpp index 6ed12a1d3..45e0f7390 100644 --- a/src/language/node_processor/AffectationProcessor.hpp +++ b/src/language/node_processor/AffectationProcessor.hpp @@ -5,8 +5,6 @@ #include <SymbolTable.hpp> -#include <Demangle.hpp> - template <typename Op> struct AffOp; @@ -82,12 +80,6 @@ class AffectationProcessor final : public INodeProcessor }()}; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { @@ -119,4 +111,4 @@ class AffectationProcessor final : public INodeProcessor } }; -#endif // AFFECTATION_PROCESSOR_HPP +#endif // AFFECTATION_PROCESSOR_HPP diff --git a/src/language/node_processor/AffectationToStringProcessor.hpp b/src/language/node_processor/AffectationToStringProcessor.hpp index 456a65deb..7bba4111b 100644 --- a/src/language/node_processor/AffectationToStringProcessor.hpp +++ b/src/language/node_processor/AffectationToStringProcessor.hpp @@ -5,8 +5,6 @@ #include <SymbolTable.hpp> -#include <Demangle.hpp> - template <typename OperatorT, typename DataT> class AffectationToStringProcessor final : public INodeProcessor { @@ -15,12 +13,6 @@ class AffectationToStringProcessor final : public INodeProcessor ASTNodeDataVariant* p_value{nullptr}; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { @@ -50,4 +42,4 @@ class AffectationToStringProcessor final : public INodeProcessor } }; -#endif // AFFECTATION_TO_STRING_PROCESSOR_HPP +#endif // AFFECTATION_TO_STRING_PROCESSOR_HPP diff --git a/src/language/node_processor/BinaryExpressionProcessor.hpp b/src/language/node_processor/BinaryExpressionProcessor.hpp index 6fa8d683b..e4594ad54 100644 --- a/src/language/node_processor/BinaryExpressionProcessor.hpp +++ b/src/language/node_processor/BinaryExpressionProcessor.hpp @@ -3,10 +3,6 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - -#include <type_traits> - template <typename Op> struct BinOp; @@ -197,12 +193,6 @@ class BinaryExpressionProcessor final : public INodeProcessor }()}; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { @@ -222,4 +212,4 @@ class BinaryExpressionProcessor final : public INodeProcessor } }; -#endif // BINARY_EXPRESSION_PROCESSOR_HPP +#endif // BINARY_EXPRESSION_PROCESSOR_HPP diff --git a/src/language/node_processor/BreakProcessor.hpp b/src/language/node_processor/BreakProcessor.hpp index 7046f2342..e00bf861f 100644 --- a/src/language/node_processor/BreakProcessor.hpp +++ b/src/language/node_processor/BreakProcessor.hpp @@ -3,17 +3,9 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class BreakProcessor final : public INodeProcessor { public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/ConcatExpressionProcessor.hpp b/src/language/node_processor/ConcatExpressionProcessor.hpp index 1f0c80bed..0b0d210d1 100644 --- a/src/language/node_processor/ConcatExpressionProcessor.hpp +++ b/src/language/node_processor/ConcatExpressionProcessor.hpp @@ -3,13 +3,10 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - -#include <type_traits> - template <typename B_DataT> class ConcatExpressionProcessor final : public INodeProcessor { + private: ASTNode& m_node; PUGS_INLINE auto @@ -23,12 +20,6 @@ class ConcatExpressionProcessor final : public INodeProcessor } public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { @@ -41,4 +32,4 @@ class ConcatExpressionProcessor final : public INodeProcessor ConcatExpressionProcessor(ASTNode& node) : m_node{node} {} }; -#endif // CONCAT_EXPRESSION_PROCESSOR_HPP +#endif // CONCAT_EXPRESSION_PROCESSOR_HPP diff --git a/src/language/node_processor/ContinueProcessor.hpp b/src/language/node_processor/ContinueProcessor.hpp index c3185da9d..a6d64d3d5 100644 --- a/src/language/node_processor/ContinueProcessor.hpp +++ b/src/language/node_processor/ContinueProcessor.hpp @@ -3,17 +3,9 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class ContinueProcessor final : public INodeProcessor { public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/DoWhileProcessor.hpp b/src/language/node_processor/DoWhileProcessor.hpp index 52961c306..cd94fef46 100644 --- a/src/language/node_processor/DoWhileProcessor.hpp +++ b/src/language/node_processor/DoWhileProcessor.hpp @@ -3,19 +3,12 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class DoWhileProcessor final : public INodeProcessor { + private: ASTNode& m_node; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/FakeProcessor.hpp b/src/language/node_processor/FakeProcessor.hpp index 9f1f6c141..ac75d68ad 100644 --- a/src/language/node_processor/FakeProcessor.hpp +++ b/src/language/node_processor/FakeProcessor.hpp @@ -3,19 +3,9 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> -#include <PugsMacros.hpp> - class FakeProcessor final : public INodeProcessor { public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - - PUGS_INLINE void execute(ExecUntilBreakOrContinue&) { diff --git a/src/language/node_processor/ForProcessor.hpp b/src/language/node_processor/ForProcessor.hpp index a342a45d6..990640db1 100644 --- a/src/language/node_processor/ForProcessor.hpp +++ b/src/language/node_processor/ForProcessor.hpp @@ -3,19 +3,12 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class ForProcessor final : public INodeProcessor { + private: ASTNode& m_node; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/INodeProcessor.hpp b/src/language/node_processor/INodeProcessor.hpp index 361565105..d0656c487 100644 --- a/src/language/node_processor/INodeProcessor.hpp +++ b/src/language/node_processor/INodeProcessor.hpp @@ -1,15 +1,21 @@ #ifndef I_NODE_PROCESSOR_HPP #define I_NODE_PROCESSOR_HPP +#include <Demangle.hpp> #include <node_processor/ExecUntilBreakOrContinue.hpp> #include <string> +#include <typeinfo> struct INodeProcessor { virtual void execute(ExecUntilBreakOrContinue& exec_policy) = 0; - virtual std::string describe() const = 0; + std::string + describe() const + { + return demangle(typeid(*this).name()); + } INodeProcessor(const INodeProcessor&) = delete; diff --git a/src/language/node_processor/IfProcessor.hpp b/src/language/node_processor/IfProcessor.hpp index 60dabe8da..4d28cce58 100644 --- a/src/language/node_processor/IfProcessor.hpp +++ b/src/language/node_processor/IfProcessor.hpp @@ -3,19 +3,12 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class IfProcessor final : public INodeProcessor { + private: ASTNode& m_node; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/IncDecExpressionProcessor.hpp b/src/language/node_processor/IncDecExpressionProcessor.hpp index ba2fb460c..ca3c387c1 100644 --- a/src/language/node_processor/IncDecExpressionProcessor.hpp +++ b/src/language/node_processor/IncDecExpressionProcessor.hpp @@ -5,8 +5,6 @@ #include <SymbolTable.hpp> -#include <Demangle.hpp> - template <typename Op> struct IncDecOp; @@ -57,16 +55,11 @@ struct IncDecOp<language::post_plusplus> template <typename IncDecOpT, typename DataT> class IncDecExpressionProcessor final : public INodeProcessor { + private: ASTNode& m_node; ASTNodeDataVariant* p_value{nullptr}; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue&) { diff --git a/src/language/node_processor/NameProcessor.hpp b/src/language/node_processor/NameProcessor.hpp index 9da2b5b49..1238ca272 100644 --- a/src/language/node_processor/NameProcessor.hpp +++ b/src/language/node_processor/NameProcessor.hpp @@ -3,22 +3,15 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - #include <SymbolTable.hpp> class NameProcessor final : public INodeProcessor { + private: ASTNode& m_node; ASTNodeDataVariant* p_value{nullptr}; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue&) { diff --git a/src/language/node_processor/OStreamProcessor.hpp b/src/language/node_processor/OStreamProcessor.hpp index 752b97650..615047e55 100644 --- a/src/language/node_processor/OStreamProcessor.hpp +++ b/src/language/node_processor/OStreamProcessor.hpp @@ -3,20 +3,13 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class OStreamProcessor final : public INodeProcessor { + private: ASTNode& m_node; std::ostream& m_os; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/UnaryExpressionProcessor.hpp b/src/language/node_processor/UnaryExpressionProcessor.hpp index 9fe092411..8f53bd09e 100644 --- a/src/language/node_processor/UnaryExpressionProcessor.hpp +++ b/src/language/node_processor/UnaryExpressionProcessor.hpp @@ -5,8 +5,6 @@ #include <SymbolTable.hpp> -#include <Demangle.hpp> - template <typename Op> struct UnaryOp; @@ -35,6 +33,7 @@ struct UnaryOp<language::unary_not> template <typename UnaryOpT, typename ValueT, typename DataT> class UnaryExpressionProcessor final : public INodeProcessor { + private: ASTNode& m_node; PUGS_INLINE ValueT @@ -44,12 +43,6 @@ class UnaryExpressionProcessor final : public INodeProcessor } public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { diff --git a/src/language/node_processor/WhileProcessor.hpp b/src/language/node_processor/WhileProcessor.hpp index ffa877e9e..60e2702f9 100644 --- a/src/language/node_processor/WhileProcessor.hpp +++ b/src/language/node_processor/WhileProcessor.hpp @@ -3,19 +3,12 @@ #include <node_processor/INodeProcessor.hpp> -#include <Demangle.hpp> - class WhileProcessor final : public INodeProcessor { + private: ASTNode& m_node; public: - std::string - describe() const - { - return demangle<decltype(*this)>(); - } - void execute(ExecUntilBreakOrContinue& exec_policy) { -- GitLab