当前位置: 首页>>代码示例>>C++>>正文


C++ Transition::action方法代码示例

本文整理汇总了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; //перехода не было
}
开发者ID:AlevtinaGlonina,项目名称:IMASimulator,代码行数:29,代码来源:automaton.cpp

示例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");
	}

}
开发者ID:msedd,项目名称:StateMachineLCD,代码行数:31,代码来源:StateMachine.cpp

示例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);
 }
开发者ID:01org,项目名称:intelRSD,代码行数:9,代码来源:enum_state_machine.hpp


注:本文中的Transition::action方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。