void MyEventClass_Fct1(EventMethod* pM) { Event* pCurrentEvent = pM->DescribedEvent(); ... }
bool MyEventClass_Fct2(EventMethod* pM) { Event* pCurrentEvent = pM->DescribedEvent(); Event* pNewEvent = pCurrentEvent->RawCopy(); ... pCurrentEvent->SetNextEvent(pNewEvent); return true; }
Noter que les pointeurs sur les processus associés à l'événement sont utilisables dans la fonction, puisque les processus ne sont éventuellement détruits qu'après l'invocation de SetGenerateNextEvent (voir la remarque page 'La classe des processus ponctuels').
void MyEventClass_Fct3(EventMethod* pM) { Event* pCurrentEvent = pM->DescribedEvent(); Event* pNewEvent = pM->GetEventArgValue(AUTOGENERATED_EVENT_ARGUMENT); ... }
int MyEventClass_Fct4(EventMethod* pM) { Event* pCurrentEvent = pM->DescribedEvent(); int currentDate = pCurrentEvent->OccurrenceClockTime(); ... return currentDate; }
int f(EventMethod* pM) { int result = 0; Event* theEvent = pM->DescribedEvent(); ... return result; } MyMethod::MyMethod() { e.g. IntEventMethod ... MyArgument* anArgument = new MyArgument(); e.g. IntArgument AddArgument(anArgument); AssignBody(f); reporté dans le constructeur de MyEvent ... } MyEvent::MyEvent() { ... MyMethod* aMeth = new MyMethod(); AssignBody(MY_METHOD, f); AddMethod(aMeth); ... } int main(...) { ... MyEvent* anEvent = ...; SetIntArgValue(MY_METHOD, MY_ARGUMENT, 7); int x = anEvent->ExecIntMethod(MY_METHOD); ... }
Le service AssignBody affecte un corps à une méthode (au sens d'une instance de Method) dont le symbole de classe est donné en premier argument.
Les méthodes ExecVoidMethod, ExecPredicate et ExecIntMethod exécutent le corps de la méthode dont le symbole est passé en argument. La présente version n'offre que ces trois possibilités de type de méthode (void, bool et int), et ces deux possibilités de type d'argument (int et Event*).