DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦558d8a656⟧ Ada Source

    Length: 12288 (0x3000)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package Interface_Analysis, seg_020c10

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦5a81ac88f⟧ »Space Info Vol 1« 
        └─⟦this⟧ 

E3 Source Code



--| @SUMMARY Builds a database containing semantic information about
--|          types and declarations in a package spec.
--|
with Ada_Program;
with Unbounded_String;
with Declaration_Table;
with Declarations;
with Type_Information;

package Interface_Analysis is

    type Database is private;

    procedure Analyze (Declarations_In_Package : String := "<SELECTION>";
                       Db : in out Database);
    --|
    --| @PARAMETERS Declarations_In_Package =>
    --|                The pathname of a package that contains visible
    --|                declarations.
    --| @SPECIAL_NOTES Only non-generic subprograms and exceptions are
    --|                valid.

    procedure Add_Other_Exceptions
                 (Declaration_List :        String := ">>WILDCARD REFERENCE<<";
                  Db               : in out Database);

    type Reference_Iterator is private;

    procedure Init (From_Db : Database; Iter : in out Reference_Iterator);
    function  Done (Iter : Reference_Iterator) return Boolean;
    function  Referenced_Unit (Iter : Reference_Iterator)
                             return Ada_Program.Compilation_Unit;
    function  Reference (Iter : Reference_Iterator) return String;
    procedure Next (Iter : in out Reference_Iterator);

    type Id_Iterator is private;

    function  Done      (Iter : Id_Iterator) return Boolean;
    function  Reference (Iter : Id_Iterator) return String;
    function  Name      (Iter : Id_Iterator) return String;
    procedure Next      (Iter : in out Id_Iterator);

    type Exception_Iterator is private;

    procedure Init (From_Db : Database; Iter : in out Exception_Iterator);
    function  Done (Iter : Exception_Iterator) return Boolean;
    function  Names (Iter : Exception_Iterator) return Id_Iterator;
    function  Unique_Name (Iter : Exception_Iterator) return String;

    function  Reference (Iter : Exception_Iterator) return String;
    procedure Next      (Iter : in out Exception_Iterator);

    subtype Parameter_Mode is Declarations.Subprogram_Parameter_Kinds;
    subtype Type_Kind      is Type_Information.Type_Definition_Kinds;

    subtype Type_Decl is Declarations.Type_Declaration;

    function Reference (Of_Type : Type_Decl) return String;
    function Name      (Of_Type : Type_Decl) return String;
    function Kind      (Of_Type : Type_Decl) return Type_Kind;

    type Parameter_Iterator is private;

    function Done          (Iter : Parameter_Iterator) return Boolean;
    function Names         (Iter : Parameter_Iterator) return Id_Iterator;
    function Formals_Image (Iter : Parameter_Iterator) return String;

    function  Formals_Type_Decl (Iter : Parameter_Iterator) return Type_Decl;
    function  Mode (Iter : Parameter_Iterator) return Parameter_Mode;
    function  Initial_Expression (Iter : Parameter_Iterator) return String;
    function  Image (Iter : Parameter_Iterator) return String;
    procedure Next (Iter : in out Parameter_Iterator);

    type Subprogram_Kind is (A_Procedure, A_Function);

    type Subprogram_Iterator is private;

    procedure Init (From_Db : Database; Iter : in out Subprogram_Iterator);
    function  Done (Iter : Subprogram_Iterator) return Boolean;
    function  Name (Iter : Subprogram_Iterator) return String;
    function  Unique_Name (Iter : Subprogram_Iterator) return String;

    function Reference (Iter : Subprogram_Iterator) return String;

    function  Kind (Iter : Subprogram_Iterator) return Subprogram_Kind;
    function  Return_Type_Decl (Iter : Subprogram_Iterator) return Type_Decl;
    function  Parameters (Iter : Subprogram_Iterator) return Parameter_Iterator;
    procedure Next (Iter : in out Subprogram_Iterator);

    type Unique_Type_Iterator is private;

    procedure Init (From_Db : Database; Iter : in out Unique_Type_Iterator);
    function  Done (Iter : Unique_Type_Iterator) return Boolean;
    function  Decl (Iter : Unique_Type_Iterator) return Type_Decl;
    function  Reference (Iter : Unique_Type_Iterator) return String;
    procedure Next (Iter : in out Unique_Type_Iterator);

private

    package Unbounded is new Unbounded_String (80);

    type Parameter_Iterator is new Ada_Program.Element_Iterator;
    type Decl_Kind          is (An_Exception, A_Function, A_Procedure);

    type Decl_State is
        record
            Kind             : Decl_Kind;
            Parameters       : Parameter_Iterator;
            Return_Type      : Ada_Program.Element;
            Return_Type_Kind : Type_Kind;
        end record;

    type Global_State is new Boolean;

    procedure Update_State (Decl   :        Ada_Program.Declaration;
                            S      : in out Decl_State;
                            Global : in out Global_State);

    Max_Decls : constant := 200;

    package Rpc_Decls is new Declaration_Table (Max_Decls, Global_State,
                                                Decl_State, Update_State);

    type Type_State is
        record
            Kind        : Type_Kind;
            Is_Standard : Boolean;
        end record;

    procedure Update_State (Decl   :        Ada_Program.Declaration;
                            S      : in out Type_State;
                            Global : in out Global_State);

    package Unique_Types is new Declaration_Table (Max_Decls, Global_State,
                                                   Type_State, Update_State);

    type Database is
        record
            Decls         : Rpc_Decls.Database;
            Types         : Unique_Types.Database;
            Error_Message : Unbounded.Variable_String;
        end record;

    type Reference_Iterator is
        record
            Decl_Iter  : Rpc_Decls.Parent_Comp_Unit_Iterator;
            Types_Iter : Unique_Types.Parent_Comp_Unit_Iterator;
        end record;

    type Exception_Iterator   is new Rpc_Decls.Declaration_Iterator;
    type Subprogram_Iterator  is new Rpc_Decls.Declaration_Iterator;
    type Unique_Type_Iterator is new Unique_Types.Declaration_Iterator;

    type Id_Iterator is new Ada_Program.Element_List;

end Interface_Analysis;

E3 Meta Data

    nblk1=b
    nid=0
    hdr6=16
        [0x00] rec0=1e rec1=00 rec2=01 rec3=07e
        [0x01] rec0=15 rec1=00 rec2=02 rec3=084
        [0x02] rec0=01 rec1=00 rec2=0b rec3=038
        [0x03] rec0=15 rec1=00 rec2=03 rec3=01c
        [0x04] rec0=00 rec1=00 rec2=0a rec3=048
        [0x05] rec0=16 rec1=00 rec2=04 rec3=06c
        [0x06] rec0=00 rec1=00 rec2=09 rec3=010
        [0x07] rec0=1c rec1=00 rec2=05 rec3=068
        [0x08] rec0=00 rec1=00 rec2=07 rec3=02c
        [0x09] rec0=1d rec1=00 rec2=08 rec3=01e
        [0x0a] rec0=06 rec1=00 rec2=06 rec3=000
    tail 0x2151c825e838d45b3a9c0 0x42a00088462061e03