DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦22212cb02⟧ TextFile

    Length: 13811 (0x35f3)
    Types: TextFile
    Names: »V«

Derivation

└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
    └─ ⟦77aa8350c⟧ »DATA« 
        └─⟦f794ecd1d⟧ 
            └─⟦4c85d69e2⟧ 
                └─⟦this⟧ 

TextFile

--    The use of this system is subject to the software license terms and
--    conditions agreed upon between Rational and the Customer.
--
--                Copyright 1988 by Rational.
--
--                          RESTRICTED RIGHTS LEGEND
--
--    Use, duplication, or disclosure by the Government is subject to
--    restrictions as set forth in subdivision (b)(3)(ii) of the Rights in
--    Technical Data and Computer Software clause at 52.227-7013.
--
--
--                Rational
--                3320 Scott Boulevard
--                Santa Clara, California 95054-3197
--
--   PROPRIETARY AND CONFIDENTIAL INFORMATION OF RATIONAL;
--   USE OR COPYING WITHOUT EXPRESS WRITTEN AUTHORIZATION
--   IS STRICTLY PROHIBITED.  THIS MATERIAL IS PROTECTED AS
--   AN UNPUBLISHED WORK UNDER THE U.S. COPYRIGHT ACT OF
--   1976.  CREATED 1988.  ALL RIGHTS RESERVED.
--
--

with System_Types;
with Device_Independent_Io;

