|
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 - 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;