Go to the first, previous, next, last section, table of contents.
-
A remote types library unit supports the definition of types intended
for use in communication between active partitions.
Syntax
-
The form of a pragma Remote_Types is as follows:
-
pragma Remote_Types[(library_unit_name)];
Legality Rules
-
A remote types library unit is a library unit to which the pragma
Remote_Types applies. The following restrictions apply to the
declaration of such a library unit:
-
it shall be preelaborable;
-
it shall depend semantically only on declared pure, shared passive, or
other remote types library units;
-
it shall not contain the declaration of any variable within the visible
part of the library unit;
-
if the full view of a type declared in the visible part of the library
unit has a part that is of a non-remote access type, then that access
type, or the type of some part that includes the access type
subcomponent, shall have user-specified Read and Write attributes.
-
An access type declared in the visible part of a remote types or remote
call interface library unit is called a remote access type. Such a type
shall be either an access-to-subprogram type or a general access type
that designates a class-wide limited private type.
-
The following restrictions apply to the use of a remote
access-to-subprogram type:
-
A value of a remote access-to-subprogram type shall be converted only to
another (subtype-conformant) remote access-to-subprogram type;
-
The prefix of an Access attribute_reference that yields a value of a
remote access-to-subprogram type shall statically denote a
(subtype-conformant) remote subprogram.
-
The following restrictions apply to the use of a remote
access-to-class-wide type:
-
The primitive subprograms of the corresponding specific limited private
type shall only have access parameters if they are controlling formal
parameters; the types of all the non-controlling formal parameters shall
have Read and Write attributes.
-
A value of a remote access-to-class-wide type shall be explicitly
converted only to another remote access-to-class-wide type;
-
A value of a remote access-to-class-wide type shall be dereferenced (or
implicitly converted to an anonymous access type) only as part of a
dispatching call where the value designates a controlling operand of the
call, See section E.4 Remote Subprogram Calls,
-
The Storage_Pool and Storage_Size attributes are not defined for remote
access-to-class-wide types; the expected type for an allocator shall not
be a remote access-to-class-wide type; a remote access-to-class-wide
type shall not be an actual parameter for a generic formal access type;
NOTES
-
(5) A remote types library unit need not be pure, and the types it
defines may include levels of indirection implemented by using access
types. User-specified Read and Write attributes, See section 13.13.2 Stream-Oriented Attributes provide
for sending values of such a type between active partitions, with Write
marshalling the representation, and Read unmarshalling any levels of
indirection.
Go to the first, previous, next, last section, table of contents.