DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400

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

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦c544355e6⟧ Ada Source

    Length: 6144 (0x1800)
    Types: Ada Source
    Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Sticker, seg_00e369

Derivation

└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
    └─ ⟦cfc2e13cd⟧ »Space Info Vol 2« 
        └─⟦this⟧ 

E3 Source Code



with Expertsystem;
use Expertsystem;

package body Sticker is

    type Sticker_Structure is
        record
            Color : Colors;
            State : States;
        end record;


    package Behavior is new Classbehavior (Sticker_Structure, "STICKERS  ");

------------------------------------------------------------------------------
    function Color (O : Object) return Colors is
    begin
        return Behavior.Get (O).Color;
    end Color;

    function State (O : Object) return States is
    begin
        return Behavior.Get (O).State;
    end State;

------------------------------------------------------------------------------
    function Instances (Kind : Existences := All_Stickers)
                       return Collection.Object is
        Co : Collection.Object;
        function White_Sticker_Predicate (O : Object) return Boolean is
        begin
            return Behavior.Get (O).Color = White;
        end White_Sticker_Predicate;
        function White_Stickers is
           new Collection.Restrict (White_Sticker_Predicate);

        function Red_Sticker_Predicate (O : Object) return Boolean is
        begin
            return Behavior.Get (O).Color = Red;
        end Red_Sticker_Predicate;
        function Red_Stickers is
           new Collection.Restrict (Red_Sticker_Predicate);

        function Unused_Predicate (O : Object) return Boolean is
        begin
            return Behavior.Get (O).State = Is_Unused;
        end Unused_Predicate;
        function Unused is new Collection.Restrict (Unused_Predicate);
    begin
        case Kind is
            when All_Stickers =>
                return Behavior.Instances;
            when Unused_Stickers =>
                return Unused (Behavior.Instances);
            when White_Stickers =>
                return White_Stickers (Behavior.Instances);
            when Red_Stickers =>
                return Red_Stickers (Behavior.Instances);
            when others =>
                return Behavior.Instances;
        end case;
        return Co;
    end Instances;

------------------------------------------------------------------------------
    function Exist (With_Color : String; In_Kind_Of_Collection : Existences)
                   return Boolean is
        function Is_Color (O : Object) return Boolean is
        begin
            return Colors'Image (Behavior.Get (O).Color) = With_Color;
        end Is_Color;  
        function Exist_Color is new Collection.Exist (Is_Color);
    begin
        return Exist_Color (Instances (Kind => In_Kind_Of_Collection));
    end Exist;

    function Exist (With_State : States; In_Kind_Of_Collection : Existences)
                   return Boolean is
        function Is_State (O : Object) return Boolean is
        begin
            return Behavior.Get (O).State = With_State;
        end Is_State;  
        function Exist_State is new Collection.Exist (Is_State);
    begin
        return Exist_State (Instances (Kind => In_Kind_Of_Collection));
    end Exist;

------------------------------------------------------------------------------
    function Add (With_Color : Colors := Default_Color;
                  With_State : States := Default_State) return Object is
        A_Sticker : Sticker_Structure;
    begin
        A_Sticker.Color := With_Color;
        A_Sticker.State := With_State;
        return Behavior.Allocate (Initvalue => A_Sticker);
    end Add;

------------------------------------------------------------------------------
    procedure Change (O : Object; With_Color : Colors; With_State : States) is
        A_Sticker : Sticker_Structure;
    begin
        A_Sticker       := Behavior.Get (Aref => O);
        A_Sticker.Color := With_Color;
        A_Sticker.State := With_State;
        Behavior.Set (Aref => O, Withvalue => A_Sticker);
    end Change;

    procedure Change (O : Object; With_State : States) is
        A_Sticker : Sticker_Structure;
    begin
        A_Sticker       := Behavior.Get (Aref => O);
        A_Sticker.State := With_State;
        Behavior.Set (Aref => O, Withvalue => A_Sticker);
    end Change;


------------------------------------------------------------------------------
    procedure Delete (O : Object) is
    begin
        Behavior.Dispose (Aref => O);
    end Delete;

------------------------------------------------------------------------------
    procedure Clean is
    begin
        Behavior.Clear;
    end Clean;


end Sticker;

E3 Meta Data

    nblk1=5
    nid=0
    hdr6=a
        [0x00] rec0=22 rec1=00 rec2=01 rec3=02a
        [0x01] rec0=19 rec1=00 rec2=02 rec3=042
        [0x02] rec0=19 rec1=00 rec2=03 rec3=038
        [0x03] rec0=19 rec1=00 rec2=04 rec3=016
        [0x04] rec0=17 rec1=00 rec2=05 rec3=001
    tail 0x2170aff3a821d7d714659 0x42a00088462063c03