|
|
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: 12288 (0x3000)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Values, seg_044e9b
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
package body Values is
-- creation
procedure New_Value (V : out Value) is
begin
V := (Kind => Undefine_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 String is
begin
if V.Kind = String_Value then
return Bounded_String.Image (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 Undefine_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 Bounded_String.Image (V1.The_String) =
Bounded_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 Undefine_Value =>
return "Undefine value !!";
when Natural_Value =>
return Integer'Image (V.The_Natural);
when Boolean_Value =>
return Boolean'Image (V.The_Boolean);
when String_Value =>
return Bounded_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 String) is
begin
Undefine (V);
V := (Kind => String_Value,
The_String => Bounded_String.Value (S, 128));
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, Bounded_String.Image (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
Bounded_String.Free (V.The_String);
end if;
V := (Kind => Undefine_Value);
end Dispose;
end Values;
nblk1=b
nid=9
hdr6=8
[0x00] rec0=2e rec1=00 rec2=01 rec3=044
[0x01] rec0=1f rec1=00 rec2=02 rec3=05e
[0x02] rec0=28 rec1=00 rec2=05 rec3=054
[0x03] rec0=1a rec1=00 rec2=0b rec3=000
[0x04] rec0=18 rec1=00 rec2=08 rec3=046
[0x05] rec0=1b rec1=00 rec2=05 rec3=056
[0x06] rec0=21 rec1=00 rec2=07 rec3=002
[0x07] rec0=1b rec1=00 rec2=03 rec3=040
[0x08] rec0=1c rec1=00 rec2=0a rec3=030
[0x09] rec0=1d rec1=00 rec2=0b rec3=018
[0x0a] rec0=09 rec1=00 rec2=09 rec3=000
tail 0x217463e4686467b558d6b 0x42a00088462060003
Free Block Chain:
0x9: 0000 00 0a 00 53 80 1a 20 28 4b 69 6e 64 20 3d 3e 20 ┆ S (Kind => ┆
0xa: 0000 00 03 00 3f 80 1e 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ┆ ? ----------┆
0x3: 0000 00 07 03 fc 80 36 20 20 20 20 20 20 20 56 20 3a ┆ 6 V :┆
0x7: 0000 00 08 00 42 80 17 6c 75 65 3b 20 49 20 3a 20 69 ┆ B lue; I : i┆
0x8: 0000 00 06 03 fc 80 32 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d ┆ 2----------┆
0x6: 0000 00 04 03 fc 80 08 6c 5f 56 61 6c 75 65 3b 08 00 ┆ l_Value; ┆
0x4: 0000 00 00 03 fc 80 07 2d 4a 61 6e 2d 39 35 07 00 1d ┆ -Jan-95 ┆