IMPLEMENTATION MODULE wrapclock; (* Bound to m2wc* helpers in the shim (C struct timespec on the heap). Helper names avoid underscores (classic Modula-2 identifiers). *) FROM SYSTEM IMPORT ADDRESS; PROCEDURE m2wctimezone () : LONGINT; EXTERNAL; PROCEDURE m2wcistimezone () : INTEGER; EXTERNAL; PROCEDURE m2wcdaylight () : INTEGER; EXTERNAL; PROCEDURE m2wcisdst () : INTEGER; EXTERNAL; PROCEDURE m2wctzname (d : INTEGER) : ADDRESS; EXTERNAL; PROCEDURE m2wctsnew () : ADDRESS; EXTERNAL; PROCEDURE m2wctskill (ts : ADDRESS) : ADDRESS; EXTERNAL; PROCEDURE m2wctsget (ts : ADDRESS; VAR sec, nano : LONGCARD) : INTEGER; EXTERNAL; PROCEDURE m2wctsset (ts : ADDRESS; sec, nano : LONGCARD) : INTEGER; EXTERNAL; PROCEDURE m2wctsrealtime (ts : ADDRESS) : INTEGER; EXTERNAL; PROCEDURE m2wctssetrealtime (ts : ADDRESS) : INTEGER; EXTERNAL; PROCEDURE timezone () : LONGINT; BEGIN RETURN m2wctimezone() END timezone; PROCEDURE istimezone () : INTEGER; BEGIN RETURN m2wcistimezone() END istimezone; PROCEDURE daylight () : INTEGER; BEGIN RETURN m2wcdaylight() END daylight; PROCEDURE isdst () : INTEGER; BEGIN RETURN m2wcisdst() END isdst; PROCEDURE tzname (daylight : INTEGER) : ADDRESS; BEGIN RETURN m2wctzname(daylight) END tzname; PROCEDURE InitTimespec () : timespec; BEGIN RETURN m2wctsnew() END InitTimespec; PROCEDURE KillTimespec (ts : timespec) : timespec; BEGIN RETURN m2wctskill(ts) END KillTimespec; PROCEDURE GetTimespec (ts : timespec; VAR sec, nano : LONGCARD) : INTEGER; BEGIN RETURN m2wctsget(ts, sec, nano) END GetTimespec; PROCEDURE SetTimespec (ts : timespec; sec, nano : LONGCARD) : INTEGER; BEGIN RETURN m2wctsset(ts, sec, nano) END SetTimespec; PROCEDURE GetTimeRealtime (ts : timespec) : INTEGER; BEGIN RETURN m2wctsrealtime(ts) END GetTimeRealtime; PROCEDURE SetTimeRealtime (ts : timespec) : INTEGER; BEGIN RETURN m2wctssetrealtime(ts) END SetTimeRealtime; END wrapclock.