From face0f7f3cb12b513431c4f1c6f53734fcafb4af Mon Sep 17 00:00:00 2001 From: WarmUpTill Date: Sun, 21 Aug 2022 03:41:11 +0200 Subject: [PATCH] Add MultiMacroRefCondtition --- src/macro-core/macro-condition.cpp | 7 +++++++ src/macro-core/macro-condition.hpp | 7 +++++++ src/macro-core/macro.cpp | 5 +++++ 3 files changed, 19 insertions(+) diff --git a/src/macro-core/macro-condition.cpp b/src/macro-core/macro-condition.cpp index 600b167b..babdadb4 100644 --- a/src/macro-core/macro-condition.cpp +++ b/src/macro-core/macro-condition.cpp @@ -153,3 +153,10 @@ void MacroRefCondition::ResolveMacroRef() { _macro.UpdateRef(); } + +void MultiMacroRefCondtition::ResolveMacroRef() +{ + for (auto &m : _macros) { + m.UpdateRef(); + } +} diff --git a/src/macro-core/macro-condition.hpp b/src/macro-core/macro-condition.hpp index 3265b534..fd872bdd 100644 --- a/src/macro-core/macro-condition.hpp +++ b/src/macro-core/macro-condition.hpp @@ -86,3 +86,10 @@ public: void ResolveMacroRef(); MacroRef _macro; }; + +class MultiMacroRefCondtition : public MacroCondition { +public: + MultiMacroRefCondtition(Macro *m) : MacroCondition(m) {} + void ResolveMacroRef(); + std::vector _macros; +}; diff --git a/src/macro-core/macro.cpp b/src/macro-core/macro.cpp index 5ec928ad..efe564fb 100644 --- a/src/macro-core/macro.cpp +++ b/src/macro-core/macro.cpp @@ -409,6 +409,11 @@ void Macro::ResolveMacroRef() if (ref) { ref->ResolveMacroRef(); } + MultiMacroRefCondtition *ref2 = + dynamic_cast(c.get()); + if (ref2) { + ref2->ResolveMacroRef(); + } } for (auto &a : _actions) { MacroRefAction *ref = dynamic_cast(a.get());