OSDN Git Service

Add NIOS2 support. Code from SourceyG++.
[pf3gnuchains/gcc-fork.git] / gcc / ada / a-calcon.adb
1 ------------------------------------------------------------------------------
2 --                                                                          --
3 --                         GNAT RUN-TIME COMPONENTS                         --
4 --                                                                          --
5 --              A D A . C A L E N D A R . C O N V E R S I O N S             --
6 --                                                                          --
7 --                                 B o d y                                  --
8 --                                                                          --
9 --        Copyright (C) 2008-2009  Free Software Foundation, Inc.           --
10 --                                                                          --
11 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
12 -- terms of the  GNU General Public License as published  by the Free Soft- --
13 -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
14 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
15 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
16 -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
17 --                                                                          --
18 -- As a special exception under Section 7 of GPL version 3, you are granted --
19 -- additional permissions described in the GCC Runtime Library Exception,   --
20 -- version 3.1, as published by the Free Software Foundation.               --
21 --                                                                          --
22 -- You should have received a copy of the GNU General Public License and    --
23 -- a copy of the GCC Runtime Library Exception along with this program;     --
24 -- see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see    --
25 -- <http://www.gnu.org/licenses/>.                                          --
26 --                                                                          --
27 -- GNAT was originally developed  by the GNAT team at  New York University. --
28 -- Extensive contributions were provided by Ada Core Technologies Inc.      --
29 --                                                                          --
30 ------------------------------------------------------------------------------
31
32 with Interfaces.C; use Interfaces.C;
33
34 package body Ada.Calendar.Conversions is
35
36    -----------------
37    -- To_Ada_Time --
38    -----------------
39
40    function To_Ada_Time (Unix_Time : long) return Time is
41       Val : constant Long_Integer := Long_Integer (Unix_Time);
42    begin
43       return Conversion_Operations.To_Ada_Time (Val);
44    end To_Ada_Time;
45
46    -----------------
47    -- To_Ada_Time --
48    -----------------
49
50    function To_Ada_Time
51      (tm_year  : int;
52       tm_mon   : int;
53       tm_day   : int;
54       tm_hour  : int;
55       tm_min   : int;
56       tm_sec   : int;
57       tm_isdst : int) return Time
58    is
59       Year   : constant Integer := Integer (tm_year);
60       Month  : constant Integer := Integer (tm_mon);
61       Day    : constant Integer := Integer (tm_day);
62       Hour   : constant Integer := Integer (tm_hour);
63       Minute : constant Integer := Integer (tm_min);
64       Second : constant Integer := Integer (tm_sec);
65       DST    : constant Integer := Integer (tm_isdst);
66    begin
67       return
68         Conversion_Operations.To_Ada_Time
69           (Year, Month, Day, Hour, Minute, Second, DST);
70    end To_Ada_Time;
71
72    -----------------
73    -- To_Duration --
74    -----------------
75
76    function To_Duration
77      (tv_sec  : long;
78       tv_nsec : long) return Duration
79    is
80       Secs      : constant Long_Integer := Long_Integer (tv_sec);
81       Nano_Secs : constant Long_Integer := Long_Integer (tv_nsec);
82    begin
83       return Conversion_Operations.To_Duration (Secs, Nano_Secs);
84    end To_Duration;
85
86    ------------------------
87    -- To_Struct_Timespec --
88    ------------------------
89
90    procedure To_Struct_Timespec
91      (D       : Duration;
92       tv_sec  : out long;
93       tv_nsec : out long)
94    is
95       Secs      : Long_Integer;
96       Nano_Secs : Long_Integer;
97
98    begin
99       Conversion_Operations.To_Struct_Timespec (D, Secs, Nano_Secs);
100
101       tv_sec  := long (Secs);
102       tv_nsec := long (Nano_Secs);
103    end To_Struct_Timespec;
104
105    ------------------
106    -- To_Struct_Tm --
107    ------------------
108
109    procedure To_Struct_Tm
110      (T       : Time;
111       tm_year : out int;
112       tm_mon  : out int;
113       tm_day  : out int;
114       tm_hour : out int;
115       tm_min  : out int;
116       tm_sec  : out int)
117    is
118       Year   : Integer;
119       Month  : Integer;
120       Day    : Integer;
121       Hour   : Integer;
122       Minute : Integer;
123       Second : Integer;
124
125    begin
126       Conversion_Operations.To_Struct_Tm
127         (T, Year, Month, Day, Hour, Minute, Second);
128
129       tm_year := int (Year);
130       tm_mon  := int (Month);
131       tm_day  := int (Day);
132       tm_hour := int (Hour);
133       tm_min  := int (Minute);
134       tm_sec  := int (Second);
135    end To_Struct_Tm;
136
137    ------------------
138    -- To_Unix_Time --
139    ------------------
140
141    function To_Unix_Time (Ada_Time : Time) return long is
142       Val : constant Long_Integer :=
143               Conversion_Operations.To_Unix_Time (Ada_Time);
144    begin
145       return long (Val);
146    end To_Unix_Time;
147
148 end Ada.Calendar.Conversions;