mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-07-18 01:59:19 +02:00
36 lines
825 B
C++
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
|