From 7553b7f9d4dddc2235c137d41de8ce22547bebe3 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Wed, 1 Jul 2015 17:36:37 +0200 Subject: Initial commit --- osevent.dcl | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 osevent.dcl (limited to 'osevent.dcl') diff --git a/osevent.dcl b/osevent.dcl new file mode 100644 index 0000000..5f91025 --- /dev/null +++ b/osevent.dcl @@ -0,0 +1,60 @@ +definition module osevent + +// Clean Object I/O library, version 1.2 + +from StdInt import class ^(..), instance ^ Int, class -(..), instance - Int +from clCrossCall_12 import :: CrossCallInfo +from ostoolbox import :: OSToolbox +from ostime import :: OSTime +from ostypes import :: OSWindowPtr +from StdMaybe import :: Maybe + + +:: *OSEvents + +osNewEvents :: OSEvents +//osCopyEvents :: !OSEvents -> (!OSEvents,!OSEvents) PA: not used +osAppendEvents :: !*[OSEvent] !OSEvents -> OSEvents // osAppendEvents adds events at the end of the queue +osInsertEvents :: !*[OSEvent] !OSEvents -> OSEvents // osInsertEvents adds events at the front of the queue +osIsEmptyEvents :: !OSEvents -> (!Bool,!OSEvents) +osRemoveEvent :: !OSEvents -> (!OSEvent,!OSEvents) + + +:: OSEvent + :== CrossCallInfo +:: OSSleepTime // The max time the process allows multi-tasking + :== Int + +osNullEvent :: OSEvent // osNullEvent returns a valid non-informative event + +// OSLongSleep :: OSSleepTime +OSLongSleep :== 2^15-1 +// OSNoSleep :: OSSleepTime +OSNoSleep :== 0 + +osHandleEvents :: !(.s -> (Bool,.s)) + !(.s -> (OSEvents,.s)) !((OSEvents,.s) -> .s) + !(.s -> (Int,.s)) + !(OSEvent -> .s -> ([Int],.s)) + !(!.s,!*OSToolbox) + -> (!.s,!*OSToolbox) +osEventIsUrgent :: !OSEvent -> Bool +setReplyInOSEvent :: ![Int] -> OSEvent + +/* createOS(Dea/A)ctivateWindowEvent creates the event the platform would generate for a genuine (de)activate event. */ +createOSActivateWindowEvent :: !OSWindowPtr !*OSToolbox -> (!OSEvent,!*OSToolbox) +createOSDeactivateWindowEvent :: !OSWindowPtr !*OSToolbox -> (!OSEvent,!*OSToolbox) + +/* createOS(Dea/A)ctivateControlEvent creates the event the platform would generate for a genuine (de)activate event. */ +createOSActivateControlEvent :: !OSWindowPtr !OSWindowPtr !*OSToolbox -> (!OSEvent,!*OSToolbox) +createOSDeactivateControlEvent :: !OSWindowPtr !OSWindowPtr !*OSToolbox -> (!OSEvent,!*OSToolbox) + +/* createOSLoose(Mouse/Key)Event creates the event for reporting loss of mouse/keyboard input (virtual event). */ +createOSLooseMouseEvent :: !OSWindowPtr !OSWindowPtr !*OSToolbox -> (!OSEvent,!*OSToolbox) +createOSLooseKeyEvent :: !OSWindowPtr !OSWindowPtr !*OSToolbox -> (!OSEvent,!*OSToolbox) + +/* createOSZeroTimerEvent creates the event for reporting continued zero timer (virtual event). + getOSZeroTimerStartTime returns the registered time in the virtual event. Nothing is returned if wrong argument. +*/ +createOSZeroTimerEvent :: !OSTime -> OSEvent +getOSZeroTimerStartTime :: !OSEvent -> Maybe OSTime -- cgit v1.2.3