Détermination (non aléatoire) de la date d'un événement auto-généré


o DefineNextEventClockTime
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);
  ...
}

This page was generated with the help of DOC++.