This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer
- From: Pierre-Marie de Rodat <derodat at adacore dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: Dmitriy Anisimkov <anisimko at adacore dot com>
- Date: Mon, 19 Aug 2019 04:39:02 -0400
- Subject: [Ada] Conversion routines between GNAT.OS_Lib.OS_Time and long integer
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.
--- 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;