OSDN Git Service

PR 33870
[pf3gnuchains/gcc-fork.git] / gcc / ada / sem_dist.ads
index b5c823d..da64ef8 100644 (file)
@@ -6,37 +6,52 @@
 --                                                                          --
 --                                 S p e c                                  --
 --                                                                          --
---                            $Revision: 1.56 $
---                                                                          --
---          Copyright (C) 1992-2000 Free Software Foundation, Inc.          --
+--          Copyright (C) 1992-2007, Free Software Foundation, Inc.         --
 --                                                                          --
 -- GNAT is free software;  you can  redistribute it  and/or modify it under --
 -- terms of the  GNU General Public License as published  by the Free Soft- --
--- ware  Foundation;  either version 2,  or (at your option) any later ver- --
+-- ware  Foundation;  either version 3,  or (at your option) any later ver- --
 -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
 -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
 -- or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License --
 -- for  more details.  You should have  received  a copy of the GNU General --
--- Public License  distributed with GNAT;  see file COPYING.  If not, write --
--- to  the Free Software Foundation,  59 Temple Place - Suite 330,  Boston, --
--- MA 02111-1307, USA.                                                      --
+-- Public License  distributed with GNAT; see file COPYING3.  If not, go to --
+-- http://www.gnu.org/licenses for a complete copy of the license.          --
 --                                                                          --
 -- GNAT was originally developed  by the GNAT team at  New York University. --
--- It is now maintained by Ada Core Technologies Inc (http://www.gnat.com). --
+-- Extensive contributions were provided by Ada Core Technologies Inc.      --
 --                                                                          --
 ------------------------------------------------------------------------------
 
 --  Semantic processing for distribution annex facilities
 
-with Types; use Types;
+with Snames; use Snames;
+with Types;  use Types;
 
 package Sem_Dist is
 
+   function Get_PCS_Name return PCS_Names;
+   --  Return the name of a literal of type System.Partition_Interface.
+   --  DSA_Implementation_Type indicating what PCS is currently in use.
+
+   function Get_PCS_Version return Int;
+   --  Return the version number of the PCS API implemented by the PCS.
+   --  The consistency of this version with the one expected by Exp_Dist
+   --  (Exp_Dist.PCS_Version_Number) in Rtsfind.RTE.Check_RPC.
+   --  If no PCS version information is available, 0 is returned.
+
    procedure Add_Stub_Constructs (N : Node_Id);
    --  Create the stubs constructs for a remote call interface package
-   --  specification or body or for a shared passive specification. For
-   --  caller stubs, expansion takes place directly in the specification and
-   --  no additional compilation unit is created.
+   --  specification or body or for a shared passive specification. For caller
+   --  stubs, expansion takes place directly in the specification and no
+   --  additional compilation unit is created.
+
+   function Build_RAS_Primitive_Specification
+     (Subp_Spec          : Node_Id;
+      Remote_Object_Type : Node_Id) return Node_Id;
+   --  Build a subprogram specification for the primitive operation of the
+   --  Remote_Object_Type used to implement a remote access-to-subprogram
+   --  type whose parameter profile is given by specification Subp_Spec.
 
    function Is_All_Remote_Call (N : Node_Id) return Boolean;
    --  Check whether a function or procedure call should be expanded into
@@ -54,40 +69,33 @@ package Sem_Dist is
    --  whose return type is New_Type.
 
    procedure Process_Remote_AST_Declaration (N : Node_Id);
-   --  Given N, an access to subprogram type declaration node in RCI or
-   --  remote types unit, build a new record (fat pointer) type declaration
-   --  using the old Defining_Identifier of N and a link to the old
-   --  declaration node N whose Defining_Identifier is changed.
-   --  We also construct declarations of two subprograms in the unit
-   --  specification which handle remote access to subprogram type
-   --  (fat pointer) dereference and the unit receiver that handles
-   --  remote calls (from remote access to subprogram type values.)
+   --  Given N, an access to subprogram type declaration node in RCI or remote
+   --  types unit, build a new record (fat pointer) type declaration using the
+   --  old Defining_Identifier of N and a link to the old declaration node N
+   --  whose Defining_Identifier is changed. We also construct declarations of
+   --  two subprograms in the unit specification which handle remote access to
+   --  subprogram type (fat pointer) dereference and the unit receiver that
+   --  handles remote calls (from remote access to subprogram type values.)
 
    function Remote_AST_E_Dereference (P : Node_Id) return Boolean;
    --  If the prefix of an explicit dereference is a record type that
-   --  represent the fat pointer for an Remote access to subprogram, in
-   --  the context of a call, rewrite the enclosing call node into a
-   --  remote call, the first actual of which is the fat pointer. Return
-   --  true if the context is correct and the transformation took place.
+   --  represent the fat pointer for an Remote access to subprogram, in the
+   --  context of a call, rewrite the enclosing call node into remote call,
+   --  the first actual of which is the fat pointer. Return true if the
+   --  context is correct and the transformation took place.
 
    function Remote_AST_I_Dereference (P : Node_Id) return Boolean;
    --  If P is a record type that represents the fat pointer for a remote
-   --  access to subprogram, and P is the prefix of a call, insert an
-   --  explicit dereference and perform the transformation described for
-   --  the previous function.
+   --  access to subprogram, and P is the prefix of a call, insert an explicit
+   --  dereference and perform the transformation described for the previous
+   --  function.
 
    function Remote_AST_Null_Value
-     (N    : Node_Id;
-      Typ  : Entity_Id)
-      return Boolean;
-   --  If N is a null value and Typ a remote access to subprogram type,
-   --  this function will check if null needs to be replaced with an
-   --  aggregate and will return True in this case. Otherwise, it will
-   --  return False.
-
-   function Get_Subprogram_Id (E : Entity_Id) return Int;
-   --  Given a subprogram defined in a RCI package, get its subprogram id
-   --  which will be used for remote calls.
+     (N   : Node_Id;
+      Typ : Entity_Id) return Boolean;
+   --  If N is a null value and Typ a remote access to subprogram type, this
+   --  function will check if null needs to be replaced with an aggregate and
+   --  will return True in this case. Otherwise, it will return False.
 
    function Package_Specification_Of_Scope (E : Entity_Id) return Node_Id;
    --  Return the N_Package_Specification corresponding to a scope E