|
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: 11264 (0x2c00) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Items, seg_0459ac
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Tree, List, String_Utilities, Unbounded_String; package body Items is package Identifier is new Unbounded_String (1); subtype State_String is Identifier.Variable_String; package States_List is new List (Element => State_String); type Personnage is record Name : Identifier.Variable_String; Comment : Identifier.Variable_String; Position : Identifier.Variable_String; States : States_List.Object; end record; -------------------- function Equal (S1 : State_String; S2 : String) return Boolean is begin return String_Utilities.Equal (Identifier.Image (S1), S2); end Equal; function Find_State (Somebody_States : States_List.Object; A_State : String) return Boolean is begin States_List.Go_First (Somebody_States); while not States_List.At_End (Somebody_States) loop if Equal (States_List.Get_Current_Element (Somebody_States), A_State) then return True; end if; States_List.Go_Next (Somebody_States); end loop; return False; end Find_State; -------------------- function "<" (Left, Right : Personnage) return Boolean is begin return String_Utilities.Less_Than (Identifier.Image (Left.Name), Identifier.Image (Right.Name)); end "<"; function ">" (Left, Right : Personnage) return Boolean is begin return String_Utilities.Greater_Than (Identifier.Image (Left.Name), Identifier.Image (Right.Name)); end ">"; package Personnages_Tree is new Tree (Element => Personnage, Nb_Preallocation_Node => 10); -------------------- procedure Create (Name : String) is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); Personnages_Tree.Insert (A_Personnage); end Create; procedure Set_Comment (Name : String; Comment : String) is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; A_Personnage.Comment := Identifier.Value (Comment); Personnages_Tree.Set_Current_Element (A_Personnage); end if; end Set_Comment; procedure Set_Position (Name : String; Position : String) is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; A_Personnage.Position := Identifier.Value (Position); Personnages_Tree.Set_Current_Element (A_Personnage); end if; end Set_Position; procedure Add_State (Name : String; State : String) is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; if not Find_State (A_Personnage.States, State) then States_List.Insert (A_Personnage.States, Identifier.Value (State)); Personnages_Tree.Set_Current_Element (A_Personnage); end if; end if; end Add_State; procedure Remove_State (Name : String; State : String) is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; if Find_State (A_Personnage.States, State) then States_List.Remove_Current_Element (A_Personnage.States); Personnages_Tree.Set_Current_Element (A_Personnage); end if; end if; end Remove_State; function Exists (Name : String) return Boolean is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); return Personnages_Tree.Find (A_Personnage); end Exists; function Get_Comment (Name : String) return String is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; return Identifier.Image (A_Personnage.Comment); end if; end Get_Comment; function Get_Position (Name : String) return String is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; return Identifier.Image (A_Personnage.Position); end if; end Get_Position; function In_State (Name : String; State : String) return Boolean is A_Personnage : Personnage; begin A_Personnage.Name := Identifier.Value (Name); if Personnages_Tree.Find (A_Personnage) then A_Personnage := Personnages_Tree.Get_Current_Element; return Find_State (A_Personnage.States, State); end if; end In_State; end Items;
nblk1=a nid=3 hdr6=c [0x00] rec0=23 rec1=00 rec2=01 rec3=028 [0x01] rec0=20 rec1=00 rec2=09 rec3=00a [0x02] rec0=17 rec1=00 rec2=04 rec3=060 [0x03] rec0=18 rec1=00 rec2=07 rec3=05e [0x04] rec0=1b rec1=00 rec2=0a rec3=05a [0x05] rec0=12 rec1=00 rec2=05 rec3=000 [0x06] rec0=19 rec1=00 rec2=05 rec3=000 [0x07] rec0=18 rec1=00 rec2=03 rec3=080 [0x08] rec0=06 rec1=00 rec2=05 rec3=000 [0x09] rec0=06 rec1=00 rec2=05 rec3=000 tail 0x215420b2e864b7fbbfc67 0x42a00088462060003 Free Block Chain: 0x3: 0000 00 06 03 fc 00 00 00 00 35 20 20 20 20 66 75 6e ┆ 5 fun┆ 0x6: 0000 00 08 00 73 80 16 6e 67 5f 55 74 69 6c 69 74 69 ┆ s ng_Utiliti┆ 0x8: 0000 00 02 03 fc 80 16 20 20 20 20 20 72 65 74 75 72 ┆ retur┆ 0x2: 0000 00 00 00 d5 80 03 6e 20 20 03 00 35 20 20 20 20 ┆ n 5 ┆