template <>
inline
-bool GetValue<PRIV>(const char ** attr, PRIV & value)
+bool GetValue<PRIV>(const char ** attr, PRIV & value, const std::string & attrName)
{
uint32_t priv;
-if (!GetValue(attr, priv))
+if (!GetValue(attr, priv, attrName))
return false;
value = priv;
return true;
} // namespace STG
-GET_ADMIN::PARSER::PARSER(CALLBACK f, void * d)
+GET_ADMIN::PARSER::PARSER(CALLBACK f, void * d, const std::string & e)
: callback(f),
data(d),
+ encoding(e),
depth(0),
parsingAnswer(false)
{
if (depth == 1)
ParseAdmin(el, attr);
-if (depth == 2 && parsingAnswer)
- ParseAdminParams(el, attr);
+/*if (depth == 2 && parsingAnswer)
+ ParseAdminParams(el, attr);*/
return 0;
}
error = "Admin not found.";
}
else
+ {
parsingAnswer = true;
+ for (const char ** pos = attr; *pos != NULL; pos = pos + 2)
+ if (!TryParse(propertyParsers, ToLower(*pos), pos, encoding, *pos))
+ {
+ error = std::string("Invalid parameter '") + *pos + "'.";
+ break;
+ }
+ }
}
else
parsingAnswer = true;
}
}
//-----------------------------------------------------------------------------
-void GET_ADMIN::PARSER::ParseAdminParams(const char * el, const char ** attr)
+/*void GET_ADMIN::PARSER::ParseAdminParams(const char * el, const char ** attr)
{
if (!TryParse(propertyParsers, ToLower(el), attr))
error = "Invalid parameter.";
-}
+}*/