-------------------------------------------------------------------------------- ---- GNAT RUN-TIME COMPONENTS ---- ---- A D A . R E A L _ T I M E ---- ---- S p e c ---- ---- Copyright (C) 1992-2009, Free Software Foundation, Inc. ---- ---- This specification is derived from the Ada Reference Manual for use with ---- GNAT. The copyright notice above, and the license provisions that follow ---- apply solely to the contents of the part following the private keyword. ---- ---- GNAT is free software; you can redistribute it and/or modify it under ---- terms of the GNU General Public License as published by the Free Soft- ---- ware Foundation; either version 3, or (at your option) any later ver- ---- sion. GNAT is distributed in the hope that it will be useful, but WITH- ---- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY ---- or FITNESS FOR A PARTICULAR PURPOSE. ---- ---- ---- ---- ---- ---- You should have received a copy of the GNU General Public License and ---- a copy of the GCC Runtime Library Exception along with this program; ---- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ---- <http://www.gnu.org/licenses/>. ---- ---- GNAT was originally developed by the GNAT team at New York University. ---- Extensive contributions were provided by Ada Core Technologies Inc. ---- --------------------------------------------------------------------------------withSystem.Task_Primitives.Operations;pragmaElaborate_All (System.Task_Primitives.Operations);packageAda.Real_TimeistypeTimeisprivate; Time_First :constantTime; Time_Last :constantTime; Time_Unit :constant:= 10#1.0#E-9;typeTime_Spanisprivate; Time_Span_First :constantTime_Span; Time_Span_Last :constantTime_Span; Time_Span_Zero :constantTime_Span; Time_Span_Unit :constantTime_Span; Tick :constantTime_Span;functionClockreturnTime;function"+" (Left : Time; Right : Time_Span)returnTime;function"+" (Left : Time_Span; Right : Time)returnTime;function"-" (Left : Time; Right : Time_Span)returnTime;function"-" (Left : Time; Right : Time)returnTime_Span;function"<" (Left, Right : Time)returnBoolean;function"<=" (Left, Right : Time)returnBoolean;function">" (Left, Right : Time)returnBoolean;function">=" (Left, Right : Time)returnBoolean;function"+" (Left, Right : Time_Span)returnTime_Span;function"-" (Left, Right : Time_Span)returnTime_Span;function"-" (Right : Time_Span)returnTime_Span;function"*" (Left : Time_Span; Right : Integer)returnTime_Span;function"*" (Left : Integer; Right : Time_Span)returnTime_Span;function"/" (Left, Right : Time_Span)returnInteger;function"/" (Left : Time_Span; Right : Integer)returnTime_Span;function"abs" (Right : Time_Span)returnTime_Span;function"<" (Left, Right : Time_Span)returnBoolean;function"<=" (Left, Right : Time_Span)returnBoolean;function">" (Left, Right : Time_Span)returnBoolean;function">=" (Left, Right : Time_Span)returnBoolean;functionTo_Duration (TS : Time_Span)returnDuration;functionTo_Time_Span (D : Duration)returnTime_Span;functionNanoseconds (NS : Integer)returnTime_Span;functionMicroseconds (US : Integer)returnTime_Span;functionMilliseconds (MS : Integer)returnTime_Span;functionSeconds (S : Integer)returnTime_Span;pragmaAda_05 (Seconds);functionMinutes (M : Integer)returnTime_Span;pragmaAda_05 (Minutes);-- Seconds_Count needs 64 bits, since Time has the full range of-- Duration. The delta of Duration is 10 ** (-9), so the maximum-- number of seconds is 2**63/10**9 = 8*10**9 which does not quite-- fit in 32 bits.typeSeconds_Countisrange-2 ** 63 .. 2 ** 63 - 1;procedureSplit (T : Time; SC :outSeconds_Count; TS :outTime_Span);functionTime_Of (SC : Seconds_Count; TS : Time_Span)returnTime;privatetypeTimeisnewDuration; Time_First :constantTime := Time'First; Time_Last :constantTime := Time'Last;typeTime_SpanisnewDuration; Time_Span_First :constantTime_Span := Time_Span'First; Time_Span_Last :constantTime_Span := Time_Span'Last; Time_Span_Zero :constantTime_Span := 0.0; Time_Span_Unit :constantTime_Span := 10#1.0#E-9; Tick :constantTime_Span := Time_Span (System.Task_Primitives.Operations.RT_Resolution);-- Time and Time_Span are represented in 64-bit Duration value in-- in nanoseconds. For example, 1 second and 1 nanosecond is-- represented as the stored integer 1_000_000_001.pragmaImport (Intrinsic, "<");pragmaImport (Intrinsic, "<=");pragmaImport (Intrinsic, ">");pragmaImport (Intrinsic, ">=");pragmaImport (Intrinsic, "abs");pragmaInline (Microseconds);pragmaInline (Milliseconds);pragmaInline (Nanoseconds);pragmaInline (Seconds);pragmaInline (Minutes);endAda.Real_Time;