summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormniip <mniip@mniip.com>2013-08-22 12:51:58 (GMT)
committer mniip <mniip@mniip.com>2013-08-22 13:09:55 (GMT)
commit95c01bcf0af64eed9e843346f3ff013cc7197cef (patch)
treeaa602a365dfe93a8bbf0724e280afbb9148b059d
parent5e1385324a531ea12a179293c0463f88ddcc8a0b (diff)
downloadpowder-95c01bcf0af64eed9e843346f3ff013cc7197cef.zip
powder-95c01bcf0af64eed9e843346f3ff013cc7197cef.tar.gz
regexless getText
-rw-r--r--src/simulation/Sign.cpp41
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)