|
|
DataMuseum.dkPresents historical artifacts from the history of: Rational R1000/400 Tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Rational R1000/400 Tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: B T
Length: 5206 (0x1456)
Types: TextFile
Names: »B«
└─⟦a7d1ea751⟧ Bits:30000550 8mm tape, Rational 1000, !users!projects 94_04_11
└─⟦129cab021⟧ »DATA«
└─⟦this⟧
with Text_Io;
with Object;
with Error_Broadcaster;
with Bounded_String;
with String_Utilities;
package body Boolean_Class is
type Binary_Message is (Et, Ou);
type Unary_Message is (Entexte, Non);
function Send (To_Object : Object.Reference; The_Message : Object.Message)
return String is
Message : Unary_Message;
Obj : Object.Reference;
begin
Message := Unary_Message'Value (Bounded_String.Image (The_Message));
Obj := To_Object;
case Message is
when Non =>
return ("");
when Entexte =>
if To_Object.Identity = 0 then
return ("faux");
else
if To_Object.Identity = 1 then
return ("vrai");
end if;
end if;
end case;
end Send;
function Send (To_Object : Object.Reference; The_Message : Object.Message)
return Object.Reference is
Message : Unary_Message;
Obj : Object.Reference;
begin
Message := Unary_Message'Value (Bounded_String.Image (The_Message));
Obj := To_Object;
case Message is
when Non =>
Obj.Identity := (To_Object.Identity + 1) mod 2;
when Entexte =>
if To_Object.Identity = 0 then
Text_Io.Put ("faux");
else
if To_Object.Identity = 1 then
Text_Io.Put ("vrai");
end if;
end if;
end case;
return Obj;
exception
when Constraint_Error =>
raise Error_Broadcaster.Unknown_Unary_Message;
end Send;
function Send (To_Object : Object.Reference;
The_Message : Object.Message;
The_Argument : Object.Reference) return Object.Reference is
Message : Binary_Message;
Obj : Object.Reference;
begin
Message := Binary_Message'Value (Bounded_String.Image (The_Message));
case Message is
when Et =>
Obj.Identity := (To_Object.Identity * The_Argument.Identity);
Obj.Class := Object.Tiny_Boolean;
when Ou =>
Obj.Identity :=
(To_Object.Identity + The_Argument.Identity) / 2 +
(To_Object.Identity + The_Argument.Identity) mod 2;
Obj.Class := Object.Tiny_Boolean;
end case;
return Obj;
exception
when Constraint_Error =>
raise Error_Broadcaster.Boolean_Bad_Type;
end Send;
function Send (To_Object : Object.Reference;
The_Argument : Object.Parameters.List)
return Object.Reference is
Obj : Object.Reference;
Local_Argument : Object.Parameters.List := The_Argument;
The_Message : Object.Message;
begin
Bounded_String.Copy (The_Message, "valeur");
if (String_Utilities.Equal
(Bounded_String.Image
(Object.Parameters.Selector (Local_Argument)),
"siVrai:", True)) then
if (To_Object.Identity = 1) then
Object.Parameters.Get (Local_Argument, Obj);
return (Object.Send (Obj, The_Message));
else
return Object.Void_Reference;
end if;
elsif (String_Utilities.Equal
(Bounded_String.Image
(Object.Parameters.Selector (Local_Argument)),
"siFaux:", True)) then
if (To_Object.Identity = 0) then
Object.Parameters.Get (Local_Argument, Obj);
return (Object.Send (Obj, The_Message));
else
return Object.Void_Reference;
end if;
elsif String_Utilities.Equal
(Bounded_String.Image
(Object.Parameters.Selector (Local_Argument)),
"siVrai:siFaux:", True) then
if (To_Object.Identity = 1) then
Object.Parameters.Get (Local_Argument, Obj);
return (Object.Send (Obj, The_Message));
elsif (To_Object.Identity = 0) then
Object.Parameters.Get (Local_Argument, Obj);
Object.Parameters.Get (Local_Argument, Obj);
return (Object.Send (Obj, The_Message));
end if;
elsif String_Utilities.Equal
(Bounded_String.Image
(Object.Parameters.Selector (Local_Argument)),
"siFaux:siVrai:", True) then
if (To_Object.Identity = 0) then
Object.Parameters.Get (Local_Argument, Obj);
return (Object.Send (Obj, The_Message));
elsif (To_Object.Identity = 1) then
Object.Parameters.Get (Local_Argument, Obj);
Object.Parameters.Get (Local_Argument, Obj);
return (Object.Send (Obj, The_Message));
end if;
else
raise Error_Broadcaster.Unknown_Keyword_Message;
end if;
end Send;
end Boolean_Class;