|
|
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: 3881 (0xf29)
Types: TextFile
Names: »B«
└─⟦afbc8121e⟧ Bits:30000532 8mm tape, Rational 1000, MC68020_OS2000 7_2_2
└─⟦77aa8350c⟧ »DATA«
└─⟦f794ecd1d⟧
└─⟦24d1ddd49⟧
└─⟦this⟧
separate (Shared_Code_Generic_Support)
procedure Unary_Dispatch (Type_Desc : Type_Descriptor;
Exp : Expression;
Exp_Kind : Expression_Kind) is
pragma Suppress_All;
pragma Routine_Number (Runtime_Ids.Internal);
Exp_Data_Kind : constant Data_Kind :=
Data_Kind_Of (Type_Desc.Type_Kind, Exp_Kind);
begin
case Exp_Data_Kind is
when Undefined =>
null;
when Value =>
Unary_Value_Op (Exp);
when Data_Ptr =>
declare
package Data_Subtype is
new Establish_Data_Subtype
(Get_Value_Size (Type_Desc, Exp, Exp_Kind));
Exp_Data_Ref : constant Data_Subtype.Data_Ref :=
Data_Subtype.Cnvt (Exp);
Exp_Data : Data_Subtype.Actual_Data renames Exp_Data_Ref.all;
begin
Unary_Data_Op (Exp_Data);
end;
when Dv_Data_Ptr =>
declare
Dope_Vector_Size : constant Integer :=
Get_Dope_Vector_Size (Type_Desc.Constraints);
package Dv_Subtype is
new Establish_Dope_Vector_Subtype (Dope_Vector_Size);
Exp_Dope_Ref : constant Dv_Subtype.Dope_Ref :=
Dv_Subtype.Cnvt (Exp);
Exp_Dope : Dv_Subtype.Actual_Dope renames Exp_Dope_Ref.all;
package Data_Subtype is
new Establish_Data_Subtype (Exp_Dope (1).Size);
Exp_Data_Ref : constant Data_Subtype.Data_Ref :=
Data_Subtype.Cnvt (System.Address (Exp) + Dope_Vector_Size);
Exp_Data : Data_Subtype.Actual_Data renames Exp_Data_Ref.all;
begin
Unary_Unconstrained_Array_Op (Exp_Dope, Exp_Data);
end;
when Unconstrained_Array_Desc_Ptr =>
declare
Uncons_Desc_Ref : constant Unconstrained_Descriptor_Ref :=
Cnvt (Exp);
package Dv_Subtype is
new Establish_Dope_Vector_Subtype
(Get_Dope_Vector_Size (Type_Desc.Constraints));
Exp_Dope_Ref : constant Dv_Subtype.Dope_Ref :=
Dv_Subtype.Cnvt (Uncons_Desc_Ref.all.Constraint);
Exp_Dope : Dv_Subtype.Actual_Dope renames Exp_Dope_Ref.all;
package Data_Subtype is
new Establish_Data_Subtype (Exp_Dope (1).Size);
Exp_Data_Ref : constant Data_Subtype.Data_Ref :=
Data_Subtype.Cnvt (Uncons_Desc_Ref.all.Data);
Exp_Data : Data_Subtype.Actual_Data renames Exp_Data_Ref.all;
begin
Unary_Unconstrained_Array_Op (Exp_Dope, Exp_Data);
end;
when Unconstrained_Record_Desc_Ptr =>
declare
Uncons_Desc_Ref : constant Unconstrained_Descriptor_Ref :=
Cnvt (Exp);
package Data_Subtype is
new Establish_Data_Subtype
(Get_Value_Size (Type_Desc, Exp, Exp_Kind));
Exp_Constrained_Ref : constant Boolean_Ref :=
Cnvt (Uncons_Desc_Ref.all.Constraint'Address);
Exp_Constrained : Boolean renames Exp_Constrained_Ref.all;
Exp_Data_Ref : constant Data_Subtype.Data_Ref :=
Data_Subtype.Cnvt (Uncons_Desc_Ref.all.Data);
Exp_Data : Data_Subtype.Actual_Data renames Exp_Data_Ref.all;
begin
Unary_Unconstrained_Record_Op (Exp_Constrained, Exp_Data);
end;
end case;
end Unary_Dispatch;
pragma Runtime_Unit (Unit_Number => Runtime_Ids.Runtime_Compunit,
Elab_Routine_Number => Runtime_Ids.Internal);