本文整理汇总了C++中Transition::action方法的典型用法代码示例。如果您正苦于以下问题:C++ Transition::action方法的具体用法?C++ Transition::action怎么用?C++ Transition::action使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Transition
的用法示例。
在下文中一共展示了Transition::action方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: step
bool Automaton::step()
{
//cout << this->name << " state: " << this->cur->id << " ";
for (int i=0; i < cur->transitions.size(); i++) {
Transition * t = cur->transitions[i];
if (t->guard() && t->next->inv()) { // если выполнено условие
if (t->needSync() ) {// если есть действия по синхронизации
bool sync = t->synchronize();
//cout << " channel " << t->channelParticipant->channel->id << " ";
if (sync) {
t->action(); //выполняем действия перехода
cerr << "time = " << net->timeForInternalUse << " " << name << ": " << cur->name << " -> " << t->next->name << endl;
cur = t->next; //изменяем текущее состояние
//cout << this->cur->id << "\n";
return true; //был совершен переход
}
}
else { // синхронизации нет, условие выполнено
t->action(); //выполняем действия перехода
cerr << "time = " << net->timeForInternalUse << " " << name << ": " << cur->name << " -> " << t->next->name << endl;
cur = t->next; //изменяем текущее состояние
//cout << this->cur->id << "\n";
return true; //был совершен переход
}
}
}
//cout << "no trans\n";
return false; //перехода не было
}
示例2: calculate
void StateMachine::calculate(int event) {
char buffer[50];
sprintf(buffer, "Event: %d", event);
SerialDebugger.debug(STATUSUPDATE, "StateMachine::calculate", buffer);
Transition* ptrT = current->getTransition(event);
if (ptrT != 0) {
char name_current[20];
char name_next[20];
current->getName().toCharArray(name_current, 20, 0);
ptrT->target->getName().toCharArray(name_next, 20, 0);
sprintf(buffer, "Zustandsübergang: %s -> %s", name_current, name_next);
SerialDebugger.debug(STATUSUPDATE, "StateMachine::calculate", buffer);
current->stop();
ptrT->action();
current = ptrT->target;
current->start();
} else {
SerialDebugger.debug(NOTIFICATION, "StateMachine::calculate",
"keine Transition");
}
}
示例3: do_transition
/*!
* @brief Method used to perform transition action.
* Should be overriden in derived classes if change of the behaviour is desired.
* @param[in] transition Information about the transition
* @return True if action was successful
* */
virtual bool do_transition(const Transition& transition) {
return transition.action(transition);
}