16
0
mirror of https://github.com/MaSzyna-EU07/maszyna.git synced 2026-07-18 01:59:19 +02:00
Files
maszyna/eu07-parser/include/eu07/scene/context.hpp
2026-06-13 15:43:44 +02:00

36 lines
825 B
C++

#pragma once
#include <eu07/scene/cursor.hpp>
#include <eu07/scene/document.hpp>
#include <eu07/scene/scratch.hpp>
#include <filesystem>
#include <vector>
namespace eu07::scene {
struct ParseContext {
SceneDocument& document;
SceneScratchpad scratch;
std::filesystem::path baseDirectory;
std::vector<std::filesystem::path> includeStack;
std::vector<std::vector<std::string>> activeIncludeParameters;
bool expandIncludes = true;
};
using DirectiveParser = bool (*)(TokenStream& stream, ParseContext& context);
namespace detail {
struct IncludeExpansionRequest {
std::size_t entryIndex = 0;
std::string file;
std::vector<std::string> parameters;
};
void expandInclude(ParseContext& context, const IncludeExpansionRequest& request);
} // namespace detail
} // namespace eu07::scene