|
|
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: T V
Length: 25792 (0x64c0)
Types: TextFile
Names: »V«
└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00
└─⟦0c20f784e⟧ »DATA«
└─⟦1abbe589f⟧
└─⟦059497ac5⟧
└─⟦this⟧
with Xlbt_Arithmetic;
use Xlbt_Arithmetic;
with Xlbt_String;
use Xlbt_String;
package Xlbt_Proc_Var is
------------------------------------------------------------------------------
-- X Library Machine Types
--
-- Xlbt_Proc_Var - Machine/Compiler dependent procedure-variable interface
------------------------------------------------------------------------------
-- Copyright 1989 - 1991 by Rational, Santa Clara, California.
--
-- All Rights Reserved.
--
-- Permission to use, copy, modify, and distribute this software and its
-- documentation for any purpose and without fee is hereby granted,
-- provided that the above copyright notice(s) appear in all copies and that
-- both that copyright notice(s) and this permission notice appear in
-- supporting documentation, and that the name of Rational not be used in
-- advertising or publicity pertaining to distribution of the software
-- without specific, written prior permission.
--
-- Rational disclaims all warranties with regard to this software, including
-- all implied warranties of merchantability and fitness, in no event shall
-- Rational be liable for any special, indirect or consequential damages or
-- any damages whatsoever resulting from loss of use, data or profits, whether
-- in an action of contract, negligence or other tortious action, arising out
-- of or in connection with the use or performance of this software.
------------------------------------------------------------------------------
--\f
------------------------------------------------------------------------------
-- X_Procedure_Signature - Unique numeric ID's
------------------------------------------------------------------------------
type X_Procedure_Signature is private;
None_X_Procedure_Signature : constant X_Procedure_Signature;
------------------------------------------------------------------------------
-- X_Procedure_Variable
--
-- Note: On some systems, procedure variable values are implemented by
-- allocating heap storage. Be sure to use the appropriate Free routine
-- on all procedure variable values when they are no longer needed. This
-- will prevent storage loss.
--
-- The GET functions may raise implementation specific exceptions in some
-- cases. E.g. An implementation does not allow a nested procedure to be
-- referenced in this fashion.
--
-- The CALL routine/function will raise X_Invalid_Procedure_Variable if:
-- a) Pv = None_X_Procedure_Variable, or,
-- b) the procedure variable value does not correspond to a value with the
-- proper parameter profile (the signature is different), or,
-- c) Pv is a freed procedure variable value (this may or may not be
-- detectable for all implementations and some other implementation
-- specific exception may be raised instead).
--
-- The FREE routine will raise X_Invalid_Procedure_Variable if:
-- a) Pv = None_X_Procedure_Variable, or,
-- b) the procedure variable value does not correspond to a value with the
-- proper parameter profile (the signature is different), or,
-- c) Pv is a freed procedure variable value (this may or may not be
-- detectable for all implementations and some other implementation
-- specific exception may be raised instead).
------------------------------------------------------------------------------
type X_Procedure_Variable_Rec is private;
type X_Procedure_Variable is access X_Procedure_Variable_Rec;
None_X_Procedure_Variable : constant X_Procedure_Variable := null;
--\f
function X_Procedure_Variable_Signature (Pvv : X_Procedure_Variable)
return X_Procedure_Signature;
------------------------------------------------------------------------------
-- Pvv - Specifies the procedure variable to use
--
-- Called to obtain the X_Procedure_Signature value for the specified procedure
-- variable value.
--
-- Raises X_Invalid_Procedure_Variable if
-- a) Ptr = None_X_Procedure_Variable, or,
-- b) Ptr is a freed procedure variable value (this may or may not be
-- detectable for all implementations and some other implementation
-- specific exception may be raised instead).
------------------------------------------------------------------------------
function X_Equal_Signature (Pval1 : X_Procedure_Variable;
Pval2 : X_Procedure_Variable) return Boolean;
function X_Equal_Signature (Pval : X_Procedure_Variable;
Sig : X_Procedure_Signature) return Boolean;
function X_Equal_Signature (Sig1 : X_Procedure_Signature;
Sig2 : X_Procedure_Signature) return Boolean;
--------------------------------------------------------------------------
-- Returns TRUE if a) either value is None or b) the signature value of the
-- first parameter is the same as the signature value for the second parameter.
------------------------------------------------------------------------------
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 1 In Out parameter.
------------------------------------------------------------------------------
generic
type Parm1 is private;
package Proc_Inout is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data : in out Parm1);
----Call the procedure variable value with this argument.
generic
with procedure Called (Data : in out Parm1);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_Inout;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 1 In parameter.
------------------------------------------------------------------------------
generic
type Parm1 is private;
package Proc_In is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data : in Parm1);
----Call the procedure variable value with this argument.
generic
with procedure Called (Data : in Parm1);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 2 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
package Proc_In_In is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2);
----Call the procedure variable value with these arguments.
generic
with procedure Called (Data1 : in Parm1;
Data2 : in Parm2);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In_In;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 3 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
package Proc_In_In_In is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3);
----Call the procedure variable value with these arguments.
generic
with procedure Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In_In_In;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 4 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Parm4 is private;
package Proc_In_In_In_In is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4);
----Call the procedure variable value with these arguments.
generic
with procedure Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In_In_In_In;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 10 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Parm4 is private;
type Parm5 is private;
type Parm6 is private;
type Parm7 is private;
type Parm8 is private;
type Parm9 is private;
type Parm10 is private;
package Proc_In10 is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4;
Data5 : in Parm5;
Data6 : in Parm6;
Data7 : in Parm7;
Data8 : in Parm8;
Data9 : in Parm9;
Data10 : in Parm10);
----Call the procedure variable value with these arguments.
generic
with procedure Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4;
Data5 : in Parm5;
Data6 : in Parm6;
Data7 : in Parm7;
Data8 : in Parm8;
Data9 : in Parm9;
Data10 : in Parm10);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In10;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 3 In parameters and 2 out parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Parm4 is private;
type Parm5 is private;
package Proc_In_In_In_Out_Out is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : out Parm4;
Data5 : out Parm5);
----Call the procedure variable value with these arguments.
generic
with procedure Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : out Parm4;
Data5 : out Parm5);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In_In_In_Out_Out;
--\f
------------------------------------------------------------------------------
-- Procedure Variable - Procedure with 2 In parameters and 2 out parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Parm4 is private;
package Proc_In_In_Out_Out is
type Pv is private;
None : constant Pv;
procedure Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : out Parm3;
Data4 : out Parm4);
----Call the procedure variable value with these arguments.
generic
with procedure Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : out Parm3;
Data4 : out Parm4);
function Value return Pv;
----Obtain a procedure variable value for this procedure.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Proc_In_In_Out_Out;
--\f
------------------------------------------------------------------------------
-- Function Variable - Function with 1 In parameter.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Ret is private;
package Func_In is
type Pv is private;
None : constant Pv;
function Call (Pvv : Pv;
Data : in Parm1) return Ret;
----Call the function variable value with this argument.
generic
with function Called (Data : in Parm1) return Ret;
function Value return Pv;
----Obtain a function variable value for this function.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Func_In;
--\f
------------------------------------------------------------------------------
-- Function Variable - Function with 1 In parameters returns X_String.
------------------------------------------------------------------------------
generic
type Parm1 is private;
package Func_In_X_String is
type Pv is private;
None : constant Pv;
function Call (Pvv : Pv;
Data1 : in Parm1) return X_String;
----Call the function variable value with these arguments.
generic
with function Called (Data1 : in Parm1) return X_String;
function Value return Pv;
----Obtain a function variable value for this function.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Func_In_X_String;
--\f
------------------------------------------------------------------------------
-- Function Variable - Function with 3 In parameters returns String.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
package Func_In_In_In_X_String is
type Pv is private;
None : constant Pv;
function Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3) return X_String;
----Call the function variable value with these arguments.
generic
with function Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3) return X_String;
function Value return Pv;
----Obtain a function variable value for this function.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Func_In_In_In_X_String;
--\f
------------------------------------------------------------------------------
-- Function Variable - Function with 3 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Ret is private;
package Func_In_In_In is
type Pv is private;
None : constant Pv;
function Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3) return Ret;
----Call the function variable value with this argument.
generic
with function Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3) return Ret;
function Value return Pv;
----Obtain a function variable value for this function.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Func_In_In_In;
--\f
------------------------------------------------------------------------------
-- Function Variable - Function with 5 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Parm4 is private;
type Parm5 is private;
type Ret is private;
package Func_In5 is
type Pv is private;
None : constant Pv;
function Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4;
Data5 : in Parm5) return Ret;
----Call the function variable value with this argument.
generic
with function Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4;
Data5 : in Parm5) return Ret;
function Value return Pv;
----Obtain a function variable value for this function.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Func_In5;
--\f
------------------------------------------------------------------------------
-- Function Variable - Function with 10 In parameters.
------------------------------------------------------------------------------
generic
type Parm1 is private;
type Parm2 is private;
type Parm3 is private;
type Parm4 is private;
type Parm5 is private;
type Parm6 is private;
type Parm7 is private;
type Parm8 is private;
type Parm9 is private;
type Parm10 is private;
type Ret is private;
package Func_In10 is
type Pv is private;
None : constant Pv;
function Call (Pvv : Pv;
Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4;
Data5 : in Parm5;
Data6 : in Parm6;
Data7 : in Parm7;
Data8 : in Parm8;
Data9 : in Parm9;
Data10 : in Parm10) return Ret;
----Call the function variable value with this argument.
generic
with function Called (Data1 : in Parm1;
Data2 : in Parm2;
Data3 : in Parm3;
Data4 : in Parm4;
Data5 : in Parm5;
Data6 : in Parm6;
Data7 : in Parm7;
Data8 : in Parm8;
Data9 : in Parm9;
Data10 : in Parm10) return Ret;
function Value return Pv;
----Obtain a function variable value for this function.
procedure Free (Pvv : in out Pv);
----Called to deallocate the Pv value.
function To_Pv (Pvv : X_Procedure_Variable) return Pv;
function From_Pv (Pvv : Pv) return X_Procedure_Variable;
private
type Pv is new X_Procedure_Variable;
None : constant Pv := Pv (None_X_Procedure_Variable);
end Func_In10;
--\f
private
type X_Procedure_Signature is
record
First : S_Long;
Second : S_Long;
end record;
None_X_Procedure_Signature : constant X_Procedure_Signature :=
(First => S_Long'First,
Second => S_Long'First);
type X_Procedure_Data_Rec;
type X_Procedure_Data is access X_Procedure_Data_Rec;
type X_Procedure_Variable_Rec is
record
Key : S_Long;
Data : X_Procedure_Data;
end record;
end Xlbt_Proc_Var;