diff --git a/src/language/node_processor/ASTNodeListProcessor.hpp b/src/language/node_processor/ASTNodeListProcessor.hpp index 0eb6590b58d6444c5d013399a64994bc5bb6d99f..b907b6fda5bc28909923581c565ada76abfe4e84 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 6ed12a1d33aaea2d71a8dace679ab8fc5a9cb54e..45e0f7390a020ea5938a685dccc986bb9be6a8cb 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 456a65deb46455c62e1343b5bf95d82bb63df5c5..7bba4111b81ba9e1df7046b96468bceeb6810e31 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 6fa8d683b78072194c15984aa8a480f0775c3376..e4594ad5404331b3f60965ceac6dbad3c0576d1a 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 7046f2342db53823e5edfb1e0caa6487d69a4154..e00bf861fa71ef7279fd64176d4ae00bc0d0a5a3 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 1f0c80bed669c5efd6b72db0d042e4902f663c30..0b0d210d17884972d482d9499d544c3ec673cb16 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 c3185da9dbc00eb62cbe3376f9aa5a27ba0c9c81..a6d64d3d527f12a8c22b005c3e5dde4704c7bc67 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 52961c30675a3f48f4bc63af7368de6501486674..cd94fef46b65bbbbc04ff0f24c8db9e058c82c7f 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 9f1f6c1418a5619ddf320511b14f3a52bc3d6fc8..ac75d68ad6ae0f527c606025018a02f5ccb62530 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 a342a45d68090ce4cbd25c84c8b96ed16a9933b0..990640db1d3d84db55fb97dd752f18021bb3a734 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 36156510540cb86870a9bd98d9727be4774c6774..d0656c487622242f79e24eb4d3fb2147dd56fb05 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 60dabe8da6dfdf3a3ce4979c66f9ee7f44bcc231..4d28cce58af953d89d16ec7fe65871b1eb033044 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 ba2fb460cab857c9b0a23543b0d08908fc851a14..ca3c387c1f8d3050f901a8577148a8729f3be347 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 9da2b5b49325e07ba155cf04c32a873e606f06a2..1238ca2726876f195693afc63a2446af1f5e33a1 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 752b97650a74f40c210ad1e4d9b8e7679495433a..615047e553b9fe105a80c1b84f959aafd4612cb4 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 9fe09241109c6fe603fc76b5e42817db9a41a8d2..8f53bd09ea3c8acf42d7007745011edaf9f6817b 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 ffa877e9ef17d5e733c194bd759f6e874c4b6f56..60e2702f900dfffe84b1bfead3db7afdc4f58096 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) {