[Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer
diff mbox series

Message ID 20190819083902.GA33534@adacore.com
State New
Headers show
Series
  • [Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer
Related show

Commit Message

Pierre-Marie de Rodat Aug. 19, 2019, 8:39 a.m. UTC
The new routines convert back and forth between private type OS_Time and
a long integer which can be used in package Ada.Calendar.Conversions
routines to convert to Ada.Calendar.Time.

Tested on x86_64-pc-linux-gnu, committed on trunk

2019-08-19  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	* libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New
	routines.

Patch
diff mbox series

--- gcc/ada/libgnat/s-os_lib.adb
+++ gcc/ada/libgnat/s-os_lib.adb
@@ -2979,6 +2979,15 @@  package body System.OS_Lib is
       end loop;
    end Spawn_Internal;
 
+   ------------
+   -- To_Ada --
+   ------------
+
+   function To_Ada (Time : time_t) return OS_Time is
+   begin
+      return OS_Time (Time);
+   end To_Ada;
+
    ---------------------------
    -- To_Path_String_Access --
    ---------------------------
@@ -3008,6 +3017,15 @@  package body System.OS_Lib is
       return Return_Val;
    end To_Path_String_Access;
 
+   ----------
+   -- To_C --
+   ----------
+
+   function To_C (Time : OS_Time) return time_t is
+   begin
+      return time_t (Time);
+   end To_C;
+
    ------------------
    -- Wait_Process --
    ------------------

--- gcc/ada/libgnat/s-os_lib.ads
+++ gcc/ada/libgnat/s-os_lib.ads
@@ -164,6 +164,15 @@  package System.OS_Lib is
    --  component parts to be interpreted in the local time zone, and returns
    --  an OS_Time. Returns Invalid_Time if the creation fails.
 
+   subtype time_t is Long_Integer;
+   --  C time_t type of the time representation
+
+   function To_C (Time : OS_Time) return time_t;
+   --  Convert OS_Time to C time_t type
+
+   function To_Ada (Time : time_t) return OS_Time;
+   --  Convert C time_t type to OS_Time
+
    ----------------
    -- File Stuff --
    ----------------
@@ -1107,6 +1116,8 @@  private
    pragma Inline (">");
    pragma Inline ("<=");
    pragma Inline (">=");
+   pragma Inline (To_C);
+   pragma Inline (To_Ada);
 
    type Process_Id is new Integer;
    Invalid_Pid : constant Process_Id := -1;