상태 차트의 이벤트 인수는 다음 구문의 의사 변수 params‑>를 사용하여 참조합니다.
event/params->event_arg1, params->event_arg2
인수 color를 갖는 discharge 이벤트를 처리하는 Firecracker 클래스를 예로 들 수 있습니다. 인수 color는 가능한 값이 붉은색(0), 초록색(1) 또는 파란색(2)인 열거 유형 Colors의 인수입니다. 상태 차트에서 상태 전이에 다음 레이블을 사용하여 이벤트가 발생할 때 이벤트로 색상을 전달하도록 나타낼 수 있습니다.
discharge/params->color
애니메이션이 있는 애플리케이션을 실행하는 경우, discharge 이벤트를 생성한 후 애니메이션 명령 필드에 다음 명령을 입력하여 값 red를 전달할 수 있습니다.
Firecracker[0]->GEN(discharge(red))
애플리케이션은 표기법 params->color에 따라 red를 discharge 이벤트의 인수 color로 전달되는 값으로 인식합니다. 붉은색 색상은 해당 정수 값(0)으로 변환되며 이벤트는 다음과 같이 main 스레드의 이벤트 큐에 입력됩니다.
Firecracker[0]->discharge((int)color = 0)
마지막으로, 이벤트 큐는 params->가 전달한 값 red로 이벤트 discharge를 처리합니다. Firecracker는 붉은색으로 표시되며 ready에서 discharged 상태로 상태 전이됩니다.
params-> 메커니즘의 작동 방식은 다음과 같습니다. 이벤트를 작성하고 인수를 지정하면 인수를 해당 속성으로 갖는 이벤트 클래스(OMEvent에서 파생됨)가 생성됩니다. 이벤트 코드는 패키지 파일에서 생성됩니다.
다음 샘플 코드는 하나의 인수 color를 갖는 이벤트 discharge를 보여줍니다. 코드는 Default 패키지의 헤더 파일에 생성되었습니다.
//-------------------------------------------------------
// Default.h
//-------------------------------------------------------
class discharge;
class Firecracker;
enum Colors {red, green, blue};
class discharge : public OMEvent {
DECLARE_META_EVENT
//// User explicit entries ////
public :
Colors color;
//// User implicit entries ////
public :
// Constructors and destructors:
discharge();
//// Framework entries ////
public :
discharge(Colors p_color);
// This constructor is need in code instrumentation
discharge(int p_color);
};
Firecracker 이벤트 큐가 이벤트 discharge를 가져올 수 있는 준비가 되면 SETPARAMS(discharge)를 호출합니다. SETPARAMS는 다음과 같이 oxf\state.h에 정의된 매크로입니다.
#define SETPARAMS(type) type *params; params=(type*)event
SETPARAMS(discharge)를 호출하면 포인터 유형의 params 변수가 discharge 유형의 이벤트에 할당됩니다. 상태 전이의 조치 파트에 있는 params->color를 discharge‑>color의 단축 표기법으로 사용하십시오.