|
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 body Constant_String, package body Operators, seg_04a302, seg_04a9d5, seg_04b441
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« └─⟦this⟧
package body Constant_String is type Node; type Access_Node is access Node; type Node is -- a binary search tree record The_String : Object; Left, Right : Access_Node; end record; The_Root : Access_Node; procedure Make (From_Tree : in out Access_Node; For_String : String; The_Result : out Object) is The_String : Object; begin if From_Tree = null then The_String := new String'(For_String); From_Tree := new Node'(The_String, null, null); The_Result := The_String; elsif For_String < From_Tree.The_String.all then Make (From_Tree.Left, For_String, The_Result); elsif For_String /= From_Tree.The_String.all then Make (From_Tree.Right, For_String, The_Result); else The_Result := From_Tree.The_String; end if; end Make; function Value (For_String : String) return Object is Result : Object; begin Make (The_Root, For_String, Result); return Result; end Value; function Image (Of_Object : Object) return String is begin return Of_Object.all; end Image; procedure Put (The_Object : Object; Where : Output_Stream.Object) is use Output_Stream; begin Put (Image (The_Object), Where); end Put; procedure Put (At_Index : Positive; The_String : Object; Where : Output_Stream.Object) is use Output_Stream; begin if At_Index /= 1 then Put_Line (',', Where); end if; Put (At_Index, Where); Put (" => ", Where); Put ('"' & The_String.all & '"', Where); end Put; procedure Put (The_Tree : Access_Node; Where : Output_Stream.Object) is Index : Positive := 1; procedure R_Put (The_Tree : Access_Node; Where : Output_Stream.Object) is use Output_Stream; begin if The_Tree /= null then R_Put (The_Tree.Left, Where); Put (Index, The_Tree.The_String, Where); Index := Index + 1; R_Put (The_Tree.Right, Where); end if; end R_Put; begin Output_Stream.Put_Line ("Constant_String_Set'(", Where); Output_Stream.Indent (+2, Where); R_Put (The_Tree, Where); Output_Stream.Indent (-2, Where); Output_Stream.Put_Line (")", Where); end Put; procedure Put (Where : Output_Stream.Object) is begin Put (The_Tree => The_Root, Where => Where); end Put; package body Operators is function "<" (Left, Right : Object) return Boolean is begin return Left.all < Right.all; end "<"; function "<=" (Left, Right : Object) return Boolean is begin return Left.all <= Right.all; end "<="; function ">" (Left, Right : Object) return Boolean is begin return Left.all > Right.all; end ">"; function ">=" (Left, Right : Object) return Boolean is begin return Left.all >= Right.all; end ">="; end Operators; end Constant_String;
nblk1=5 nid=0 hdr6=a [0x00] rec0=1e rec1=00 rec2=01 rec3=008 [0x01] rec0=00 rec1=00 rec2=05 rec3=004 [0x02] rec0=24 rec1=00 rec2=02 rec3=022 [0x03] rec0=1c rec1=00 rec2=03 rec3=050 [0x04] rec0=16 rec1=00 rec2=04 rec3=000 tail 0x2174ea068866e7c11a757 0x42a00088462063c03