From 68610e49f372ded04379f2959b55ccb3bada5fca Mon Sep 17 00:00:00 2001 From: Jan Date: Sun, 31 Oct 2021 17:45:55 +0100 Subject: [PATCH] Add sourceFile parameter to MultiInput ParserStream --- src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp | 2 +- src/ObjLoading/Parsing/Menu/MenuFileReader.cpp | 4 ++-- src/ObjLoading/Parsing/Menu/MenuFileReader.h | 2 +- src/Parser/Parsing/Impl/ParserMultiInputStream.cpp | 2 +- src/Parser/Parsing/Impl/ParserMultiInputStream.h | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp index 7fca4d7c..1b5243dc 100644 --- a/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp +++ b/src/ObjLoading/Game/IW4/AssetLoaders/AssetLoaderMenuList.cpp @@ -28,7 +28,7 @@ bool AssetLoaderMenuList::LoadFromRaw(const std::string& assetName, ISearchPath* if (!file.IsOpen()) return false; - MenuFileReader reader(*file.m_stream, assetName, MenuFeatureLevel::IW4, [searchPath](const std::string& filename) -> std::unique_ptr + MenuFileReader reader(*file.m_stream, assetName, MenuFeatureLevel::IW4, [searchPath](const std::string& filename, const std::string& sourceFile) -> std::unique_ptr { auto foundFileToInclude = searchPath->Open(filename); if (!foundFileToInclude.IsOpen() || !foundFileToInclude.m_stream) diff --git a/src/ObjLoading/Parsing/Menu/MenuFileReader.cpp b/src/ObjLoading/Parsing/Menu/MenuFileReader.cpp index f5759106..90999898 100644 --- a/src/ObjLoading/Parsing/Menu/MenuFileReader.cpp +++ b/src/ObjLoading/Parsing/Menu/MenuFileReader.cpp @@ -8,7 +8,7 @@ #include "Parsing/Impl/ParserSingleInputStream.h" #include "Parsing/Simple/SimpleLexer.h" -MenuFileReader::MenuFileReader(std::istream& stream, std::string fileName, MenuFeatureLevel featureLevel, include_callback_t includeCallback) +MenuFileReader::MenuFileReader(std::istream& stream, std::string fileName, const MenuFeatureLevel featureLevel, include_callback_t includeCallback) : m_feature_level(featureLevel), m_file_name(std::move(fileName)), m_stream(nullptr) @@ -18,7 +18,7 @@ MenuFileReader::MenuFileReader(std::istream& stream, std::string fileName, MenuF m_stream = m_open_streams.back().get(); } -MenuFileReader::MenuFileReader(std::istream& stream, std::string fileName, MenuFeatureLevel featureLevel) +MenuFileReader::MenuFileReader(std::istream& stream, std::string fileName, const MenuFeatureLevel featureLevel) : m_feature_level(featureLevel), m_file_name(std::move(fileName)), m_stream(nullptr) diff --git a/src/ObjLoading/Parsing/Menu/MenuFileReader.h b/src/ObjLoading/Parsing/Menu/MenuFileReader.h index f72cc57e..038a7478 100644 --- a/src/ObjLoading/Parsing/Menu/MenuFileReader.h +++ b/src/ObjLoading/Parsing/Menu/MenuFileReader.h @@ -12,7 +12,7 @@ class MenuFileReader { public: - using include_callback_t = std::function(const std::string& filename)>; + using include_callback_t = std::function(const std::string& filename, const std::string& sourceFile)>; private: const MenuFeatureLevel m_feature_level; diff --git a/src/Parser/Parsing/Impl/ParserMultiInputStream.cpp b/src/Parser/Parsing/Impl/ParserMultiInputStream.cpp index 859027b2..9fea9e55 100644 --- a/src/Parser/Parsing/Impl/ParserMultiInputStream.cpp +++ b/src/Parser/Parsing/Impl/ParserMultiInputStream.cpp @@ -79,7 +79,7 @@ bool ParserMultiInputStream::IncludeFile(const std::string& filename) if (!m_include_callback) return false; - auto newFile = m_include_callback(filename); + auto newFile = m_include_callback(filename, m_files.empty() ? "" : m_files.top().m_file_path); if (!newFile) return false; diff --git a/src/Parser/Parsing/Impl/ParserMultiInputStream.h b/src/Parser/Parsing/Impl/ParserMultiInputStream.h index 40c362ba..11b041d2 100644 --- a/src/Parser/Parsing/Impl/ParserMultiInputStream.h +++ b/src/Parser/Parsing/Impl/ParserMultiInputStream.h @@ -10,7 +10,7 @@ class ParserMultiInputStream final : public IParserLineStream { public: - using include_callback_t = std::function(const std::string& filename)>; + using include_callback_t = std::function(const std::string& filename, const std::string& sourceFile)>; private: class FileInfo