#pragma once #include "MenuAssetZoneState.h" #include "Utils/ClassUtils.h" #include "MenuFileParserState.h" #include "Parsing/Simple/SimpleLexer.h" #include "Parsing/Simple/SimpleParserValue.h" #include "Parsing/Impl/AbstractParser.h" namespace menu { class MenuFileParser final : public AbstractParser { std::vector> m_all_tests; std::vector m_no_scope_tests; std::vector m_global_scope_tests; std::vector m_function_scope_tests; std::vector m_menu_scope_tests; std::vector m_item_scope_tests; std::vector m_event_handler_set_scope_tests; void AddSequence(std::vector& collection, std::unique_ptr test); void CreateSequenceCollections(); protected: const std::vector& GetTestsForState() override; public: MenuFileParser(SimpleLexer* lexer, FeatureLevel featureLevel); MenuFileParser(SimpleLexer* lexer, FeatureLevel featureLevel, const MenuAssetZoneState* zoneState); _NODISCARD MenuFileParserState* GetState() const; }; }