|
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 - metrics - download
Length: 6144 (0x1800) Types: Ada Source Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Dynamic_Object, seg_045e32
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000 └─⟦5a81ac88f⟧ »Space Info Vol 1« └─⟦this⟧
package body Dynamic_Object is -- creation procedure New_Value (V : out Value) is begin V := (Kind => Undefined_Value); end New_Value; -- access function Kind_Of (V : in Value) return Kind_Of_Values is begin return V.Kind; end Kind_Of; function Value_As (V : in Value) return Natural is begin if V.Kind = Natural_Value then return V.The_Natural; else raise No_Natural_Value; end if; end Value_As; function Value_As (V : in Value) return Boolean is begin if V.Kind = Boolean_Value then return V.The_Boolean; else raise No_Boolean_Value; end if; end Value_As; function Value_As (V : in Value) return Our_String.Variable_String is begin if V.Kind = String_Value then return V.The_String; else raise No_String_Value; end if; end Value_As; function Equal (V1 : in Value; V2 : in Value) return Boolean is begin if V1.Kind = V2.Kind then case V1.Kind is when Undefined_Value => return True; when Natural_Value => return (V1.The_Natural = V2.The_Natural); when Boolean_Value => return (V1.The_Boolean = V2.The_Boolean); when String_Value => return Our_String.Image (V1.The_String) = Our_String.Image (V2.The_String); end case; else return False; end if; end Equal; function Image (V : in Value) return String is begin case V.Kind is when Undefined_Value => return "Undefined value !!"; when Natural_Value => return Integer'Image (V.The_Natural); when Boolean_Value => return Boolean'Image (V.The_Boolean); when String_Value => return Our_String.Image (V.The_String); end case; end Image; -- modification procedure Undefine (V : in out Value) is begin Dispose (V); New_Value (V); end Undefine; procedure Set_To (V : in out Value; I : in Natural) is begin Undefine (V); V := (Kind => Natural_Value, The_Natural => I); end Set_To; procedure Set_To (V : in out Value; B : in Boolean) is begin Undefine (V); V := (Kind => Boolean_Value, The_Boolean => B); end Set_To; procedure Set_To (V : in out Value; S : in Our_String.Variable_String) is begin Undefine (V); V := (Kind => String_Value, The_String => S); end Set_To; procedure Copy (To_Value : in out Value; The_Value : in Value) is begin if The_Value.Kind = String_Value then Set_To (To_Value, The_Value.The_String); else Undefine (To_Value); To_Value := The_Value; end if; end Copy; -- liberation procedure Dispose (V : in out Value) is begin if V.Kind = String_Value then Our_String.Free (V.The_String); end if; V := (Kind => Undefined_Value); end Dispose; end Dynamic_Object;
nblk1=5 nid=4 hdr6=8 [0x00] rec0=2e rec1=00 rec2=01 rec3=038 [0x01] rec0=1f rec1=00 rec2=03 rec3=056 [0x02] rec0=27 rec1=00 rec2=02 rec3=084 [0x03] rec0=1a rec1=00 rec2=05 rec3=000 [0x04] rec0=c0 rec1=00 rec2=00 rec3=100 tail 0x215427126864c91b882a7 0x42a00088462060003 Free Block Chain: 0x4: 0000 00 00 02 06 80 05 62 65 67 69 6e 05 00 2d 20 20 ┆ begin - ┆