CVS difference for ai05s/ai05-0101-1.txt
--- ai05s/ai05-0101-1.txt 2009/03/21 02:26:03 1.5
+++ ai05s/ai05-0101-1.txt 2009/05/31 03:47:37 1.6
@@ -1,4 +1,4 @@
-!standard E.2.2(14/2) 08-11-13 AI05-0101-1/04
+!standard E.2.2(14/2) 09-05-30 AI05-0101-1/05
!standard E.2.2(16/1)
!standard E.2.3(14/2)
!standard E.4(7)
@@ -27,13 +27,14 @@
E.2.2(14/2) specifies restrictions applying to the types of non-controlling
formals of the primitive operations of the limited private type associated
-with an remote access-to-classwise (RACW) type. Should the same restrictions
+with a remote access-to-classwide (RACW) type. Should the same restrictions
be applied to a non-controlling result, to ensure that the returned value
can be sent back to the calling partition? (Yes.)
-E.2.3(14/2) has similar language for RCI subprograms and RAS types.
-Should this clause be augmented to forbid functions returning a type that
-does not support external streaming? (Yes.)
+E.2.3(14/2) has similar language for remote call interface (RCI) subprograms
+and remote access-to-subprogram (RAS) types. Should this clause be augmented
+to forbid functions returning a type that does not support external
+streaming? (Yes.)
!wording
@@ -63,8 +64,9 @@
AARM Ramification: No anonymous access types support external streaming, so
they are never allowed as parameters or results of RCI subprograms.
-[Editor's note: I intend to delete the access parameter portion above as
-it is redundant and including it complicates the wording for little value.]
+[Editor's note: The access parameter portion of the wording above was
+intentionally deleted as it is redundant and including it complicates the
+wording for little value.]
Change E.4(7) as follows:
@@ -105,7 +107,7 @@
If controlling anonymous access parameters of dispatching subprograms can be
designated by a value of a remote access-to-class-wide type, it seems logical
that a controlling access result of a dispatching function should be treated
-the same way; as a result type that can be designated by a value of a remote
+the same way: as a result type that can be designated by a value of a remote
access-to-class-wide type. Indeed, there does not seem to be any other semantic
meaning that could be applied to such an access result returned from a remote
function call. It surely must be a value of a remote access-to-class-wide type.
@@ -115,7 +117,7 @@
access-to-class-wide type as a controlling access result, then special wording
will need to be added to the RM to allow this, similar to the wording used to
allow streaming of remote access-to-class-wide types for subprogram parameters.
-The wording should should add restrictions that ensure such a result is either
+The wording should add restrictions that ensure such a result is either
explicitly converted to a remote access-to-class-wide type by the caller, or
used as a controlling operand of another dispatching call to a remote subprogram.
@@ -131,11 +133,11 @@
to an anonymous access type) only as part of a dispatching call where the value
designates a controlling operand of the call”.
-These rules makes it impossible for a local function to obtain a value of a
+These rules make it impossible for a local function to obtain a value of a
remote access-to-class-wide type and return it to the caller, because it would
-have to be implictly converted from an access-to-class-wide type to an anonymous
+have to be implicitly converted from an access-to-class-wide type to an anonymous
access-to-specific type of the controlling result, which is not allowed. For the
-same reason, these rules makes it impossible for a remote function to obtain a
+same reason, these rules make it impossible for a remote function to obtain a
value of a remote access-to-class-wide type from another partition and return
that value to the caller.
@@ -145,7 +147,8 @@
remote subprogram calls, but remote types library units also define remote
subprogram calls and remote access types for issuing remote subprogram calls.
-An example, showing the usage of functions that return remote access types;
+Here is an example, showing the usage of functions that return remote access
+types:
package P is
pragma Remote_Types;
@@ -159,8 +162,19 @@
type T is tagged limited null record;
end P;
-with Distributed_P;
+with P;
+package Distributed_P is
+
+ pragma Remote_Call_Interface;
+
+ type T_Access is access all P.T'Class;
+ procedure Set_Foo (Item : T_Access);
+
+ function Get_Foo return T_Access;
+end Distributed_P;
+
+with Distributed_P;
package body P is
Foo : aliased T;
@@ -180,19 +194,6 @@
end Remote_Call;
end Foo_Pkg;
-
-with P;
-
-package Distributed_P is
-
- pragma Remote_Call_Interface;
-
- type T_Access is access all P.T'Class;
-
- procedure Set_Foo (Item : T_Access);
-
- function Get_Foo return T_Access;
-end Distributed_P;
package body Distributed_P is
Questions? Ask the ACAA Technical Agent