vbtkitutils/src/AnyEvent.m3


Copyright (C) 1994, Digital Equipment Corp.
 by Ken Brooks; Trexle/M3 by Marc H. Brown                   

MODULE AnyEvent;

IMPORT VBT;

PROCEDURE FromKey (READONLY event: VBT.KeyRec): Key =
  BEGIN
    RETURN NEW(Key, key := event);
  END FromKey;

PROCEDURE FromMouse (READONLY event: VBT.MouseRec): Mouse =
  BEGIN
    RETURN NEW(Mouse, mouse := event);
  END FromMouse;

PROCEDURE FromPosition (READONLY event: VBT.PositionRec):
  Position =
  BEGIN
    RETURN NEW(Position, position := event);
  END FromPosition;

PROCEDURE FromMisc (READONLY event: VBT.MiscRec): Misc =
  BEGIN
    RETURN NEW(Misc, misc := event);
  END FromMisc;

PROCEDURE TimeStamp (anyevent: T): VBT.TimeStamp =
  BEGIN
    TYPECASE anyevent OF
    | Key (key) => RETURN key.key.time;
    | Mouse (mouse) => RETURN mouse.mouse.time;
    | Position (position) => RETURN position.position.time;
    | Misc (misc) => RETURN misc.misc.time;
    ELSE <* ASSERT(FALSE) *>
    END;
  END TimeStamp;

BEGIN
END AnyEvent.