From 3c9f84adb310e193cd40554ca9f49e20e21bbc15 Mon Sep 17 00:00:00 2001 From: Paul Ferrand Date: Wed, 18 Dec 2019 09:51:18 +0100 Subject: [PATCH] Changed the signature of `findDefine()` --- src/sfizz/Parser.cpp | 17 ++++++++++------- src/sfizz/Parser.h | 1 - 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/sfizz/Parser.cpp b/src/sfizz/Parser.cpp index 3d4e32c9..8b762cd2 100644 --- a/src/sfizz/Parser.cpp +++ b/src/sfizz/Parser.cpp @@ -117,7 +117,7 @@ bool sfz::Parser::loadSfzFile(const fs::path& file) return true; } -bool sfz::Parser::findDefine(absl::string_view line) +bool findDefine(absl::string_view line, absl::string_view& variable, absl::string_view& value) { const auto defPosition = line.find("#define"); if (defPosition == absl::string_view::npos) @@ -136,12 +136,10 @@ bool sfz::Parser::findDefine(absl::string_view line) return false; const auto valueEnd = line.find_first_of(" \r\t\n\f\v", valueStart); - const auto variable = line.substr(variableStart, variableEnd - variableStart); - const auto value = valueEnd != absl::string_view::npos + variable = line.substr(variableStart, variableEnd - variableStart); + value = valueEnd != absl::string_view::npos ? line.substr(valueStart, valueEnd - valueStart) : line.substr(valueStart); - - defines[std::string(variable)] = std::string(value); return true; } @@ -170,6 +168,9 @@ void sfz::Parser::readSfzFile(const fs::path& fileName, std::vector return; std::string tmpString; + std::string includePath; + absl::string_view variable; + absl::string_view value; while (std::getline(fileStream, tmpString)) { absl::string_view tmpView { tmpString }; @@ -179,7 +180,6 @@ void sfz::Parser::readSfzFile(const fs::path& fileName, std::vector if (tmpView.empty()) continue; - std::string includePath; // New #include if (findInclude(tmpView, includePath)) { std::replace(includePath.begin(), includePath.end(), '\\', '/'); @@ -197,8 +197,11 @@ void sfz::Parser::readSfzFile(const fs::path& fileName, std::vector } // New #define - if (findDefine(tmpView)) + if (findDefine(tmpView, variable, value)) { + + defines[std::string(variable)] = std::string(value); continue; + } // Replace defined variables starting with $ std::string newString; diff --git a/src/sfizz/Parser.h b/src/sfizz/Parser.h index 5c2c8949..222fd153 100644 --- a/src/sfizz/Parser.h +++ b/src/sfizz/Parser.h @@ -47,7 +47,6 @@ private: std::vector includedFiles; std::string aggregatedContent {}; void readSfzFile(const fs::path& fileName, std::vector& lines) noexcept; - bool findDefine(absl::string_view line); }; } // namespace sfz