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-2012, 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 32with Interfaces.C; use Interfaces.C; 33 34package 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 148end Ada.Calendar.Conversions; 149