mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-10 14:58:10 -05:00
90 lines
2.4 KiB
C++
90 lines
2.4 KiB
C++
#include "MenuFileParser.h"
|
|
|
|
#include "Sequence/FunctionScopeSequences.h"
|
|
#include "Sequence/GlobalScopeSequences.h"
|
|
#include "Sequence/ItemScopeSequences.h"
|
|
#include "Sequence/MenuScopeSequences.h"
|
|
#include "Sequence/NoScopeSequences.h"
|
|
|
|
using namespace menu;
|
|
|
|
MenuFileParser::MenuFileParser(SimpleLexer* lexer, const FeatureLevel featureLevel)
|
|
: AbstractParser(lexer, std::make_unique<MenuFileParserState>(featureLevel))
|
|
{
|
|
CreateTestCollections();
|
|
}
|
|
|
|
void MenuFileParser::AddSequence(std::vector<sequence_t*>& collection, std::unique_ptr<sequence_t> test)
|
|
{
|
|
collection.push_back(test.get());
|
|
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()
|
|
{
|
|
m_all_tests.clear();
|
|
m_no_scope_tests.clear();
|
|
m_global_scope_tests.clear();
|
|
m_function_scope_tests.clear();
|
|
m_menu_scope_tests.clear();
|
|
m_item_scope_tests.clear();
|
|
|
|
CreateNoScopeTests();
|
|
CreateGlobalScopeTests();
|
|
CreateFunctionScopeTests();
|
|
CreateMenuScopeTests();
|
|
CreateItemScopeTests();
|
|
}
|
|
|
|
const std::vector<MenuFileParser::sequence_t*>& MenuFileParser::GetTestsForState()
|
|
{
|
|
if (m_state->m_current_item)
|
|
return m_item_scope_tests;
|
|
|
|
if (m_state->m_current_function)
|
|
return m_function_scope_tests;
|
|
|
|
if (m_state->m_current_menu)
|
|
return m_menu_scope_tests;
|
|
|
|
if (m_state->m_in_global_scope)
|
|
return m_global_scope_tests;
|
|
|
|
return m_no_scope_tests;
|
|
}
|
|
|
|
MenuFileParserState* MenuFileParser::GetState() const
|
|
{
|
|
return m_state.get();
|
|
}
|