This commit is contained in:
2021-04-02 12:04:45 +03:00

View File

@@ -190,7 +190,7 @@ void PIEvaluatorContent::addFunction(const PIString & name, int args) {
int PIEvaluatorContent::addVariable(const PIString & name, const complexd & val) {
variables << PIEvaluatorTypes::Variable(name, val);
return variables.size_s()-1;
return variables.size_s() - 1;
}
@@ -474,19 +474,23 @@ bool PIEvaluator::fillElements() {
}
}
cnum = 0;
PIVector<PIPair<int, int> > var_index;
typedef PIPair<int, int> PairII;
PIVector<PairII> var_index;
for (int i = 0; i < content.variables.size_s(); ++i)
var_index << PIPair<int, int>(i, content.variables[i].name.length());
var_index.sort([](const PIPair<int, int> * v1, const PIPair<int, int> * v2)->int {return v1->second > v2->second ? -1 : (v1->second == v2->second ? 0 : 1);});
var_index << PairII(i, content.variables[i].name.length());
var_index.sort([](const PairII * v1, const PairII * v2) -> int {
return v1->second > v2->second ? -1 : (v1->second == v2->second ? 0 : 1);
});
for (int i = 0; i < var_index.size_s(); i++) {
curfind = content.variables[var_index[i].first].name;
int vind = var_index[i].first;
curfind = content.variables[vind].name;
flen = curfind.length();
fstart = 0;
while (fstart >= 0) {
fstart = tmps.find(curfind, fstart);
if (fstart < 0) break;
for (int j = fstart; j < fstart + flen; j++) {
elements[j].set(etVariable, cnum, var_index[i].first);
elements[j].set(etVariable, cnum, vind);
tmps.replace(j, 1, fc);
}
cnum++;