|
|
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: 13312 (0x3400)
Types: Ada Source
Notes: 03_class, FILE, R1k_Segment, e3_tag, package body Class_Integer, seg_0328c0
└─⟦8527c1e9b⟧ Bits:30000544 8mm tape, Rational 1000, Arrival backup of disks in PAM's R1000
└─⟦cfc2e13cd⟧ »Space Info Vol 2«
└─⟦this⟧
-- with Block_Class;
with Bounded_String;
with Object;
with String_Utilities;
with Text_Io;
package body Class_Integer is
function Send (This_Message : Object.Unary; To : Object.Reference)
return Object.Reference is
type Message is (Moins, En_Texte);
Token : Message;
package Bs renames Bounded_String;
package Su renames String_Utilities;
begin
if Bs.Length (Object.Get (This_Message)) /= 0 then
declare
use Object;
An_Object : Object.Reference := To;
begin
Token := Message'Value (Bs.Image (Object.Get (This_Message)));
case Token is
when En_Texte =>
Text_Io.Put ("Objet Integer (");
Text_Io.New_Line;
Text_Io.Put (" Classe =>");
Text_Io.Put (Object.E_Class'Image (Object.Get (To)));
Text_Io.New_Line;
Text_Io.Put (" Valeur =>");
Text_Io.Put (Object.Index'Image (Object.Get (To)));
Text_Io.New_Line;
Text_Io.Put (")");
Text_Io.New_Line (2);
return An_Object;
when Moins =>
Object.Put (-Object.Index'(Object.Get (An_Object)),
An_Object);
return An_Object;
end case;
exception
when Constraint_Error =>
return Object.Void_Reference;
end;
end if;
end Send;
function Send (This_Message : Object.Binary; To : Object.Reference)
return Object.Reference is
type Message is (Prendre, Plus, Moins, Mul, Div, Egal,
Diff, Sup, Sup_Egal, Inf, Inf_Egal);
Token : Message;
package Bs renames Bounded_String;
package Su renames String_Utilities;
begin
if Bs.Length (Object.Get (This_Message)) /= 0 then
declare
use Object;
An_Object : Object.Reference := To;
Value : Object.Index;
begin
Token := Message'Value (Bs.Image (Object.Get (This_Message)));
case Token is
when Prendre =>
null;
when Plus =>
Object.Put (Object.Get (An_Object) +
Object.Get (Object.Get (This_Message)),
An_Object);
return An_Object;
when Moins =>
Object.Put (Object.Get (An_Object) -
Object.Get (Object.Get (This_Message)),
An_Object);
return An_Object;
when Mul =>
Object.Put (Object.Get (An_Object) *
Object.Get (Object.Get (This_Message)),
An_Object);
return An_Object;
when Div =>
Object.Put (Object.Get (An_Object) /
Object.Get (Object.Get (This_Message)),
An_Object);
return An_Object;
when Egal =>
Value := Object.Get (Object.Get (This_Message));
Object.Put (Value, An_Object);
return An_Object;
when Diff =>
if Object.Index'(Object.Get
(Object.Get (This_Message))) /=
Object.Get (An_Object) then
return Object.Create (Class => Object.Boolean_Class,
Object => 1);
else
return Object.Create (Class => Object.Boolean_Class,
Object => 0);
end if;
when Sup =>
if Object.Index'(Object.Get
(Object.Get (This_Message))) >
Object.Get (An_Object) then
return Object.Create (Class => Object.Boolean_Class,
Object => 1);
else
return Object.Create (Class => Object.Boolean_Class,
Object => 0);
end if;
when Sup_Egal =>
if Object.Index'(Object.Get
(Object.Get (This_Message))) >=
Object.Get (An_Object) then
return Object.Create (Class => Object.Boolean_Class,
Object => 1);
else
return Object.Create (Class => Object.Boolean_Class,
Object => 0);
end if;
when Inf =>
if Object.Index'(Object.Get
(Object.Get (This_Message))) <
Object.Get (An_Object) then
return Object.Create (Class => Object.Boolean_Class,
Object => 1);
else
return Object.Create (Class => Object.Boolean_Class,
Object => 0);
end if;
when Inf_Egal =>
if Object.Index'(Object.Get
(Object.Get (This_Message))) <=
Object.Get (An_Object) then
return Object.Create (Class => Object.Boolean_Class,
Object => 1);
else
return Object.Create (Class => Object.Boolean_Class,
Object => 0);
end if;
end case;
exception
when Constraint_Error =>
return Object.Void_Reference;
end;
end if;
end Send;
function Send (This_Message : Object.Keyword; To : Object.Reference)
return Object.Reference is
type Message is (Fois, A_Repeter);
Token : Message;
package Bs renames Bounded_String;
package Su renames String_Utilities;
begin
if Bs.Length (Object.Get (This_Message)) /= 0 then
declare
Value : Object.Reference;
begin
Token := Message'Value (Bs.Image (Object.Get (This_Message)));
case Token is
when Fois =>
for I in 1 .. Object.Get (To) loop
null;
-- Value := Block_Class.Send (This_Message, To);
end loop;
return Value;
when A_Repeter =>
-- for I in Object.Get (To) ..
-- Object.Get (Object.Get (This_Message)) loop
null;
-- Value := Block_Class.Send (This_Message, To);
-- end loop;
return Value;
end case;
exception
when Constraint_Error =>
return Object.Void_Reference;
end;
end if;
end Send;
function Create (Value : Object.Index := 0) return Object.Reference is
An_Object : Object.Reference;
begin
Object.Put (Object.Integer_Class, An_Object);
Object.Put (Value, An_Object);
return An_Object;
end Create;
function Image (Objet : Object.Reference)
return Bounded_String.Variable_String is
use Object;
Chaine : Bounded_String.Variable_String (25);
Valeur : Object.Index;
begin
Valeur := Object.Get (Objet);
Bounded_String.Copy (Chaine, String_Utilities.Number_To_String
(Value => Integer (Valeur)));
return Chaine;
end Image;
function Value (Chaine : Object.Tiny_String) return Object.Reference is
An_Object : Object.Reference;
Bool : Boolean;
Entier : Integer;
begin
String_Utilities.String_To_Number
(Source => Bounded_String.Image (Chaine),
Worked => Bool,
Target => Entier);
Object.Put (Object.Integer_Class, An_Object);
Object.Put (Object.Index (Entier), An_Object);
return An_Object;
end Value;
end Class_Integer;
nblk1=c
nid=b
hdr6=16
[0x00] rec0=1f rec1=00 rec2=01 rec3=080
[0x01] rec0=19 rec1=00 rec2=02 rec3=044
[0x02] rec0=04 rec1=00 rec2=0c rec3=012
[0x03] rec0=17 rec1=00 rec2=09 rec3=018
[0x04] rec0=13 rec1=00 rec2=06 rec3=014
[0x05] rec0=11 rec1=00 rec2=04 rec3=050
[0x06] rec0=11 rec1=00 rec2=08 rec3=028
[0x07] rec0=17 rec1=00 rec2=07 rec3=024
[0x08] rec0=19 rec1=00 rec2=03 rec3=01a
[0x09] rec0=21 rec1=00 rec2=05 rec3=002
[0x0a] rec0=10 rec1=00 rec2=0a rec3=000
[0x0b] rec0=7f rec1=00 rec2=00 rec3=000
tail 0x2172dbbde84c893693dd5 0x42a00088462060003
Free Block Chain:
0xb: 0000 00 00 00 3b 80 0b 20 49 6e 66 5f 45 67 61 6c 29 ┆ ; Inf_Egal)┆