|
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: 12288 (0x3000) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Ne_Ball, seg_0115d0
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─ ⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
with Class_Behavior; with Collection; with Instance; package body Ne_Ball is type Ball_Structure is record Size : Natural; Color : Colors; Place : Places; Weight : Natural; end record; package Behavior is new Class_Behavior (Ball_Structure, "BALLS"); ------------------------------------------------------------------------------ function Size (O : Object) return Natural is begin return Behavior.Get (O).Size; end Size; ------------------------------------------------------------------------------ function Weight (O : Object) return Natural is begin return Behavior.Get (O).Weight; end Weight; ------------------------------------------------------------------------------ function Color (O : Object) return Colors is begin return Behavior.Get (O).Color; end Color; ------------------------------------------------------------------------------ function Place (O : Object) return Places is begin return Behavior.Get (O).Place; end Place; ------------------------------------------------------------------------------ function Instances return Collection.Object is begin return Behavior.Instances; end Instances; function Instances (Kind : Existences := All_Balls) return Collection.Object is function White_Ball_Predicate (O : Object) return Boolean is begin return Behavior.Get (O).Color = White; end White_Ball_Predicate; function White_Balls is new Collection.Restrict (White_Ball_Predicate); function Red_Ball_Predicate (O : Object) return Boolean is begin return Behavior.Get (O).Color = Red; end Red_Ball_Predicate; function Red_Balls is new Collection.Restrict (Red_Ball_Predicate); function Ball_On_Heap_Predicate (O : Object) return Boolean is begin return Behavior.Get (O).Place = Is_On_Heap; end Ball_On_Heap_Predicate; function Balls_On_Heap is new Collection.Restrict (Ball_On_Heap_Predicate); begin case Kind is when All_Balls => return Behavior.Instances; when White_Balls => return White_Balls (Behavior.Instances); when Red_Balls => return Red_Balls (Behavior.Instances); when Balls_On_Heap => return Balls_On_Heap (Behavior.Instances); when others => return Behavior.Instances; end case; end Instances; ------------------------------------------------------------------------------ function Exist (With_Place : Places; In_Kind_Of_Collection : Existences) return Boolean is function Is_Place (O : Object) return Boolean is begin return Behavior.Get (O).Place = With_Place; end Is_Place; function Exist_Place is new Collection.Exist (Is_Place); begin return Exist_Place (Instances (Kind => In_Kind_Of_Collection)); end Exist; function Exist (With_Color : String; In_Kind_Of_Collection : Existences) return Boolean is function Is_Color (O : Object) return Boolean is begin return Ball.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_Attributes : Attributes; Greater_Than : Natural; In_Kind_Of_Collection : Existences) return Boolean is function Is_Greater (O : Object) return Boolean is begin case With_Attributes is when Ball.Is_Size => return Behavior.Get (O).Size > Greater_Than; when Ball.Is_Weight => return Behavior.Get (O).Weight > Greater_Than; when others => return False; end case; end Is_Greater; function Exist_Greater is new Collection.Exist (Is_Greater); begin return Exist_Greater (Instances (Kind => In_Kind_Of_Collection)); end Exist; function Exist (With_Attributes : Attributes; Between : Natural; And_Value : Natural; In_Kind_Of_Collection : Existences) return Boolean is function Is_Between (O : Object) return Boolean is begin case With_Attributes is when Ball.Is_Size => return Behavior.Get (O).Size >= Between and Behavior.Get (O).Size <= And_Value; when Ball.Is_Weight => return Behavior.Get (O).Weight >= Between and Behavior.Get (O).Weight <= And_Value; when others => return False; end case; end Is_Between; function Exist_Between is new Collection.Exist (Is_Between); begin return Exist_Between (Instances (Kind => In_Kind_Of_Collection)); end Exist; ------------------------------------------------------------------------------ function Add (With_Size : Natural := Default_Size; With_Color : Colors := Default_Color; With_Place : Places := Default_Place; With_Weight : Natural := Default_Weight) return Object is A_Ball : Ball_Structure; begin A_Ball.Size := With_Size; A_Ball.Color := With_Color; A_Ball.Place := With_Place; A_Ball.Weight := With_Weight; return Behavior.Allocate (The_Element => A_Ball); end Add; ------------------------------------------------------------------------------ procedure Change (O : Object; With_Size : Natural; With_Color : Colors; With_Place : Places; With_Weight : Natural) is A_Ball : Ball_Structure; begin A_Ball := Behavior.Get (The_Reference => O); A_Ball.Size := With_Size; A_Ball.Color := With_Color; A_Ball.Place := With_Place; A_Ball.Weight := With_Weight; Behavior.Set (The_Reference => O, With_Value => A_Ball); end Change; procedure Change (O : Object; With_Place : Places) is A_Ball : Ball_Structure; begin A_Ball := Behavior.Get (The_Reference => O); A_Ball.Place := With_Place; Behavior.Set (The_Reference => O, With_Value => A_Ball); end Change; ------------------------------------------------------------------------------ procedure Delete (O : Object) is begin Behavior.Dispose (The_Reference => O); end Delete; ------------------------------------------------------------------------------ procedure Clean is begin Behavior.Clear; end Clean; end Ne_Ball;
nblk1=b nid=2 hdr6=14 [0x00] rec0=25 rec1=00 rec2=01 rec3=03e [0x01] rec0=00 rec1=00 rec2=0b rec3=006 [0x02] rec0=1e rec1=00 rec2=08 rec3=000 [0x03] rec0=1a rec1=00 rec2=0a rec3=02c [0x04] rec0=19 rec1=00 rec2=06 rec3=054 [0x05] rec0=04 rec1=00 rec2=07 rec3=054 [0x06] rec0=18 rec1=00 rec2=03 rec3=008 [0x07] rec0=16 rec1=00 rec2=05 rec3=050 [0x08] rec0=1c rec1=00 rec2=09 rec3=016 [0x09] rec0=0d rec1=00 rec2=04 rec3=000 [0x0a] rec0=16 rec1=90 rec2=00 rec3=000 tail 0x2170c07f8822c805340b0 0x42a00088462063c03 Free Block Chain: 0x2: 0000 00 00 03 fc 80 14 2e 50 6c 61 63 65 20 3d 20 49 ┆ .Place = I┆