mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-18 18:57:57 -05:00
Add base for menu eventhandlerset parsing
This commit is contained in:
@ -0,0 +1,43 @@
|
||||
#include "EventHandlerSetScopeSequences.h"
|
||||
|
||||
#include <sstream>
|
||||
|
||||
#include "Generic/GenericStringPropertySequence.h"
|
||||
#include "Parsing/Menu/Matcher/MenuMatcherFactory.h"
|
||||
|
||||
using namespace menu;
|
||||
|
||||
namespace menu::event_handler_set_scope_sequences
|
||||
{
|
||||
class SequenceCloseBlock final : public MenuFileParser::sequence_t
|
||||
{
|
||||
static constexpr auto CAPTURE_TOKEN = 1;
|
||||
|
||||
public:
|
||||
SequenceCloseBlock()
|
||||
{
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.Char('}')
|
||||
});
|
||||
}
|
||||
|
||||
protected:
|
||||
void ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const override
|
||||
{
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
using namespace event_handler_set_scope_sequences;
|
||||
|
||||
EventHandlerSetScopeSequences::EventHandlerSetScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences)
|
||||
: AbstractScopeSequenceHolder(allSequences, scopeSequences)
|
||||
{
|
||||
}
|
||||
|
||||
void EventHandlerSetScopeSequences::AddSequences(FeatureLevel featureLevel)
|
||||
{
|
||||
AddSequence(std::make_unique<SequenceCloseBlock>());
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
#pragma once
|
||||
|
||||
#include "AbstractScopeSequenceHolder.h"
|
||||
|
||||
namespace menu
|
||||
{
|
||||
class EventHandlerSetScopeSequences final : AbstractScopeSequenceHolder
|
||||
{
|
||||
public:
|
||||
EventHandlerSetScopeSequences(std::vector<std::unique_ptr<MenuFileParser::sequence_t>>& allSequences, std::vector<MenuFileParser::sequence_t*>& scopeSequences);
|
||||
|
||||
void AddSequences(FeatureLevel featureLevel) override;
|
||||
};
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
#include "GenericMenuEventHandlerSetPropertySequence.h"
|
||||
|
||||
#include <utility>
|
||||
|
||||
#include "Parsing/Menu/Matcher/MenuMatcherFactory.h"
|
||||
|
||||
using namespace menu;
|
||||
|
||||
GenericMenuEventHandlerSetPropertySequence::GenericMenuEventHandlerSetPropertySequence(std::string keywordName, callback_t setCallback)
|
||||
: m_set_callback(std::move(setCallback))
|
||||
{
|
||||
const MenuMatcherFactory create(this);
|
||||
|
||||
AddMatchers({
|
||||
create.KeywordIgnoreCase(std::move(keywordName)),
|
||||
create.Char('{')
|
||||
});
|
||||
}
|
||||
|
||||
void GenericMenuEventHandlerSetPropertySequence::ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const
|
||||
{
|
||||
state->m_current_event_handler_set = std::make_unique<CommonEventHandlerSet>();
|
||||
state->m_event_handler_set_callback = m_set_callback;
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <functional>
|
||||
|
||||
#include "Parsing/Menu/MenuFileParser.h"
|
||||
#include "Parsing/Menu/Domain/EventHandler/CommonEventHandlerSet.h"
|
||||
|
||||
namespace menu
|
||||
{
|
||||
class GenericMenuEventHandlerSetPropertySequence final : public MenuFileParser::sequence_t
|
||||
{
|
||||
public:
|
||||
using callback_t = std::function<void(MenuFileParserState* state, std::unique_ptr<CommonEventHandlerSet> value)>;
|
||||
|
||||
private:
|
||||
static constexpr auto CAPTURE_VALUE = 1;
|
||||
|
||||
const callback_t m_set_callback;
|
||||
|
||||
protected:
|
||||
void ProcessMatch(MenuFileParserState* state, SequenceResult<SimpleParserValue>& result) const override;
|
||||
|
||||
public:
|
||||
GenericMenuEventHandlerSetPropertySequence(std::string keywordName, callback_t setCallback);
|
||||
};
|
||||
}
|
Reference in New Issue
Block a user