Add base for menu eventhandlerset parsing

This commit is contained in:
Jan
2021-11-06 16:28:24 +01:00
parent b15efd4a4c
commit bf19208351
19 changed files with 334 additions and 46 deletions

View File

@ -1,5 +1,6 @@
#include "MenuFileParser.h"
#include "Sequence/EventHandlerSetScopeSequences.h"
#include "Sequence/FunctionScopeSequences.h"
#include "Sequence/GlobalScopeSequences.h"
#include "Sequence/ItemScopeSequences.h"
@ -11,7 +12,7 @@ using namespace menu;
MenuFileParser::MenuFileParser(SimpleLexer* lexer, const FeatureLevel featureLevel)
: AbstractParser(lexer, std::make_unique<MenuFileParserState>(featureLevel))
{
CreateTestCollections();
CreateSequenceCollections();
}
void MenuFileParser::AddSequence(std::vector<sequence_t*>& collection, std::unique_ptr<sequence_t> test)
@ -20,37 +21,7 @@ void MenuFileParser::AddSequence(std::vector<sequence_t*>& collection, std::uniq
m_all_tests.emplace_back(std::move(test));
}
void MenuFileParser::CreateNoScopeTests()
{
NoScopeSequences noScopeSequences(m_all_tests, m_no_scope_tests);
noScopeSequences.AddSequences(m_state->m_feature_level);
}
void MenuFileParser::CreateGlobalScopeTests()
{
GlobalScopeSequences globalScopeSequences(m_all_tests, m_global_scope_tests);
globalScopeSequences.AddSequences(m_state->m_feature_level);
}
void MenuFileParser::CreateFunctionScopeTests()
{
FunctionScopeSequences functionPropertySequences(m_all_tests, m_function_scope_tests);
functionPropertySequences.AddSequences(m_state->m_feature_level);
}
void MenuFileParser::CreateMenuScopeTests()
{
MenuScopeSequences menuPropertySequences(m_all_tests, m_menu_scope_tests);
menuPropertySequences.AddSequences(m_state->m_feature_level);
}
void MenuFileParser::CreateItemScopeTests()
{
ItemScopeSequences itemPropertySequences(m_all_tests, m_item_scope_tests);
itemPropertySequences.AddSequences(m_state->m_feature_level);
}
void MenuFileParser::CreateTestCollections()
void MenuFileParser::CreateSequenceCollections()
{
m_all_tests.clear();
m_no_scope_tests.clear();
@ -58,16 +29,34 @@ void MenuFileParser::CreateTestCollections()
m_function_scope_tests.clear();
m_menu_scope_tests.clear();
m_item_scope_tests.clear();
m_event_handler_set_scope_tests.clear();
CreateNoScopeTests();
CreateGlobalScopeTests();
CreateFunctionScopeTests();
CreateMenuScopeTests();
CreateItemScopeTests();
const auto featureLevel = m_state->m_feature_level;
NoScopeSequences noScopeSequences(m_all_tests, m_no_scope_tests);
noScopeSequences.AddSequences(featureLevel);
GlobalScopeSequences globalScopeSequences(m_all_tests, m_global_scope_tests);
globalScopeSequences.AddSequences(featureLevel);
MenuScopeSequences menuPropertySequences(m_all_tests, m_menu_scope_tests);
menuPropertySequences.AddSequences(featureLevel);
ItemScopeSequences itemPropertySequences(m_all_tests, m_item_scope_tests);
itemPropertySequences.AddSequences(featureLevel);
FunctionScopeSequences functionPropertySequences(m_all_tests, m_function_scope_tests);
functionPropertySequences.AddSequences(featureLevel);
EventHandlerSetScopeSequences eventHandlerSetScopeSequences(m_all_tests, m_event_handler_set_scope_tests);
eventHandlerSetScopeSequences.AddSequences(featureLevel);
}
const std::vector<MenuFileParser::sequence_t*>& MenuFileParser::GetTestsForState()
{
if (m_state->m_current_event_handler_set)
return m_event_handler_set_scope_tests;
if (m_state->m_current_item)
return m_item_scope_tests;