mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 00:02:55 +00:00
Move AbstractScopeSequenceHolder to Parse and make it a template class to be reusable
This commit is contained in:
parent
0aad5a42cb
commit
91cfb2e8dd
@ -1,15 +0,0 @@
|
||||
#include "AbstractScopeSequenceHolder.h"
|
||||
|
||||
using namespace menu;
|
||||
|
||||
AbstractScopeSequenceHolder::AbstractScopeSequenceHolder(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences)
|
||||
: m_all_sequences(allSequences),
|
||||
m_scope_sequences(scopeSequences)
|
||||
{
|
||||
}
|
||||
|
||||
void AbstractScopeSequenceHolder::AddSequence(std::unique_ptr<MenuFileParser::sequence_t> test) const
|
||||
{
|
||||
m_scope_sequences.push_back(test.get());
|
||||
m_all_sequences.emplace_back(std::move(test));
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
#include "Parsing/Menu/MenuFileParser.h"
|
||||
|
||||
namespace menu
|
||||
{
|
||||
class AbstractScopeSequenceHolder
|
||||
{
|
||||
std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& m_all_sequences;
|
||||
std::vector<MenuFileParser::sequence_t*>& m_scope_sequences;
|
||||
|
||||
protected:
|
||||
AbstractScopeSequenceHolder(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequence(std::unique_ptr<MenuFileParser::sequence_t> 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;
|
||||
};
|
||||
}
|
@ -752,7 +752,7 @@ EventHandlerSetScopeSequences::EventHandlerSetScopeSequences(std::vector<std::un
|
||||
{
|
||||
}
|
||||
|
||||
void EventHandlerSetScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive)
|
||||
void EventHandlerSetScopeSequences::AddSequences(const FeatureLevel featureLevel, const bool permissive) const
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceSkipEmptyStatements>());
|
||||
// If else and stuff
|
||||
|
@ -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<MenuFileParser>
|
||||
{
|
||||
public:
|
||||
EventHandlerSetScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) override;
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) const;
|
||||
};
|
||||
}
|
||||
|
@ -72,7 +72,7 @@ FunctionScopeSequences::FunctionScopeSequences(std::vector<std::unique_ptr<MenuF
|
||||
{
|
||||
}
|
||||
|
||||
void FunctionScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive)
|
||||
void FunctionScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive) const
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceCloseBlock>());
|
||||
AddSequence(std::make_unique<GenericStringPropertySequence>("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value)
|
||||
|
@ -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<MenuFileParser>
|
||||
{
|
||||
public:
|
||||
FunctionScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) override;
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) const;
|
||||
};
|
||||
}
|
||||
|
@ -107,7 +107,7 @@ GlobalScopeSequences::GlobalScopeSequences(std::vector<std::unique_ptr<MenuFileP
|
||||
{
|
||||
}
|
||||
|
||||
void GlobalScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive)
|
||||
void GlobalScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive) const
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceCloseBlock>());
|
||||
AddSequence(std::make_unique<SequenceFunctionDef>());
|
||||
|
@ -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<MenuFileParser>
|
||||
{
|
||||
public:
|
||||
GlobalScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) override;
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) const;
|
||||
};
|
||||
}
|
||||
|
@ -555,7 +555,7 @@ ItemScopeSequences::ItemScopeSequences(std::vector<std::unique_ptr<MenuFileParse
|
||||
{
|
||||
}
|
||||
|
||||
void ItemScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive)
|
||||
void ItemScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive) const
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceCloseBlock>());
|
||||
AddSequence(std::make_unique<GenericStringPropertySequence>("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value)
|
||||
|
@ -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<MenuFileParser>
|
||||
{
|
||||
public:
|
||||
ItemScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) override;
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) const;
|
||||
};
|
||||
}
|
||||
|
@ -225,7 +225,7 @@ MenuScopeSequences::MenuScopeSequences(std::vector<std::unique_ptr<MenuFileParse
|
||||
{
|
||||
}
|
||||
|
||||
void MenuScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive)
|
||||
void MenuScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive) const
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceCloseBlock>());
|
||||
AddSequence(std::make_unique<SequenceItemDef>());
|
||||
|
@ -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<MenuFileParser>
|
||||
{
|
||||
public:
|
||||
MenuScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) override;
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) const;
|
||||
};
|
||||
}
|
||||
|
@ -34,7 +34,7 @@ NoScopeSequences::NoScopeSequences(std::vector<std::unique_ptr<MenuFileParser::s
|
||||
{
|
||||
}
|
||||
|
||||
void NoScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive)
|
||||
void NoScopeSequences::AddSequences(FeatureLevel featureLevel, bool permissive) const
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceOpenGlobalScope>());
|
||||
}
|
||||
|
@ -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<MenuFileParser>
|
||||
{
|
||||
public:
|
||||
NoScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) override;
|
||||
void AddSequences(FeatureLevel featureLevel, bool permissive) const;
|
||||
};
|
||||
}
|
||||
|
31
src/Parser/Parsing/Sequence/AbstractScopeSequenceHolder.h
Normal file
31
src/Parser/Parsing/Sequence/AbstractScopeSequenceHolder.h
Normal file
@ -0,0 +1,31 @@
|
||||
#pragma once
|
||||
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
|
||||
template <typename ParserType>
|
||||
class AbstractScopeSequenceHolder
|
||||
{
|
||||
std::vector<std::unique_ptr<typename ParserType::sequence_t>>& m_all_sequences;
|
||||
std::vector<typename ParserType::sequence_t*>& m_scope_sequences;
|
||||
|
||||
protected:
|
||||
AbstractScopeSequenceHolder(std::vector<std::unique_ptr<typename ParserType::sequence_t>>& allSequences, std::vector<typename ParserType::sequence_t*>& scopeSequences)
|
||||
: m_all_sequences(allSequences),
|
||||
m_scope_sequences(scopeSequences)
|
||||
{
|
||||
}
|
||||
|
||||
void AddSequence(std::unique_ptr<typename ParserType::sequence_t> 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;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user