DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T V

⟦78d882a3f⟧ TextFile

    Length: 25792 (0x64c0)
    Types: TextFile
    Names: »V«

Derivation

└─⟦85b835f43⟧ Bits:30000549 8mm tape, Rational 1000, Xlib rev 6.00
    └─ ⟦0c20f784e⟧ »DATA« 
        └─⟦1abbe589f⟧ 
            └─⟦059497ac5⟧ 
                └─⟦this⟧ 

TextFile

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;