IMPLEMENTATION MODULE wraptime; (* Bound to m2wt* helpers (struct timeval / struct tm on the heap). Field accessors live in C to avoid struct-layout assumptions here. *) FROM SYSTEM IMPORT ADDRESS; PROCEDURE m2wttvnew () : ADDRESS; EXTERNAL; PROCEDURE m2wttvkill (tv : ADDRESS) : ADDRESS; EXTERNAL; PROCEDURE m2wttznew () : ADDRESS; EXTERNAL; PROCEDURE m2wttzkill (tz : ADDRESS) : ADDRESS; EXTERNAL; PROCEDURE m2wttmnew () : ADDRESS; EXTERNAL; PROCEDURE m2wttmkill (t : ADDRESS) : ADDRESS; EXTERNAL; PROCEDURE m2wtgettimeofday (tv, tz : ADDRESS) : INTEGER; EXTERNAL; PROCEDURE m2wtsettimeofday (tv, tz : ADDRESS) : INTEGER; EXTERNAL; PROCEDURE m2wtfractions (tv : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wtlocaltime (tv, t : ADDRESS) : ADDRESS; EXTERNAL; PROCEDURE m2wtyear (t : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wtmonth (t : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wtday (t : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wthour (t : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wtminute (t : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wtsecond (t : ADDRESS) : CARDINAL; EXTERNAL; PROCEDURE m2wttvset (tv : ADDRESS; sec, usec : LONGCARD); EXTERNAL; PROCEDURE m2wttzset (tz : ADDRESS; minuteswest, dsttime : INTEGER); EXTERNAL; PROCEDURE InitTimeval () : timeval; BEGIN RETURN m2wttvnew() END InitTimeval; PROCEDURE KillTimeval (tv : timeval) : timeval; BEGIN RETURN m2wttvkill(tv) END KillTimeval; PROCEDURE InitTimezone () : timezone; BEGIN RETURN m2wttznew() END InitTimezone; PROCEDURE KillTimezone (tz : timezone) : timezone; BEGIN RETURN m2wttzkill(tz) END KillTimezone; PROCEDURE InitTM () : tm; BEGIN RETURN m2wttmnew() END InitTM; PROCEDURE KillTM (t : tm) : tm; BEGIN RETURN m2wttmkill(t) END KillTM; PROCEDURE gettimeofday (tv : timeval; tz : timezone) : INTEGER; BEGIN RETURN m2wtgettimeofday(tv, tz) END gettimeofday; PROCEDURE settimeofday (tv : timeval; tz : timezone) : INTEGER; BEGIN RETURN m2wtsettimeofday(tv, tz) END settimeofday; PROCEDURE GetFractions (tv : timeval) : CARDINAL; BEGIN RETURN m2wtfractions(tv) END GetFractions; PROCEDURE LocalTime (tv : timeval; m : tm) : tm; BEGIN RETURN m2wtlocaltime(tv, m) END LocalTime; PROCEDURE GetYear (m : tm) : CARDINAL; BEGIN RETURN m2wtyear(m) END GetYear; PROCEDURE GetMonth (m : tm) : CARDINAL; BEGIN RETURN m2wtmonth(m) END GetMonth; PROCEDURE GetDay (m : tm) : CARDINAL; BEGIN RETURN m2wtday(m) END GetDay; PROCEDURE GetHour (m : tm) : CARDINAL; BEGIN RETURN m2wthour(m) END GetHour; PROCEDURE GetMinute (m : tm) : CARDINAL; BEGIN RETURN m2wtminute(m) END GetMinute; PROCEDURE GetSecond (m : tm) : CARDINAL; BEGIN RETURN m2wtsecond(m) END GetSecond; PROCEDURE SetTimeval (tv : timeval; sec, usec : LONGCARD); BEGIN m2wttvset(tv, sec, usec) END SetTimeval; PROCEDURE SetTimezone (tz : timezone; minuteswest, dsttime : INTEGER); BEGIN m2wttzset(tz, minuteswest, dsttime) END SetTimezone; END wraptime.