RiCGEN_BY_X() 또는 CGEN_BY_X()

RiCGEN_BY_X()문은 이벤트 송신자를 식별하는 동안 이벤트를 생성하여 인스턴스에 보냅니다.

RiCGEN_BY_X()CGEN_BY_X()와 동일한 영향을 미칩니다. 글로벌 함수 내에서 이벤트를 보내는 데 이러한 명령문이 유용할 수 있습니다.

RiCGEN_BY_X()는 특정 오브젝트를 이벤트 송신자로 식별하므로 RiCReactive_genBySender() 프레임워크 루틴을 사용하여 이벤트를 보냅니다.

예를 들어, 이벤트 송신자를 Room[2]로 식별하는 동안 fault() 이벤트를 Furnace[1] 인스턴스에 보내려면 다음을 사용하십시오.

RiCGEN_BY_X(Furnace[1], fault(), Room[2], Room);

마지막 인수(이 경우, Room)는 송신자의 유형을 식별합니다.

IBM® Rational® Rhapsody®는 지원이 없으면 이유를 판별할 수 없으므로 메시지를 보내는 AOMAnimationItem을 알고 있는 특별한 경우에만 GEN_BY_X를 사용하십시오. 예를 들어, 일부 GUI 클래스(GUI1GUI2)와 작업을 실행하는 일부 클래스(HueyLouey)로 애플리케이션을 작성할 수 있습니다. 사용자가 Rational Rhapsody에 모든 클래스를 작성했으므로 애니메이션은 모든 네 개의 인스턴스를 표시합니다.

일부 GUI를 GUI1GUI2 클래스와 연관시키십시오. GUI는 Rational Rhapsody 보다는 MFC 마법사를 사용하면 보다 손쉽게 작성되므로 마법사를 사용하십시오. GUI1 생성자는 몇 개의 단추가 있는 모델리스 대화 상자를 생성합니다.

이벤트를 생성하는 각 단추를 구성하십시오. 예를 들면, 다음과 같습니다.

void myDialog::OnButtonXPushed() {
   myHuey->GEN(E);
}

애니메이션을 제외한 이 구성 작업은 이벤트 발생 위치를 모릅니다. 그 대신, 사용자는 이러한 방식으로 GEN_BY_GUI를 사용할 수 있습니다.

void myDialog::OnButtonXPushed() {
   myHuey->GEN_BY_GUI

애니메이션 출력 창에 다음 메시지가 표시됩니다.

event E generated by GUI

myDialog 클래스에 속해 있는 GUI1 인스턴스를 지정하는 GUI1 *myOwner 메소드가 있는 경우, 다음을 작성할 수 있습니다.

void myDialog::OnButtonXPushed() {
   myHuey->GEN_BY_X(E,myOwner);
}

이 경우, 애니메이션(출력 창, 이벤트 큐 및 시퀀스 다이어그램)은 올바른 GUI1 오브젝트에서 발생하는 것으로 E를 표시합니다. 이 방법은 GUI 및 해당 대화 상자가 아직 작성되지 않은 일부 실제 클래스를 작성하는 테스트 하니스인 경우에 특히 유용합니다.

RiCGEN_BY_X() 정의는 다음과 같습니다.

#define RiCGEN_BY_X(INSTANCE,EVENT,SENDER,theClass)        \
{                                                          \
   if ((INSTANCE) != NULL) {                               \
      RiCReactive * reactive = &((INSTANCE)->ric_reactive);\
      RiCEvent * event = &(RiC_Create_##EVENT->ric_event); \
      RiCReactive_genBySender(reactive, event,             \
         aomX2Item(SENDER,aomc##theClass));                \
   }                                                       \
}

피드백