diff --git a/src/ObjLoading/Parsing/Menu/Sequence/AbstractScopeSequenceHolder.cpp b/src/ObjLoading/Parsing/Menu/Sequence/AbstractScopeSequenceHolder.cpp deleted file mode 100644 index 0edffba5..00000000 --- a/src/ObjLoading/Parsing/Menu/Sequence/AbstractScopeSequenceHolder.cpp +++ /dev/null @@ -1,15 +0,0 @@ -#include "AbstractScopeSequenceHolder.h" - -using namespace menu; - -AbstractScopeSequenceHolder::AbstractScopeSequenceHolder(std::vector>& allSequences, std::vector& scopeSequences) - : m_all_sequences(allSequences), - m_scope_sequences(scopeSequences) -{ -} - -void AbstractScopeSequenceHolder::AddSequence(std::unique_ptr test) const -{ - m_scope_sequences.push_back(test.get()); - m_all_sequences.emplace_back(std::move(test)); -} diff --git a/src/ObjLoading/Parsing/Menu/Sequence/AbstractScopeSequenceHolder.h b/src/ObjLoading/Parsing/Menu/Sequence/AbstractScopeSequenceHolder.h deleted file mode 100644 index 8132b042..00000000 --- a/src/ObjLoading/Parsing/Menu/Sequence/AbstractScopeSequenceHolder.h +++ /dev/null @@ -1,29 +0,0 @@ -#pragma once - -#include -#include - -#include "Parsing/Menu/MenuFileParser.h" - -namespace menu -{ - class AbstractScopeSequenceHolder - { - std::vector>& m_all_sequences; - std::vector& m_scope_sequences; - - protected: - AbstractScopeSequenceHolder(std::vector>& allSequences, std::vector& scopeSequences); - - void AddSequence(std::unique_ptr test) const; - - public: - virtual ~AbstractScopeSequenceHolder() = default; - AbstractScopeSequenceHolder(const AbstractScopeSequenceHolder& other) = delete; - AbstractScopeSequenceHolder(AbstractScopeSequenceHolder&& other) noexcept = default; - AbstractScopeSequenceHolder& operator=(const AbstractScopeSequenceHolder& other) = delete; - AbstractScopeSequenceHolder& operator=(AbstractScopeSequenceHolder&& other) noexcept = delete; - - virtual void AddSequences(FeatureLevel featureLevel, bool permissive) = 0; - }; -} diff --git a/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.cpp index 1efe7cea..0f5c0d05 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.cpp @@ -752,7 +752,7 @@ EventHandlerSetScopeSequences::EventHandlerSetScopeSequences(std::vector()); // If else and stuff diff --git a/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.h b/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.h index 2bd34622..38811726 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.h +++ b/src/ObjLoading/Parsing/Menu/Sequence/EventHandlerSetScopeSequences.h @@ -1,14 +1,15 @@ #pragma once -#include "AbstractScopeSequenceHolder.h" +#include "Parsing/Menu/MenuFileParser.h" +#include "Parsing/Sequence/AbstractScopeSequenceHolder.h" namespace menu { - class EventHandlerSetScopeSequences final : AbstractScopeSequenceHolder + class EventHandlerSetScopeSequences final : AbstractScopeSequenceHolder { public: EventHandlerSetScopeSequences(std::vector>& allSequences, std::vector& scopeSequences); - void AddSequences(FeatureLevel featureLevel, bool permissive) override; + void AddSequences(FeatureLevel featureLevel, bool permissive) const; }; } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.cpp index 36022483..8cf41392 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.cpp @@ -72,7 +72,7 @@ FunctionScopeSequences::FunctionScopeSequences(std::vector()); AddSequence(std::make_unique("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value) diff --git a/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.h b/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.h index 5b35550c..012f2606 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.h +++ b/src/ObjLoading/Parsing/Menu/Sequence/FunctionScopeSequences.h @@ -1,14 +1,15 @@ #pragma once -#include "AbstractScopeSequenceHolder.h" +#include "Parsing/Menu/MenuFileParser.h" +#include "Parsing/Sequence/AbstractScopeSequenceHolder.h" namespace menu { - class FunctionScopeSequences final : AbstractScopeSequenceHolder + class FunctionScopeSequences final : AbstractScopeSequenceHolder { public: FunctionScopeSequences(std::vector>& allSequences, std::vector& scopeSequences); - void AddSequences(FeatureLevel featureLevel, bool permissive) override; + void AddSequences(FeatureLevel featureLevel, bool permissive) const; }; } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp index 7e3ae9da..98954466 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.cpp @@ -107,7 +107,7 @@ GlobalScopeSequences::GlobalScopeSequences(std::vector()); AddSequence(std::make_unique()); diff --git a/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.h b/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.h index d940ff68..e6b5d3fa 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.h +++ b/src/ObjLoading/Parsing/Menu/Sequence/GlobalScopeSequences.h @@ -1,14 +1,15 @@ #pragma once -#include "AbstractScopeSequenceHolder.h" +#include "Parsing/Menu/MenuFileParser.h" +#include "Parsing/Sequence/AbstractScopeSequenceHolder.h" namespace menu { - class GlobalScopeSequences final : AbstractScopeSequenceHolder + class GlobalScopeSequences final : AbstractScopeSequenceHolder { public: GlobalScopeSequences(std::vector>& allSequences, std::vector& scopeSequences); - void AddSequences(FeatureLevel featureLevel, bool permissive) override; + void AddSequences(FeatureLevel featureLevel, bool permissive) const; }; } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp index 693cc025..22a64e3a 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.cpp @@ -555,7 +555,7 @@ ItemScopeSequences::ItemScopeSequences(std::vector()); AddSequence(std::make_unique("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value) diff --git a/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.h b/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.h index c6cbf638..35743593 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.h +++ b/src/ObjLoading/Parsing/Menu/Sequence/ItemScopeSequences.h @@ -1,14 +1,15 @@ #pragma once -#include "AbstractScopeSequenceHolder.h" +#include "Parsing/Menu/MenuFileParser.h" +#include "Parsing/Sequence/AbstractScopeSequenceHolder.h" namespace menu { - class ItemScopeSequences final : AbstractScopeSequenceHolder + class ItemScopeSequences final : AbstractScopeSequenceHolder { public: ItemScopeSequences(std::vector>& allSequences, std::vector& scopeSequences); - void AddSequences(FeatureLevel featureLevel, bool permissive) override; + void AddSequences(FeatureLevel featureLevel, bool permissive) const; }; } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp index 3405d097..9f6a379b 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.cpp @@ -225,7 +225,7 @@ MenuScopeSequences::MenuScopeSequences(std::vector()); AddSequence(std::make_unique()); diff --git a/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.h b/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.h index 18a22423..fcf7596a 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.h +++ b/src/ObjLoading/Parsing/Menu/Sequence/MenuScopeSequences.h @@ -1,14 +1,15 @@ #pragma once -#include "AbstractScopeSequenceHolder.h" +#include "Parsing/Menu/MenuFileParser.h" +#include "Parsing/Sequence/AbstractScopeSequenceHolder.h" namespace menu { - class MenuScopeSequences final : AbstractScopeSequenceHolder + class MenuScopeSequences final : AbstractScopeSequenceHolder { public: MenuScopeSequences(std::vector>& allSequences, std::vector& scopeSequences); - void AddSequences(FeatureLevel featureLevel, bool permissive) override; + void AddSequences(FeatureLevel featureLevel, bool permissive) const; }; } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.cpp b/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.cpp index 3de59d04..7c6135be 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.cpp +++ b/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.cpp @@ -34,7 +34,7 @@ NoScopeSequences::NoScopeSequences(std::vector()); } diff --git a/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.h b/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.h index 8ca90e04..b14a4ca7 100644 --- a/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.h +++ b/src/ObjLoading/Parsing/Menu/Sequence/NoScopeSequences.h @@ -1,14 +1,15 @@ #pragma once -#include "AbstractScopeSequenceHolder.h" +#include "Parsing/Menu/MenuFileParser.h" +#include "Parsing/Sequence/AbstractScopeSequenceHolder.h" namespace menu { - class NoScopeSequences final : AbstractScopeSequenceHolder + class NoScopeSequences final : AbstractScopeSequenceHolder { public: NoScopeSequences(std::vector>& allSequences, std::vector& scopeSequences); - void AddSequences(FeatureLevel featureLevel, bool permissive) override; + void AddSequences(FeatureLevel featureLevel, bool permissive) const; }; } diff --git a/src/Parser/Parsing/Sequence/AbstractScopeSequenceHolder.h b/src/Parser/Parsing/Sequence/AbstractScopeSequenceHolder.h new file mode 100644 index 00000000..24403005 --- /dev/null +++ b/src/Parser/Parsing/Sequence/AbstractScopeSequenceHolder.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include + +template +class AbstractScopeSequenceHolder +{ + std::vector>& m_all_sequences; + std::vector& m_scope_sequences; + +protected: + AbstractScopeSequenceHolder(std::vector>& allSequences, std::vector& scopeSequences) + : m_all_sequences(allSequences), + m_scope_sequences(scopeSequences) + { + } + + void AddSequence(std::unique_ptr test) const + { + m_scope_sequences.push_back(test.get()); + m_all_sequences.emplace_back(std::move(test)); + } + +public: + virtual ~AbstractScopeSequenceHolder() = default; + AbstractScopeSequenceHolder(const AbstractScopeSequenceHolder& other) = delete; + AbstractScopeSequenceHolder(AbstractScopeSequenceHolder&& other) noexcept = default; + AbstractScopeSequenceHolder& operator=(const AbstractScopeSequenceHolder& other) = delete; + AbstractScopeSequenceHolder& operator=(AbstractScopeSequenceHolder&& other) noexcept = delete; +};