home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 5
/
ctrom5b.zip
/
ctrom5b
/
PROGRAM
/
ADA
/
GNAT200
/
ADAINC
/
S-TASCLO.ADB
< prev
next >
Wrap
Text File
|
1994-11-30
|
5KB
|
170 lines
------------------------------------------------------------------------------
-- --
-- GNU ADA RUNTIME LIBRARY (GNARL) COMPONENTS --
-- --
-- S Y S T E M . T A S K _ C L O C K --
-- --
-- B o d y --
-- --
-- $Revision: 1.11 $ --
-- --
-- Copyright (c) 1991,1992,1993,1994, FSU, All Rights Reserved --
-- --
-- GNARL is free software; you can redistribute it and/or modify it under --
-- terms of the GNU Library General Public License as published by the --
-- Free Software Foundation; either version 2, or (at your option) any --
-- later version. GNARL is distributed in the hope that it will be use- --
-- ful, but but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Gen- --
-- eral Library Public License for more details. You should have received --
-- a copy of the GNU Library General Public License along with GNARL; see --
-- file COPYING.LIB. If not, write to the Free Software Foundation, 675 --
-- Mass Ave, Cambridge, MA 02139, USA. --
-- --
------------------------------------------------------------------------------
package body System.Task_Clock is
-----------------------
-- Stimespec_Seconds --
-----------------------
function Stimespec_Seconds (TV : Stimespec) return Integer is
begin
return Integer (TV.Val / Stimespec_Sec_Unit.Val);
end Stimespec_Seconds;
------------------------
-- Stimespec_Nseconds --
-------------------------
function Stimespec_NSeconds (TV : Stimespec) return Integer is
begin
return
Integer (TV.Val - Time_Base (Stimespec_Seconds (TV)) *
Stimespec_Sec_Unit.Val);
end Stimespec_NSeconds;
-------------
-- Time_Of --
-------------
function Time_Of (S, NS : Integer) return Stimespec is
begin
return Stimespec' (Val => Stimespec_Sec_Unit.Val * Time_Base (S) +
Time_Base (NS));
end Time_Of;
---------------------------
-- Stimespec_To_Duration --
---------------------------
function Stimespec_To_Duration (TV : Stimespec) return Duration is
begin
return Duration (long_float (TV.Val) / 10#1.0#E9);
end Stimespec_To_Duration;
---------------------------
-- Duration_To_Stimespec --
---------------------------
function Duration_To_Stimespec (Time : Duration) return Stimespec is
begin
return Stimespec' (Val => Time_Base (Time * 10#1.0#E9));
end Duration_To_Stimespec;
---------
-- "-" --
---------
-- Unary minus
function "-" (TV : Stimespec) return Stimespec is
begin
return Stimespec' (Val => -TV.Val);
end "-";
---------
-- "+" --
---------
function "+" (LTV, RTV : Stimespec) return Stimespec is
begin
return Stimespec' (Val => LTV.Val + RTV.Val);
end "+";
---------
-- "-" --
---------
function "-" (LTV, RTV : Stimespec) return Stimespec is
begin
return Stimespec' (Val => LTV.Val - RTV.Val);
end "-";
---------
-- "*" --
---------
function "*" (TV : Stimespec; N : Integer) return Stimespec is
begin
return Stimespec' (Val => TV.Val * Time_Base (N));
end "*";
---------
-- "/" --
---------
-- Integer division of Stimespec
function "/" (TV : Stimespec; N : Integer) return Stimespec is
begin
return Stimespec' (Val => TV.Val / Time_Base (N));
end "/";
---------
-- "/" --
---------
function "/" (LTV, RTV : Stimespec) return Integer is
begin
return Integer (LTV.Val / RTV.Val);
end "/";
---------
-- "<" --
---------
function "<" (LTV, RTV : Stimespec) return Boolean is
begin
return LTV.Val < RTV.Val;
end "<";
----------
-- "<=" --
----------
function "<=" (LTV, RTV : Stimespec) return Boolean is
begin
return LTV.Val < RTV.Val or else RTV.Val = LTV.Val;
end "<=";
---------
-- ">" --
---------
function ">" (LTV, RTV : Stimespec) return Boolean is
begin
return RTV.Val < LTV.Val;
end ">";
----------
-- ">=" --
----------
function ">=" (LTV, RTV : Stimespec) return Boolean is
begin
return LTV.Val > RTV.Val or LTV.Val = RTV.Val;
end ">=";
end System.Task_Clock;