diff options
| author | mniip <mniip@mniip.com> | 2013-08-22 12:51:58 (GMT) |
|---|---|---|
| committer | mniip <mniip@mniip.com> | 2013-08-22 13:09:55 (GMT) |
| commit | 95c01bcf0af64eed9e843346f3ff013cc7197cef (patch) | |
| tree | aa602a365dfe93a8bbf0724e280afbb9148b059d /src | |
| parent | 5e1385324a531ea12a179293c0463f88ddcc8a0b (diff) | |
| download | powder-95c01bcf0af64eed9e843346f3ff013cc7197cef.zip powder-95c01bcf0af64eed9e843346f3ff013cc7197cef.tar.gz | |
regexless getText
Diffstat (limited to 'src')
| -rw-r--r-- | src/simulation/Sign.cpp | 41 |
1 files changed, 27 insertions, 14 deletions
diff --git a/src/simulation/Sign.cpp b/src/simulation/Sign.cpp index 7ba94af..f6b8420 100644 --- a/src/simulation/Sign.cpp +++ b/src/simulation/Sign.cpp @@ -31,25 +31,38 @@ std::string sign::getText(Simulation *sim) else sprintf(buff, "Temp: 0.00"); //...temperature } - else if (sregexp(signText, "^{[ct]:[0-9]*|.*}$")==0) + else { - int sldr, startm; - memset(buff, 0, sizeof(buff)); - for (sldr=3; signText[sldr-1] != '|'; sldr++) - startm = sldr + 1; - sldr = startm; - while (signText[sldr] != '}') + int match=0; + const char* r; + const char* e; + if (signText[0]=='{' && (signText[1]=='c' || signText[1]=='t') && signText[2]==':' && signText[3]>='0' && signText[3]<='9') { - buff[sldr - startm] = signText[sldr]; - sldr++; + const char* p=signText+4; + while (*p>='0' && *p<='9') + p++; + if (*p=='|') + { + r=p+1; + while (*p) + p++; + if (p[-1]=='}') + { + match=1; + e=p; + } + } } - } - else - { - sprintf(buff, "%s", signText); + if (match) + { + strcpy(buff, r); + buff[e-r-1]=0; + } + else + strcpy(buff, signText); } - return std::string(buff,256); + return std::string(buff); } void sign::pos(std::string signText, int & x0, int & y0, int & w, int & h) |
