오브젝트 오퍼레이션(함수 또는 글로벌 오퍼레이션과 반대로)은 리턴 유형이 동일한 C 함수에 맵핑됩니다. 오퍼레이션에 대해 생성된 첫 번째 인수는 오퍼레이션이 작동하는 특정 오브젝트에 대한 포인터입니다. 모델에 지정된 대로, me 포인터 다음에는 원래 오퍼레이션 인수 목록이 있습니다.
예를 들어, B 오브젝트 유형의 print() 오퍼레이션에 대해 다음 프로토타입이 생성됩니다.
void B_print(B* const me);
B에 대한 스펙 파일에서 함수 프로토타입이 생성됩니다. 유일한 인수는 me라고 하는 B 유형의 오브젝트에 대한 포인터입니다.
모델에서 B의 print() 오퍼레이션에 대한 구현에 다음 행을 입력하십시오.
char *str;
str = "This is B";
printf("%s\n", str);
구현 파일의 print() 본문에 다음 행이 추가됩니다.
void B_print(B* const me) {
NOTIFY_OPERATION(me, NULL, B, print, print(), 0,
print_SERIALIZE);
{
/*#[ operation print() */
char *str;
str = "This is B";
printf("%s\n", str);
/*#]*/
}
}
/*#[ 및 /*#] 기호 사이에서 오퍼레이션을 수동으로 편집하십시오. 을 선택하여 변경사항을 다시 모델로 라운드트립하십시오.
애니메이션이 사용되고 오퍼레이션에 애니메이트해야 할 인수가 없는 경우 오퍼레이션에 대해 SERIALIZE 매크로가 생성됩니다(예: print_SERIALIZE). SERIALIZE 매크로는 인스트루먼테이션 중에 오퍼레이션을 표시하기 위해 사용됩니다. 인라인 오퍼레이션에 대해서는 SERIALIZE 매크로가 생성되지 않습니다.