本文整理汇总了C++中sqf::Parameters::begin方法的典型用法代码示例。如果您正苦于以下问题:C++ Parameters::begin方法的具体用法?C++ Parameters::begin怎么用?C++ Parameters::begin使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sqf::Parameters
的用法示例。
在下文中一共展示了Parameters::begin方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: callExtension
void HiveExtApp::callExtension( const char* function, char* output, size_t outputSize )
{
Sqf::Parameters params;
try
{
params = lexical_cast<Sqf::Parameters>(function);
}
catch(bad_lexical_cast)
{
logger().error("Cannot parse function: " + string(function));
return;
}
int funcNum = -1;
try
{
string childIdent = boost::get<string>(params.at(0));
if (childIdent != "CHILD")
throw std::runtime_error("First element in parameters must be CHILD");
params.erase(params.begin());
funcNum = boost::get<int>(params.at(0));
params.erase(params.begin());
}
catch (...)
{
logger().error("Invalid function format: " + string(function));
return;
}
if (handlers.count(funcNum) < 1)
{
logger().error("Invalid method id: " + lexical_cast<string>(funcNum));
return;
}
if (logger().debug())
logger().debug("Original params: |" + string(function) + "|");
logger().information("Method: " + lexical_cast<string>(funcNum) + " Params: " + lexical_cast<string>(params));
HandlerFunc handler = handlers[funcNum];
Sqf::Value res;
try
{
res = handler(params);
}
catch (...)
{
logger().error("Error executing |" + string(function) + "|");
return;
}
string serializedRes = lexical_cast<string>(res);
if (serializedRes.length() >= outputSize)
{
logger().error("Output size too big ("+lexical_cast<string>(serializedRes.length())+") for request : " + string(function));
return;
}
logger().information("Result: " + serializedRes);
strncpy_s(output,outputSize,serializedRes.c_str(),outputSize-1);
}