#include "NameManglingRules.h" void NameManglingRules::apply(const ReplaceRule &rule, QString &in) const { int from = 0; int pos; QRegularExpressionMatch match; while ((pos = in.indexOf(rule.pattern, from, &match)) >= 0) { int len = match.capturedLength(); in.replace(pos, len, rule.replace); from = pos + rule.replace.size(); if (rule.nextToUpper) in[from] = in[from].toUpper(); } } QString NameManglingRules::transform(const QString &input) const { QString result; if (caseConversion == CaseConversion::Lower) result = input.toLower(); else if (caseConversion == CaseConversion::Upper) result = input.toUpper(); else result = input; for (auto rule : replaceRules) { apply(rule, result); } return result; }