DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

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 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦3b5b9e15b⟧ TextFile

    Length: 3495 (0xda7)
    Types: TextFile
    Names: »V«

Derivation

└─⟦2f6cfab89⟧ Bits:30000547 8mm tape, Rational 1000, !projects 94-01-04
    └─ ⟦d65440be7⟧ »DATA« 
        └─⟦this⟧ 

TextFile

with List_Generic;
with Bounded_String;

package Object is

    Max_Integer : constant := 65536;

    Max_String : constant := 100;

    type E_Class is (Integer_Class, Boolean_Class, String_Class,
                     Turtle_Class, Pen_Class, Block_Class, Void_Class);

    subtype Tiny_String is Bounded_String.Variable_String (80);

    Empty_String : Tiny_String;

    type Index is range -Max_Integer .. Max_Integer;

    type Reference is private;

    type Access_Reference is private;

    Void_Reference : constant Reference;

    function Create (Class : E_Class; Object : Index) return Reference;

    function Get (From : Reference) return E_Class;
    function Get (From : Reference) return Index;
    procedure Put (This : E_Class; Into : out Reference);
    procedure Put (This : Index; Into : out Reference);

    type Keyword is private;

    type Access_Keyword is private;

    Void_Keyword : constant Keyword;

    function Create return Keyword;

    function Send (This_Message : Keyword; To : Reference) return Reference;

    function Get (From : Keyword) return Tiny_String;
    function Get (From : Keyword) return Reference;
    procedure Put (This : Tiny_String;
                   And_This : Reference;
                   Into : in out Keyword);
    procedure Put (This : Tiny_String; Into : in out Keyword);
    procedure Put (This : Reference; Into : in out Keyword);
    procedure Next (From : in out Keyword);
    function Is_Empty (This : Keyword) return Boolean;
    function Is_Empty_Name (This : Keyword) return Boolean;
    function Is_Empty_Argument (This : Keyword) return Boolean;
    procedure Free (This : in out Keyword);

    type Binary is private;

    type Access_Binary is private;

    Void_Binary : constant Binary;

    function Create return Binary;

    function Send (This_Message : Binary; To : Reference) return Reference;

    function Get (From : Binary) return Tiny_String;
    function Get (From : Binary) return Reference;
    procedure Put (This : Tiny_String; Into : out Binary);
    procedure Put (This : Reference; Into : out Binary);

    subtype Unary is Tiny_String;

    type Access_Unary is private;

    function Create return Unary;

    function Send (This_Message : Unary; To : Reference) return Reference;

    function Get (From : Unary) return Tiny_String;
    procedure Put (This : Tiny_String; Into : out Unary);

private

    type Reference is
        record
            Id_Class : E_Class := Void_Class;
            Id_Object : Index := 0;
        end record;

    type Access_Reference is access Reference;

    Void_Reference : constant Reference :=
       (Id_Class => Void_Class, Id_Object => 0);

    package Message_Name is new List_Generic (Element => Tiny_String);
    package Message_Argument is new List_Generic (Element => Reference);

    type Keyword is
        record
            Name : Message_Name.List := Message_Name.Nil;
            Argument : Message_Argument.List := Message_Argument.Nil;
        end record;

    type Access_Keyword is access Keyword;

    Void_Keyword : constant Keyword :=
       (Name => Message_Name.Nil, Argument => Message_Argument.Nil);

    type Binary is
        record
            Name : Tiny_String;
            Argument : Reference := Void_Reference;
        end record;
    type Access_Binary is access Binary;

    Void_Binary : constant Binary :=
       (Name => Empty_String, Argument => Void_Reference);

    type Access_Unary is access Unary;

end Object;