home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gnat-2.06-src.tgz / tar.out / fsf / gnat / ada / g-io.adb < prev    next >
Text File  |  1996-09-28  |  4KB  |  126 lines

  1. ------------------------------------------------------------------------------
  2. --                                                                          --
  3. --                         GNAT RUNTIME COMPONENTS                          --
  4. --                                                                          --
  5. --                              G N A T . I O                               --
  6. --                                                                          --
  7. --                                 B o d y                                  --
  8. --                                                                          --
  9. --                            $Revision: 1.5 $                              --
  10. --                                                                          --
  11. --        Copyright (c) 1992,1993,1994,1995 NYU, All Rights Reserved        --
  12. --                                                                          --
  13. -- The GNAT library is free software; you can redistribute it and/or modify --
  14. -- it under terms of the GNU Library General Public License as published by --
  15. -- the Free Software  Foundation; either version 2, or (at your option) any --
  16. -- later version.  The GNAT library is distributed in the hope that it will --
  17. -- be useful, but WITHOUT ANY WARRANTY;  without even  the implied warranty --
  18. -- of MERCHANTABILITY  or  FITNESS FOR  A PARTICULAR PURPOSE.  See the  GNU --
  19. -- Library  General  Public  License for  more  details.  You  should  have --
  20. -- received  a copy of the GNU  Library  General Public License  along with --
  21. -- the GNAT library;  see the file  COPYING.LIB.  If not, write to the Free --
  22. -- Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.        --
  23. --                                                                          --
  24. ------------------------------------------------------------------------------
  25.  
  26. package body GNAT.IO is
  27.  
  28.    ---------
  29.    -- Get --
  30.    ---------
  31.  
  32.    procedure Get (X : out Integer) is
  33.  
  34.       function Get_Int return Integer;
  35.       pragma Import (C, Get_Int, "get_int");
  36.  
  37.    begin
  38.       X := Get_Int;
  39.    end Get;
  40.  
  41.    procedure Get (C : out Character) is
  42.  
  43.       function Get_Char return Character;
  44.       pragma Import (C, Get_Char, "get_char");
  45.  
  46.    begin
  47.       C := Get_Char;
  48.    end Get;
  49.  
  50.    --------------
  51.    -- Get_Line --
  52.    --------------
  53.  
  54.    procedure Get_Line (Item : in out String; Last : out Natural) is
  55.       I_Length : Integer := Item'Length;
  56.       Nstore   : Integer := 0;
  57.       C        : Character;
  58.  
  59.    begin
  60.       loop
  61.          Get (C);
  62.          exit when Nstore = I_Length;
  63.  
  64.          if C = Ascii.LF then
  65.             exit;
  66.          end if;
  67.  
  68.          Item (Item'First + Nstore) := C;
  69.          Nstore := Nstore + 1;
  70.       end loop;
  71.  
  72.       Last := Item'First + Nstore - 1;
  73.    end Get_Line;
  74.  
  75.    --------------
  76.    -- New_Line --
  77.    --------------
  78.  
  79.    procedure New_Line (Spacing : Positive := 1) is
  80.    begin
  81.       for J in 1 .. Spacing loop
  82.          Put (Ascii.LF);
  83.       end loop;
  84.    end New_Line;
  85.  
  86.    ---------
  87.    -- Put --
  88.    ---------
  89.  
  90.    procedure Put (X : Integer) is
  91.  
  92.       procedure Put_Int (X : Integer);
  93.       pragma Import (C, Put_Int, "put_int");
  94.  
  95.    begin
  96.       Put_Int (X);
  97.    end Put;
  98.  
  99.    procedure Put (C : Character) is
  100.  
  101.       procedure Put_Char (C : Character);
  102.       pragma Import (C, Put_Char, "put_char");
  103.  
  104.    begin
  105.       Put_Char (C);
  106.    end Put;
  107.  
  108.    procedure Put (S : String) is
  109.    begin
  110.       for J in S'Range loop
  111.          Put (S (J));
  112.       end loop;
  113.    end Put;
  114.  
  115.    --------------
  116.    -- Put_Line --
  117.    --------------
  118.  
  119.    procedure Put_Line (S : String) is
  120.    begin
  121.       Put (S);
  122.       New_Line;
  123.    end Put_Line;
  124.  
  125. end GNAT.IO;
  126.