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