|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 6144 (0x1800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package Type_Analysis, seg_00437b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
--| @SUMMARY This package collects and sorts information about type declarations --| that are added to its database. --| with List_Generic; with Bounded_String; with Map_Generic; with Ada_Program; with Lrm_Utilities; with Abstract_Document; package Type_Analysis is type Db is private; procedure Initialize (The_Db : in out Db); -- adds the type declaration and recursively walks any other types -- referenced in the declarations. Record components, array index and -- component types, derived and accessed types are included. procedure Add_Type_Decl (Decl : Ada_Program.Element; To : in out Db); -- record sorts only include record types in the output -- scalar sorts only included numerics and enumeration types -- subtype sort only includes subtypes -- kind_sort and name_sort include all types type Sort_Type is (Record_Sort, Kind_Sort, Name_Sort, Scalar_Sort, Subtype_Sort); procedure Display (The_Db : Db; Sort : Sort_Type := Type_Analysis.Kind_Sort; To_Document : in out Abstract_Document.Handle); private subtype Var_String is Bounded_String.Variable_String (80); subtype Decl_Id is Long_Integer; type Component_Index is range 0 .. 100; type Id_List is array (Component_Index) of Decl_Id; use Lrm_Utilities; type Data (Kind : Lrm_Utilities.Type_Kinds := An_Integer_Type) is record Parent_Comp_Unit_Decl : Ada_Program.Declaration; Decl : Ada_Program.Element; Id : Decl_Id; case Kind is when An_Integer_Type => Lower : Long_Integer; Upper : Long_Integer; when A_Float_Type => Lower_Float_Bound : Float; Upper_Float_Bound : Float; when A_Fixed_Type => Lower_Fixed_Bound : Long_Integer; Upper_Fixed_Bound : Long_Integer; when An_Enumeration => Num_Lits : Integer := 0; when A_Boolean_Type | A_Character_Type => null; when A_String_Type => String_Size : Integer; when A_Record_Type => Component_Count : Component_Index := 1; Ids : Id_List; when An_Array_Type => Index_Type : Decl_Id; Component_Type : Decl_Id; when An_Access_Type => Accessed_Type : Decl_Id; when A_Derived_Type => Referenced_Type : Decl_Id; when A_Subtype => Subtyped_Type : Decl_Id; when A_Task_Type => null; when A_Private_Type | A_Limited_Private_Type => Completion_Type : Decl_Id; when None_Of_Above => null; end case; end record; function Hash (Id : Decl_Id) return Integer; package Type_Map is new Map_Generic (8000, Decl_Id, Data, Hash); type Db is record Map : Type_Map.Map; end record; end Type_Analysis;
nblk1=5 nid=4 hdr6=8 [0x00] rec0=1c rec1=00 rec2=01 rec3=064 [0x01] rec0=1c rec1=00 rec2=02 rec3=048 [0x02] rec0=17 rec1=00 rec2=05 rec3=03c [0x03] rec0=10 rec1=00 rec2=03 rec3=000 [0x04] rec0=00 rec1=00 rec2=00 rec3=008 tail 0x215002c62815c62e85562 0x42a00088462061e03 Free Block Chain: 0x4: 0000 00 00 01 a6 80 0b 61 74 65 5f 54 79 70 65 20 3d ┆ ate_Type =┆