Le corps, affecté par SetDefineNextEventClockTime, établit et renvoie la date d'un événement qui vient d'être auto-généré.int myEvent_defineNextEventClockTime_Body(EventMethod* pM) { Event* pPreviousEvent = pM->GetEventArgValue(PREVIOUS_EVENT_ARGUMENT); Event* pEventToDate = pPreviousEvent->NextEvent(); int nextEventClock; ... // les ajustements définissant la date du prochain événement (pEventToDate) pEventToDate->SetOccurrenceClockTime(nextEventClock); ... return nextEventClock; } MyEvent::MyEvent() : Event(MY_EVENT, "myEvent") { ... SetDefineNextEventClockTime(myEvent_defineNextEventClockTime_Body); ... };Le constructeur DefineNextEventClockTime() affecte le symbole de classe DEFINE_NEXTEVENTCLOCKTIME et le nom de classe "defineNextEventClockTime". Ainsi, on peut écrire :
int main(...) { ... Event* pEv = new MyEvent(); int nextEventClock; // le code ci-dessous ... Method* pM = pEv->GetMethod(DEFINE_NEXTEVENTCLOCKTIME); pM->SetArgValue(PREVIOUS_EVENT_ARGUMENT, pEv); nextEventClock = ((EventIntMethod*)pM)->Body((EventMethod*)pM); // ... est équivalent à celui-ci pEv->SetEventArgValue(DEFINE_NEXTEVENTCLOCKTIME, PREVIOUS_EVENT_ARGUMENT, pEv); nextEventClock = pEv->ExecIntMethod(DEFINE_NEXTEVENTCLOCKTIME); ... }