Listing 1

/***  generic main event loop ***/

void mainevent()
{
  EventRecord event;
  
  while(1)    /*  loop forever */
  {
    GetNextEvent(everyEvent,&event)
    
    switch (event.what)
    {
      case mouseDown:
        do_mousedown(event);
        break;
      case keyDown:
      case autoKey:
        do_keydown(event);
        break;
      case activateEvt:
        do_activate(event);
        break;
      case updateEvt:
        do_update(event);
        break;
      case nullEvt:
        do_idle();
        break;
    }
  }
}