position(pos),
error(message)
{}
+ virtual ~ParserError() throw() {}
size_t position;
std::string error;
return start;
}
-size_t checkChar(const std:string& value, size_t start, char ch)
+size_t checkChar(const std::string& value, size_t start, char ch)
{
if (start >= value.length())
- throw ParserError(start, "Unexpected end of string. Expected '" + std::string(ch) + "'.");
+ throw ParserError(start, "Unexpected end of string. Expected '" + std::string(1, ch) + "'.");
if (value[start] != ch)
- throw ParserError(start, "Expected '" + std::string(ch) + "', got '" + std::string(value[start]) + "'.");
+ throw ParserError(start, "Expected '" + std::string(1, ch) + "', got '" + std::string(1, value[start]) + "'.");
return start + 1;
}
else
throw ParserError(start, "Unexpected whitespace. Expected string.");
}
- return dest;
+ return std::make_pair(start, dest);
}
Config::Pairs toPairs(const std::vector<std::string>& values)
start = key.first;
pair.first = key.second;
start = skipSpaces(value, start);
- start = checkChar(value, start, ',')
+ start = checkChar(value, start, ',');
start = skipSpaces(value, start);
- std::pair<size_t, std::string> value = readString(value, start);
+ std::pair<size_t, std::string> val = readString(value, start);
start = key.first;
- pair.second = value.second;
+ pair.second = val.second;
start = skipSpaces(value, start);
start = checkChar(value, start, ')');
if (res.find(pair.first) != res.end())
if (values.empty())
return 0;
T res = 0;
- if (srt2x(values[0], res) == 0)
+ if (str2x(values[0], res) == 0)
return res;
return 0;
}
Config::Pairs parseVector(const std::string& paramName, const MODULE_SETTINGS& params)
{
for (size_t i = 0; i < params.moduleParams.size(); ++i)
- if (params.moduleParams[i].first == paramName)
- return toPairs(params.moduleParams[i].second);
+ if (params.moduleParams[i].param == paramName)
+ return toPairs(params.moduleParams[i].value);
return Config::Pairs();
}
bool parseBool(const std::string& paramName, const MODULE_SETTINGS& params)
{
for (size_t i = 0; i < params.moduleParams.size(); ++i)
- if (params.moduleParams[i].first == paramName)
- return toBool(params.moduleParams[i].second);
+ if (params.moduleParams[i].param == paramName)
+ return toBool(params.moduleParams[i].value);
return false;
}
std::string parseString(const std::string& paramName, const MODULE_SETTINGS& params)
{
for (size_t i = 0; i < params.moduleParams.size(); ++i)
- if (params.moduleParams[i].first == paramName)
- return toString(params.moduleParams[i].second);
+ if (params.moduleParams[i].param == paramName)
+ return toString(params.moduleParams[i].value);
return "";
}
T parseInt(const std::string& paramName, const MODULE_SETTINGS& params)
{
for (size_t i = 0; i < params.moduleParams.size(); ++i)
- if (params.moduleParams[i].first == paramName)
- return toInt<T>(params.moduleParams[i].second);
+ if (params.moduleParams[i].param == paramName)
+ return toInt<T>(params.moduleParams[i].value);
return 0;
}
reply(parseVector("reply", settings)),
verbose(parseBool("verbose", settings)),
bindAddress(parseString("bind_address", settings)),
+ portStr(parseString("port", settings)),
port(parseInt<uint16_t>("port", settings)),
key(parseString("key", settings))
{