From 7fbcc9d3306260fda407111f46b46097f3fa7eca Mon Sep 17 00:00:00 2001 From: louis Date: Fri, 10 Oct 2014 15:32:38 +0200 Subject: support for global variables type 'double' --- libtemplate/globals.h | 1 + libtemplate/parameter.c | 11 +++++++++++ libtemplate/xmlparser.c | 3 +++ 3 files changed, 15 insertions(+) (limited to 'libtemplate') diff --git a/libtemplate/globals.h b/libtemplate/globals.h index f7a959e..eda9ec9 100644 --- a/libtemplate/globals.h +++ b/libtemplate/globals.h @@ -27,6 +27,7 @@ public: virtual ~cGlobals(void) {}; map colors; map intVars; + map doubleVars; map stringVars; map fonts; map > translations; diff --git a/libtemplate/parameter.c b/libtemplate/parameter.c index e7dd30a..c646f06 100644 --- a/libtemplate/parameter.c +++ b/libtemplate/parameter.c @@ -156,6 +156,17 @@ bool cNumericParameter::CheckExpression(int &val, string &parsedVal) { parsedValue = parsedValue.replace(foundToken, token.size(), st.str()); } } + for (map::iterator globDouble = globals->doubleVars.begin(); globDouble != globals->doubleVars.end(); globDouble++) { + stringstream sToken; + sToken << "{" << globDouble->first << "}"; + string token = sToken.str(); + size_t foundToken = parsedValue.find(token); + if (foundToken != string::npos) { + stringstream st; + st << globDouble->second; + parsedValue = parsedValue.replace(foundToken, token.size(), st.str()); + } + } } if (IsNumber(parsedValue)) { diff --git a/libtemplate/xmlparser.c b/libtemplate/xmlparser.c index 8c21ed9..0e2c132 100644 --- a/libtemplate/xmlparser.c +++ b/libtemplate/xmlparser.c @@ -291,6 +291,9 @@ void cXmlParser::InsertVariable(string name, string type, string value) { if (!type.compare("int")) { int val = atoi(value.c_str()); globals->intVars.insert(pair(name, val)); + } else if (!type.compare("double")) { + double val = atof(value.c_str()); + globals->doubleVars.insert(pair(name, val)); } else if (!type.compare("string")) { globals->stringVars.insert(pair(name, value)); } -- cgit v1.2.3