本文整理汇总了C++中Command::Construct方法的典型用法代码示例。如果您正苦于以下问题:C++ Command::Construct方法的具体用法?C++ Command::Construct怎么用?C++ Command::Construct使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Command
的用法示例。
在下文中一共展示了Command::Construct方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ParseCommand
bool CommandParser::ParseCommand(const String& command, Command& outCommand)
{
Clear(); // clear first
if(command.length() < MIN_COMMAND_LENGTH)
return false;
const char* readPtr = command.c_str();
bool rightPrefix = !strncmp_P(readPtr,(const char*)CMD_PREFIX,CMD_PREFIX_LEN);// || !strncmp_P(readPtr,(const char*)CHILD_PREFIX,CMD_PREFIX_LEN);
if(!rightPrefix)
return false;
// перемещаемся за префикс (CT или CD)
readPtr += CMD_PREFIX_LEN;
// проверяем, GET или SET должно быть передано
bool isGet = !strncmp_P(readPtr,(const char*)CMD_GET,CMD_TYPE_LEN);
bool rightType = isGet || !strncmp_P(readPtr,(const char*)CMD_SET,CMD_TYPE_LEN);
if(!rightType)
return false;
uint8_t commandType = isGet ? ctGET : ctSET;
// перемещаемся за тип команды и знак '='
readPtr += CMD_TYPE_LEN + 1;
// ищем, есть ли разделитель в строке. Если он есть, значит, передали ещё и параметры помимо просто имени модуля
const char* delimPtr = strchr(readPtr,'|');
if(!delimPtr)
{
// без параметров, тупо конструируем и выходим
outCommand.Construct(readPtr,NULL,commandType);
return true;
}
// есть параметры, надо выцепить имя модуля
size_t len = (delimPtr - readPtr);
char* moduleName = new char[len+1];
memset(moduleName,0,len+1);
strncpy(moduleName,readPtr,len);
delimPtr++;
outCommand.Construct(moduleName,delimPtr,commandType);
delete[] moduleName;
return true;
}
示例2: Update
void LoopModule::Update(uint16_t dt)
{
size_t sz = vec.size();
for(size_t i=0;i<sz;i++)
{
LoopLink* lnk = vec[i];
if(!lnk->bActive || !lnk->interval || (lnk->countPasses > 0 && lnk->currPass >= lnk->countPasses)) // связанный модуль неактивен
{
continue;
}
lnk->lastTimerVal += dt;
if(lnk->lastTimerVal >= lnk->interval)
{
// need to do the job
lnk->lastTimerVal = lnk->lastTimerVal - lnk->interval;
// конструируем команду
Command com;
com.Construct(lnk->linkedModule->GetID(),lnk->paramsToPass.c_str(),lnk->commandType);
com.SetInternal(true); // говорим, что команда - от одного модуля к другому
MainController->ProcessModuleCommand(com,lnk->linkedModule);
if(lnk->countPasses > 0)
{
lnk->currPass++;
if(lnk->currPass >= lnk->countPasses) // все проходы выполнены
{
lnk->currPass = 0;
lnk->bActive = false;
} // if
} // if(lnk->countPasses > 0)
} // if
} // for
}