DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - downloadIndex: ┃ B T ┃
Length: 4926 (0x133e) Types: TextFile Names: »B«
└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04 └─ ⟦d65440be7⟧ »DATA« └─⟦this⟧
with Object, Argument, Message, Bloc, Boolean_Classe, Bounded_String, Table, Text_Io; package body Bloc_Classe is function Search_Empty return Id_Bloc_Table is Id : Id_Bloc_Table := 1; begin loop exit when Bloc_Table (Id) = Empty_Bloc; Id := Id + 1; end loop; return (Id); end Search_Empty; function Search (A_Bloc : Object.Reference) return Id_Bloc_Table is Id : Id_Bloc_Table := 1; begin loop exit when Object.Equal (Bloc_Table (Id).The_Object, A_Bloc); Id := Id + 1; end loop; return (Id); end Search; function Search (A_Bloc : Object.Reference) return Bloc.Node is Id : Id_Bloc_Table := 1; begin loop exit when Object.Equal (Bloc_Table (Id).The_Object, A_Bloc); Id := Id + 1; end loop; return (Bloc_Table (Id).The_Bloc); end Search; procedure Remove (A_Bloc : Object.Reference) is Id : Id_Bloc_Table; begin Id := Search (A_Bloc); Bloc_Table (Id).The_Object := Object.Void_Reference; Bloc_Table (Id).The_Bloc := Bloc.Empty_Node; end Remove; function Create (Value : Bloc.Node) return Object.Reference is Id : Id_Bloc_Table; Obj : Object.Reference; begin Id := Search_Empty; Obj := Object.Create (Object.Bloc_Classe, Id); Bloc_Table (Id).The_Object := Obj; Bloc_Table (Id).The_Bloc := Value; return (Obj); end Create; function Valeur (Blk : Object.Reference) return Object.Reference is The_Bloc : Bloc.Node; Obj : Object.Reference; begin Text_Io.Put_Line ("bloc_classe receive message valeur"); The_Bloc := Search (Blk); Object.En_Texte (Blk); Obj := Bloc.Interpret (The_Bloc); return (Obj); end Valeur; function Valeurs (Blk : Object.Reference; The_Messsages : Message.List; With_Arguments : Argument.List) return Object.Reference is The_Bloc : Bloc.Node; Obj : Object.Reference; begin The_Bloc := Search (Blk); Obj := Bloc.Interpret (N => The_Bloc); return (Obj); end Valeurs; function Send (To_Object : Object.Reference; The_Messages : Message.List; With_Arguments : Argument.List) return Object.Reference is Result : Object.Reference := Object.Void_Reference; The_Bloc_Node : Bloc.Node; Keywords, Identifiers : Message.List; S_Table : Table.Symbol_Kind; A_Message, A_Identifier, A_Keyword : Message.Tiny_String; A_Argument : Object.Reference; Mess : Message.List; Args : Argument.List; Failed : Boolean := False; Nb_Mess : Natural; begin Mess := The_Messages; Args := With_Arguments; Object.En_Texte (To_Object); The_Bloc_Node := Search (To_Object); Keywords := Bloc.Keyword_List (The_Bloc_Node); Identifiers := Bloc.Identifier_List (The_Bloc_Node); S_Table := Bloc.Symbol (The_Bloc_Node); Nb_Mess := Message.How_Many (The_Messages); for I in 1 .. Nb_Mess loop A_Message := Message.Get (Mess); A_Argument := Argument.Get (Args); if Bounded_String.Image (A_Message) = Message_Valeurs then A_Identifier := Message.Get (Identifiers); Table.Insert (S_Table, A_Identifier, A_Argument); else A_Keyword := Message.Get (Keywords); if Bounded_String.Image (A_Keyword) = Bounded_String.Image (A_Message) then A_Identifier := Message.Get (Identifiers); Table.Insert (S_Table, A_Identifier, A_Argument); else Failed := True; -- ERROR end if; end if; if not Failed then Message.Next (Identifiers, A_Identifier); Message.Next (Keywords, A_Keyword); Argument.Next (Args, A_Argument); Message.Next (Mess, A_Message); end if; end loop; if not Failed then Result := Valeur (To_Object); end if; return (Result); end Send; function Send (To_Object : Object.Reference; The_Message : Message.Tiny_String) return Object.Reference is Result : Object.Reference; begin if Bounded_String.Image (The_Message) = Message_Valeur then Result := Valeur (To_Object); end if; return (Result); end Send; begin for I in Id_Bloc_Table loop Bloc_Table (I).The_Bloc := Bloc.Empty_Node; Bloc_Table (I).The_Object := Object.Void_Reference; end loop; end Bloc_Classe;