package Common_Text_Io is

    -- The specification of the package Text_Io is given by the Ada LRM.
    -- This package is used to implement Text_Io.  The miscellaneous types
    -- defined here are equivalent to the types from Text_Io, except for
    -- File_Type.  File_Type has a visible representation as a rename of
    -- Device_Independent_Io.File_Type.  Most entries of Text_Io convert
    -- the File_Type parameter and call the appropriate entry of this package.


    subtype File_Type is Device_Independent_Io.File_Type;

    type File_Mode is (In_File, Out_File);

    type    Count          is range 0 .. 1_000_000_000;
    subtype Positive_Count is Count range 1 .. Count'Last;

    Unbounded : constant Count := 0;

    subtype Field       is Integer range 0 .. Integer'Last;
    subtype Number_Base is Integer range 2 .. 16;

    type Type_Set is (Lower_Case, Upper_Case);

    -- File Management

    procedure Create (File : in out File_Type;
                      Mode :        File_Mode := Out_File;
                      Name :        String    := "";
                      Form :        String    := "");

    procedure Open (File : in out File_Type;
                    Mode :        File_Mode := Out_File;
                    Name :        String;
                    Form :        String    := "");

    procedure Append
                 (File : in out File_Type; Name : String; Form : String := "");

    -- Open existing file for output, positioned at end of file; not Text_Io
    -- Output starting after an Append is on a new line, but on the same page
    -- as the previous end of the file

    procedure Flush (File : File_Type; Clear_Terminators : Boolean := True);
    -- Force any buffer characters out to file
    -- Clear_Terminators => the file is about to be closed/reset, so
    -- the buffer is completely cleared.  False causes a Line_Feed (if any)
    -- to be retained

    procedure Save (File : File_Type);
    -- Save the current contents of the file, but leave it open; calls Flush
    -- with Clear_Terminators = False.


    procedure Close  (File : in out File_Type);
    procedure Delete (File : in out File_Type);
    procedure Reset  (File : in out File_Type; Mode : File_Mode);
    procedure Reset  (File : in out File_Type);

    function Mode (File : File_Type) return File_Mode;
    function Name (File : File_Type) return String;
    function Form (File : File_Type) return String;

    function Is_Open (File : File_Type) return Boolean;


    -- Control of default input and output files

    procedure Set_Input  (File : File_Type);
    procedure Set_Output (File : File_Type);
    procedure Set_Error  (File : File_Type);

    function Standard_Input  return File_Type;
    function Standard_Output return File_Type;
    function Standard_Error  return File_Type;

    function Current_Input  return File_Type;
    function Current_Output return File_Type;
    function Current_Error  return File_Type;


    -- Specification of line and page lengths

    procedure Set_Line_Length (File : File_Type; To : Count);
    procedure Set_Line_Length (To : Count);

    procedure Set_Page_Length (File : File_Type; To : Count);
    procedure Set_Page_Length (To : Count);

    function Line_Length (File : File_Type) return Count;
    function Line_Length                    return Count;

    function Page_Length (File : File_Type) return Count;
    function Page_Length                    return Count;


    -- Column, Line and Page Control

    procedure New_Line (File : File_Type; Spacing : Positive_Count := 1);
    procedure New_Line (Spacing : Positive_Count := 1);

    procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1);
    procedure Skip_Line (Spacing : Positive_Count := 1);

    function End_Of_Line (File : File_Type) return Boolean;
    function End_Of_Line                    return Boolean;

    procedure New_Page (File : File_Type);
    procedure New_Page;

    procedure Skip_Page (File : File_Type);
    procedure Skip_Page;

    function End_Of_Page (File : File_Type) return Boolean;
    function End_Of_Page                    return Boolean;

    function End_Of_File (File : File_Type) return Boolean;
    function End_Of_File                    return Boolean;


    procedure Set_Col (File : File_Type; To : Positive_Count);
    procedure Set_Col (To : Positive_Count);

    procedure Set_Line (File : File_Type; To : Positive_Count);
    procedure Set_Line (To : Positive_Count);


    function Col (File : File_Type) return Positive_Count;
    function Col                    return Positive_Count;

    function Line (File : File_Type) return Positive_Count;
    function Line                    return Positive_Count;

    function Page (File : File_Type) return Positive_Count;
    function Page                    return Positive_Count;

    -- Character Input-Output

    procedure Get (File : File_Type; Item : out Character);
    procedure Get (Item : out Character);
    procedure Put (File : File_Type; Item : Character);
    procedure Put (Item : Character);

    procedure Get_Any (File : File_Type; Item : out Character);
    -- Does not interpret control characters as terminators

    -- String Input-Output

    procedure Get (File : File_Type; Item : out String);
    procedure Get (Item : out String);
    procedure Put (File : File_Type; Item : String);
    procedure Put (Item : String);

    procedure Get_Line
                 (File : File_Type; Item : out String; Last : out Natural);
    procedure Get_Line (Item : out String; Last : out Natural);

    function Get_Line (File : File_Type) return String;
    function Get_Line                    return String;


    procedure Get (File        :     File_Type;
                   Item        : out String;
                   Last        : out Natural;
                   End_Of_Line : out Boolean;
                   End_Of_Page : out Boolean;
                   End_Of_File : out Boolean);
    -- Get all or part of a line.
    -- End_Of_Line iff Item contains the last characters of the line (possibly 0)
    -- End_Of_Page iff End_Of_Line and this is the last line of the page
    -- End_Of_File iff End_Of_Page and this is the last page of the file
    --
    -- The intent if for each call to return as many characters from the
    -- current line as possible, but Last /= Item'Last doesn't implies End_Of_Line


    procedure Put_Line (File : File_Type; Item : String);
    procedure Put_Line (Item : String);


    -- Integer Input-Output

    package Integer_Io is

        subtype Long_Integer is System_Types.Long_Integer;

        procedure Get (File  : in  File_Type;
                       Item  : out Long_Integer;
                       Width : in  Field);

        procedure Get (From : in  String;
                       Item : out Long_Integer;
                       Last : out Positive);

        procedure Put (File  : in File_Type;
                       Item  : in Long_Integer;
                       Width : in Field;
                       Base  : in Number_Base);

        procedure Put (To   : out String;
                       Item : in  Long_Integer;
                       Base : in  Number_Base);

    private
        pragma Suppress (Elaboration_Check, On => Get);
        pragma Suppress (Elaboration_Check, On => Put);
    end Integer_Io;


    -- Generic package for Floating Point Input-Output

    generic
        type Float is digits <>;
        with function  Value (S : in String) return Float;
        with procedure Image (Item        : in  Float;
                              Fore        : in  Field;
                              Aft         : in  Field;
                              Exp         : in  Field;
                              Result_Str  : out String;
                              Result_Last : out Natural);
    package Float_Io is

        procedure Get (File : in File_Type; Item : out Float; Width : in Field);

        procedure Put (File : in File_Type;
                       Item : in Float;
                       Fore : in Field;
                       Aft  : in Field;
                       Exp  : in Field);

        procedure Get (From : in String; Item : out Float; Last : out Positive);

        procedure Put (To   : out String;
                       Item : in  Float;
                       Aft  : in  Field;
                       Exp  : in  Field);

    private
        pragma Suppress (Elaboration_Check, On => Get);
        pragma Suppress (Elaboration_Check, On => Put);
    end Float_Io;


    -- Generic package for Input-Output of Enumeration Types

    generic
        type Enum is (<>);
    package Enumeration_Io is

        Default_Width   : Field    := 0;
        Default_Setting : Type_Set := Upper_Case;

        procedure Get (File : File_Type; Item : out Enum);
        procedure Get (Item : out Enum);

        procedure Put (File  : File_Type;
                       Item  : Enum;
                       Width : Field    := Default_Width;
                       Set   : Type_Set := Default_Setting);

        procedure Put (Item  : Enum;
                       Width : Field    := Default_Width;
                       Set   : Type_Set := Default_Setting);

        procedure Get (From : String; Item : out Enum; Last : out Positive);

        procedure Put (To   : out String;
                       Item :     Enum;
                       Set  :     Type_Set := Default_Setting);

    private
        pragma Suppress (Elaboration_Check, On => Get);
        pragma Suppress (Elaboration_Check, On => Put);
    end Enumeration_Io;



    -- Non-generic package for Input-Output of Enumeration Types

    package Enum_Io is

        procedure Get (File        : in  File_Type;
                       Item        : out String;
                       Item_Length : out Natural);

        procedure Get (From        : in  String;
                       Item        : out String;
                       Item_Length : out Natural;
                       Last        : out Positive);

        procedure Put (File  : in File_Type;
                       Item  : in String;
                       Width : in Field;
                       Set   : in Type_Set);

        procedure Put (To : out String; Item : in String; Set : in Type_Set);

    private
        pragma Suppress (Elaboration_Check, On => Get);
        pragma Suppress (Elaboration_Check, On => Put);
    end Enum_Io;

