mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 08:05:45 +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>());
|
AddSequence(std::make_unique<SequenceSkipEmptyStatements>());
|
||||||
// If else and stuff
|
// If else and stuff
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "AbstractScopeSequenceHolder.h"
|
#include "Parsing/Menu/MenuFileParser.h"
|
||||||
|
#include "Parsing/Sequence/AbstractScopeSequenceHolder.h"
|
||||||
|
|
||||||
namespace menu
|
namespace menu
|
||||||
{
|
{
|
||||||
class EventHandlerSetScopeSequences final : AbstractScopeSequenceHolder
|
class EventHandlerSetScopeSequences final : AbstractScopeSequenceHolder<MenuFileParser>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
EventHandlerSetScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
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<SequenceCloseBlock>());
|
||||||
AddSequence(std::make_unique<GenericStringPropertySequence>("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value)
|
AddSequence(std::make_unique<GenericStringPropertySequence>("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value)
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "AbstractScopeSequenceHolder.h"
|
#include "Parsing/Menu/MenuFileParser.h"
|
||||||
|
#include "Parsing/Sequence/AbstractScopeSequenceHolder.h"
|
||||||
|
|
||||||
namespace menu
|
namespace menu
|
||||||
{
|
{
|
||||||
class FunctionScopeSequences final : AbstractScopeSequenceHolder
|
class FunctionScopeSequences final : AbstractScopeSequenceHolder<MenuFileParser>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
FunctionScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
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<SequenceCloseBlock>());
|
||||||
AddSequence(std::make_unique<SequenceFunctionDef>());
|
AddSequence(std::make_unique<SequenceFunctionDef>());
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "AbstractScopeSequenceHolder.h"
|
#include "Parsing/Menu/MenuFileParser.h"
|
||||||
|
#include "Parsing/Sequence/AbstractScopeSequenceHolder.h"
|
||||||
|
|
||||||
namespace menu
|
namespace menu
|
||||||
{
|
{
|
||||||
class GlobalScopeSequences final : AbstractScopeSequenceHolder
|
class GlobalScopeSequences final : AbstractScopeSequenceHolder<MenuFileParser>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
GlobalScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
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<SequenceCloseBlock>());
|
||||||
AddSequence(std::make_unique<GenericStringPropertySequence>("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value)
|
AddSequence(std::make_unique<GenericStringPropertySequence>("name", [](const MenuFileParserState* state, const TokenPos&, const std::string& value)
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "AbstractScopeSequenceHolder.h"
|
#include "Parsing/Menu/MenuFileParser.h"
|
||||||
|
#include "Parsing/Sequence/AbstractScopeSequenceHolder.h"
|
||||||
|
|
||||||
namespace menu
|
namespace menu
|
||||||
{
|
{
|
||||||
class ItemScopeSequences final : AbstractScopeSequenceHolder
|
class ItemScopeSequences final : AbstractScopeSequenceHolder<MenuFileParser>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
ItemScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
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<SequenceCloseBlock>());
|
||||||
AddSequence(std::make_unique<SequenceItemDef>());
|
AddSequence(std::make_unique<SequenceItemDef>());
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "AbstractScopeSequenceHolder.h"
|
#include "Parsing/Menu/MenuFileParser.h"
|
||||||
|
#include "Parsing/Sequence/AbstractScopeSequenceHolder.h"
|
||||||
|
|
||||||
namespace menu
|
namespace menu
|
||||||
{
|
{
|
||||||
class MenuScopeSequences final : AbstractScopeSequenceHolder
|
class MenuScopeSequences final : AbstractScopeSequenceHolder<MenuFileParser>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
MenuScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
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>());
|
AddSequence(std::make_unique<SequenceOpenGlobalScope>());
|
||||||
}
|
}
|
||||||
|
@ -1,14 +1,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "AbstractScopeSequenceHolder.h"
|
#include "Parsing/Menu/MenuFileParser.h"
|
||||||
|
#include "Parsing/Sequence/AbstractScopeSequenceHolder.h"
|
||||||
|
|
||||||
namespace menu
|
namespace menu
|
||||||
{
|
{
|
||||||
class NoScopeSequences final : AbstractScopeSequenceHolder
|
class NoScopeSequences final : AbstractScopeSequenceHolder<MenuFileParser>
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NoScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
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