X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/40d6bc4eb474e1e34c769ac247e63a127181e7f5..faf619a9b927923d90782ab28734916197ff16b4:/stglibs/srvconf.lib/parsers/get_tariff.cpp diff --git a/stglibs/srvconf.lib/parsers/get_tariff.cpp b/stglibs/srvconf.lib/parsers/get_tariff.cpp index 1bb9d0db..0804b269 100644 --- a/stglibs/srvconf.lib/parsers/get_tariff.cpp +++ b/stglibs/srvconf.lib/parsers/get_tariff.cpp @@ -39,7 +39,7 @@ class AOS_PARSER : public BASE_PROPERTY_PARSER public: typedef bool (* FUNC)(const char **, A &, T A::value_type:: *); AOS_PARSER(A & a, T A::value_type:: * fld, FUNC f) : array(a), field(fld), func(f) {} - virtual bool Parse(const char ** attr, const std::string & /*attrName*/) { return func(attr, array, field); } + virtual bool Parse(const char ** attr, const std::string & /*attrName*/, const std::string & /*fromEncoding*/) { return func(attr, array, field); } private: A & array; T A::value_type:: * field; @@ -55,11 +55,12 @@ void AddAOSParser(PROPERTY_PARSERS & parsers, const std::string & name, A & arra bool GetTimeSpan(const char ** attr, DIRPRICE_DATA & value, const std::string & attrName) { -int hb = 0; -int mb = 0; -int he = 0; -int me = 0; if (CheckValue(attr, attrName)) + { + int hb = 0; + int mb = 0; + int he = 0; + int me = 0; if (ParseTariffTimeStr(attr[1], hb, mb, he, me) == 0) { value.hDay = hb; @@ -68,6 +69,7 @@ if (CheckValue(attr, attrName)) value.mNight = me; return true; } + } return false; } @@ -76,17 +78,7 @@ bool GetTraffType(const char ** attr, T & value, const std::string & attrName) { if (!CheckValue(attr, attrName)) return false; -std::string type(attr[1]); -if (type == "up") - value = TRAFF_UP; -else if (type == "down") - value = TRAFF_DOWN; -else if (type == "up+down") - value = TRAFF_UP_DOWN; -else if (type == "max") - value = TRAFF_MAX; -else - return false; +value = TARIFF::StringToTraffType(attr[1]); return true; } @@ -127,9 +119,10 @@ return true; } // namespace anonymous -GET_TARIFF::PARSER::PARSER(CALLBACK f, void * d) +GET_TARIFF::PARSER::PARSER(CALLBACK f, void * d, const std::string & e) : callback(f), data(d), + encoding(e), depth(0), parsingAnswer(false) { @@ -207,6 +200,6 @@ if (strcasecmp(el, "tariff") == 0) //----------------------------------------------------------------------------- void GET_TARIFF::PARSER::ParseTariffParams(const char * el, const char ** attr) { -if (!TryParse(propertyParsers, ToLower(el), attr)) +if (!TryParse(propertyParsers, ToLower(el), attr, encoding)) error = std::string("Invalid parameter '") + el + "'."; }