101 lines
3.8 KiB
Ada
101 lines
3.8 KiB
Ada
------------------------------------------------------------------------------
|
|
-- --
|
|
-- GNAT RUNTIME COMPONENTS --
|
|
-- --
|
|
-- A D A . C A L E N D A R --
|
|
-- --
|
|
-- S p e c --
|
|
-- --
|
|
-- --
|
|
-- This specification is adapted from the Ada Reference Manual for use with --
|
|
-- GNAT. In accordance with the copyright of that document, you can freely --
|
|
-- copy and modify this specification, provided that if you redistribute a --
|
|
-- modified version, any changes that you have made are clearly indicated. --
|
|
-- --
|
|
------------------------------------------------------------------------------
|
|
|
|
-- This is the Alpha/VMS version.
|
|
|
|
with System.OS_Primitives;
|
|
package Ada.Calendar is
|
|
|
|
package OSP renames System.OS_Primitives;
|
|
|
|
type Time is private;
|
|
|
|
-- Declarations representing limits of allowed local time values. Note that
|
|
-- these do NOT constrain the possible stored values of time which may well
|
|
-- permit a larger range of times (this is explicitly allowed in Ada 95).
|
|
|
|
subtype Year_Number is Integer range 1901 .. 2099;
|
|
subtype Month_Number is Integer range 1 .. 12;
|
|
subtype Day_Number is Integer range 1 .. 31;
|
|
|
|
subtype Day_Duration is Duration range 0.0 .. 86_400.0;
|
|
|
|
function Clock return Time;
|
|
|
|
function Year (Date : Time) return Year_Number;
|
|
function Month (Date : Time) return Month_Number;
|
|
function Day (Date : Time) return Day_Number;
|
|
function Seconds (Date : Time) return Day_Duration;
|
|
|
|
procedure Split
|
|
(Date : Time;
|
|
Year : out Year_Number;
|
|
Month : out Month_Number;
|
|
Day : out Day_Number;
|
|
Seconds : out Day_Duration);
|
|
|
|
function Time_Of
|
|
(Year : Year_Number;
|
|
Month : Month_Number;
|
|
Day : Day_Number;
|
|
Seconds : Day_Duration := 0.0)
|
|
return Time;
|
|
|
|
function "+" (Left : Time; Right : Duration) return Time;
|
|
function "+" (Left : Duration; Right : Time) return Time;
|
|
function "-" (Left : Time; Right : Duration) return Time;
|
|
function "-" (Left : Time; Right : Time) return Duration;
|
|
|
|
function "<" (Left, Right : Time) return Boolean;
|
|
function "<=" (Left, Right : Time) return Boolean;
|
|
function ">" (Left, Right : Time) return Boolean;
|
|
function ">=" (Left, Right : Time) return Boolean;
|
|
|
|
Time_Error : exception;
|
|
|
|
private
|
|
|
|
pragma Inline (Clock);
|
|
|
|
pragma Inline (Year);
|
|
pragma Inline (Month);
|
|
pragma Inline (Day);
|
|
|
|
pragma Inline ("+");
|
|
pragma Inline ("-");
|
|
|
|
pragma Inline ("<");
|
|
pragma Inline ("<=");
|
|
pragma Inline (">");
|
|
pragma Inline (">=");
|
|
|
|
-- Time is represented as the number of 100-nanosecond (ns) units offset
|
|
-- from the system base date and time, which is 00:00 o'clock,
|
|
-- November 17, 1858 (the Smithsonian base date and time for the
|
|
-- astronomic calendar).
|
|
|
|
-- The time value stored is typically a GMT value, as provided in standard
|
|
-- Unix environments. If this is the case then Split and Time_Of perform
|
|
-- required conversions to and from local times.
|
|
|
|
type Time is new OSP.OS_Time;
|
|
|
|
-- Notwithstanding this definition, Time is not quite the same as OS_Time.
|
|
-- Relative Time is positive, whereas relative OS_Time is negative,
|
|
-- but this declaration makes for easier conversion.
|
|
|
|
end Ada.Calendar;
|