private

    pragma Suppress (Elaboration_Check, On => Create);
    pragma Suppress (Elaboration_Check, On => Open);
    pragma Suppress (Elaboration_Check, On => Append);
    pragma Suppress (Elaboration_Check, On => Flush);
    pragma Suppress (Elaboration_Check, On => Save);
    pragma Suppress (Elaboration_Check, On => Close);
    pragma Suppress (Elaboration_Check, On => Delete);
    pragma Suppress (Elaboration_Check, On => Reset);
    pragma Suppress (Elaboration_Check, On => Mode);
    pragma Suppress (Elaboration_Check, On => Name);
    pragma Suppress (Elaboration_Check, On => Form);
    pragma Suppress (Elaboration_Check, On => Is_Open);
    pragma Suppress (Elaboration_Check, On => Set_Input);
    pragma Suppress (Elaboration_Check, On => Set_Output);
    pragma Suppress (Elaboration_Check, On => Set_Error);
    pragma Suppress (Elaboration_Check, On => Standard_Input);
    pragma Suppress (Elaboration_Check, On => Standard_Output);
    pragma Suppress (Elaboration_Check, On => Standard_Error);
    pragma Suppress (Elaboration_Check, On => Current_Input);
    pragma Suppress (Elaboration_Check, On => Current_Output);
    pragma Suppress (Elaboration_Check, On => Current_Error);
    pragma Suppress (Elaboration_Check, On => Set_Line_Length);
    pragma Suppress (Elaboration_Check, On => Set_Page_Length);
    pragma Suppress (Elaboration_Check, On => Line_Length);
    pragma Suppress (Elaboration_Check, On => Page_Length);
    pragma Suppress (Elaboration_Check, On => New_Line);
    pragma Suppress (Elaboration_Check, On => Skip_Line);
    pragma Suppress (Elaboration_Check, On => End_Of_Line);
    pragma Suppress (Elaboration_Check, On => New_Page);
    pragma Suppress (Elaboration_Check, On => Skip_Page);
    pragma Suppress (Elaboration_Check, On => End_Of_Page);
    pragma Suppress (Elaboration_Check, On => End_Of_File);
    pragma Suppress (Elaboration_Check, On => Set_Col);
    pragma Suppress (Elaboration_Check, On => Set_Line);
    pragma Suppress (Elaboration_Check, On => Col);
    pragma Suppress (Elaboration_Check, On => Line);
    pragma Suppress (Elaboration_Check, On => Page);
    pragma Suppress (Elaboration_Check, On => Get);
    pragma Suppress (Elaboration_Check, On => Put);  
    pragma Suppress (Elaboration_Check, On => Get_Any);
    pragma Suppress (Elaboration_Check, On => Get_Line);
    pragma Suppress (Elaboration_Check, On => Put_Line);

end Common_Text_Io;