OSDN Git Service

2010-04-06 Matthias Klose <doko@ubuntu.com>
[pf3gnuchains/gcc-fork.git] / gcc / ada / g-calend.ads
index 16548db..39ca203 100644 (file)
@@ -6,30 +6,26 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                            $Revision: 1.5 $
---                                                                          --
---          Copyright (C) 1999-2001 Free Software Foundation, Inc.          --
+--          Copyright (C) 1999-2009, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
--- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
--- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT;  see file COPYING.  If not, write --
--- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
--- MA 02111-1307, USA.                                                      --
+-- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+--                                                                          --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception,   --
+-- version 3.1, as published by the Free Software Foundation.               --
 --                                                                          --
--- As a special exception,  if other files  instantiate  generics from this --
--- unit, or you link  this unit with other files  to produce an executable, --
--- this  unit  does not  by itself cause  the resulting  executable  to  be --
--- covered  by the  GNU  General  Public  License.  This exception does not --
--- however invalidate  any other reasons why  the executable file  might be --
--- covered by the  GNU Public License.                                      --
+-- You should have received a copy of the GNU General Public License and    --
+-- a copy of the GCC Runtime Library Exception along with this program;     --
+-- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
+-- <http://www.gnu.org/licenses/>.                                          --
 --                                                                          --
 -- GNAT was originally developed  by the GNAT team at  New York University. --
--- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
 --                                                                          --
 ------------------------------------------------------------------------------
 
@@ -41,7 +37,7 @@
 --  Ada.Calendar. It provides Split and Time_Of to build and split a Time
 --  data. And it provides accessor functions to get only one of Hour, Minute,
 --  Second, Second_Duration. Other functions are to access more advanced
---  valueas like Day_Of_Week, Day_In_Year and Week_In_Year.
+--  values like Day_Of_Week, Day_In_Year and Week_In_Year.
 
 with Ada.Calendar;
 with Interfaces.C;
@@ -58,24 +54,25 @@ package GNAT.Calendar is
    subtype Day_In_Year_Number  is Positive range 1 .. 366;
    subtype Week_In_Year_Number is Positive range 1 .. 53;
 
+   No_Time : constant Ada.Calendar.Time;
+   --  A constant set to the first date that can be represented by the type
+   --  Time. It can be used to indicate an uninitialized date.
+
    function Hour       (Date : Ada.Calendar.Time) return Hour_Number;
    function Minute     (Date : Ada.Calendar.Time) return Minute_Number;
    function Second     (Date : Ada.Calendar.Time) return Second_Number;
    function Sub_Second (Date : Ada.Calendar.Time) return Second_Duration;
-   --  Hour, Minute, Sedond and Sub_Second returns the complete time data for
+   --  Hour, Minute, Second and Sub_Second returns the complete time data for
    --  the Date (H:M:S.SS). See Ada.Calendar for Year, Month, Day accessors.
    --  Second_Duration precision depends on the target clock precision.
 
    function Day_Of_Week (Date : Ada.Calendar.Time) return Day_Name;
-   --  Return the day name.
+   --  Return the day name
 
    function Day_In_Year (Date : Ada.Calendar.Time) return Day_In_Year_Number;
-   --  Returns the day number in the year. (1st January is day 1 and 31st
+   --  Return the day number in the year. (1st January is day 1 and 31st
    --  December is day 365 or 366 for leap year).
 
-   function Week_In_Year (Date : Ada.Calendar.Time) return Week_In_Year_Number;
-   --  Returns the week number in the year with Monday as first day of week
-
    procedure Split
      (Date       : Ada.Calendar.Time;
       Year       : out Ada.Calendar.Year_Number;
@@ -95,9 +92,24 @@ package GNAT.Calendar is
       Hour       : Hour_Number;
       Minute     : Minute_Number;
       Second     : Second_Number;
-      Sub_Second : Second_Duration := 0.0)
-      return Ada.Calendar.Time;
-   --  Returns an Ada.Calendar.Time data built from the date and time values.
+      Sub_Second : Second_Duration := 0.0) return Ada.Calendar.Time;
+   --  Return an Ada.Calendar.Time data built from the date and time values
+
+   function Week_In_Year (Date : Ada.Calendar.Time) return Week_In_Year_Number;
+   --  Return the week number as defined in ISO 8601. A week always starts on
+   --  a Monday and the first week of a particular year is the one containing
+   --  the first Thursday. A year may have 53 weeks when January 1st is a
+   --  Wednesday and the year is leap or January 1st is a Thursday. Note that
+   --  the last days of December may belong to the first week on the next year
+   --  and conversely, the first days of January may belong to the last week
+   --  of the last year.
+
+   procedure Year_Week_In_Year
+     (Date : Ada.Calendar.Time;
+      Year : out Ada.Calendar.Year_Number;
+      Week : out Week_In_Year_Number);
+   --  Return the week number as defined in ISO 8601 along with the year in
+   --  which the week occurs.
 
    --  C timeval conversion
 
@@ -109,7 +121,7 @@ package GNAT.Calendar is
 
    type timeval is private;
 
-   function To_Duration (T : access timeval) return Duration;
+   function To_Duration (T : not null access timeval) return Duration;
    function To_Timeval  (D : Duration) return timeval;
 
 private
@@ -121,11 +133,17 @@ private
    function Julian_Day
      (Year  : Ada.Calendar.Year_Number;
       Month : Ada.Calendar.Month_Number;
-      Day   : Ada.Calendar.Day_Number)
-      return  Integer;
-   --  Compute Julian day number.
+      Day   : Ada.Calendar.Day_Number) return Integer;
+   --  Compute Julian day number
    --
-   --  The code of this function is a modified version of algorithm
-   --  199 from the Collected Algorithms of the ACM.
-   --  The author of algorithm 199 is Robert G. Tantzen.
+   --  The code of this function is a modified version of algorithm 199 from
+   --  the Collected Algorithms of the ACM. The author of algorithm 199 is
+   --  Robert G. Tantzen.
+
+   No_Time : constant Ada.Calendar.Time :=
+               Ada.Calendar.Time_Of
+                 (Ada.Calendar.Year_Number'First,
+                  Ada.Calendar.Month_Number'First,
+                  Ada.Calendar.Day_Number'First);
+
 end GNAT.Calendar;