Corrected a bug where "overlapping" defines were incorrectly replaced
This commit is contained in:
parent
15b557946e
commit
9da6fc6f78
2 changed files with 12 additions and 11 deletions
|
|
@ -46,16 +46,15 @@ protected:
|
||||||
case hash("region"): numRegions++; break;
|
case hash("region"): numRegions++; break;
|
||||||
case hash("curve"): numCurves++; break;
|
case hash("curve"): numCurves++; break;
|
||||||
}
|
}
|
||||||
// std::cout << "[" << header << "]" << '\t';
|
std::cout << "[" << header << "]" << ' ';
|
||||||
// for (auto& member: members)
|
for (auto& member: members)
|
||||||
// {
|
{
|
||||||
// std::cout << member.opcode << "=" << member.value;
|
std::cout << member.opcode << "=" << member.value;
|
||||||
// if (member.parameter)
|
if (member.parameter)
|
||||||
// std::cout << " (" << (int)*member.parameter << ")";
|
std::cout << " (" << (int)*member.parameter << ")";
|
||||||
// std::cout << ' ';
|
std::cout << ' ';
|
||||||
|
}
|
||||||
// }
|
std::cout << '\n';
|
||||||
// std::cout << '\n';
|
|
||||||
}
|
}
|
||||||
private:
|
private:
|
||||||
int numRegions { 0 };
|
int numRegions { 0 };
|
||||||
|
|
|
||||||
|
|
@ -129,8 +129,9 @@ void sfz::Parser::readSfzFile(const std::filesystem::path& fileName, std::vector
|
||||||
while (findPos < tmpView.npos) {
|
while (findPos < tmpView.npos) {
|
||||||
newString.append(tmpView, lastPos, findPos - lastPos);
|
newString.append(tmpView, lastPos, findPos - lastPos);
|
||||||
|
|
||||||
|
const auto defineEnd = tmpView.find_first_of(" \r\t\n\f\v", findPos);
|
||||||
|
const auto candidate = tmpView.substr(findPos, defineEnd - findPos);
|
||||||
for (auto& definePair : defines) {
|
for (auto& definePair : defines) {
|
||||||
std::string_view candidate = tmpView.substr(findPos, definePair.first.length());
|
|
||||||
if (candidate == definePair.first) {
|
if (candidate == definePair.first) {
|
||||||
newString += definePair.second;
|
newString += definePair.second;
|
||||||
lastPos = findPos + definePair.first.length();
|
lastPos = findPos + definePair.first.length();
|
||||||
|
|
@ -138,6 +139,7 @@ void sfz::Parser::readSfzFile(const std::filesystem::path& fileName, std::vector
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (lastPos <= findPos) {
|
if (lastPos <= findPos) {
|
||||||
newString += sfz::config::defineCharacter;
|
newString += sfz::config::defineCharacter;
|
||||||
lastPos = findPos + 1;
|
lastPos = findPos + 1;
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue