File : 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-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 --                                                                          --
  19 --                                                                          --
  20 --                                                                          --
  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;