Contents Index Previous Next
E.2.2 Remote Types Library Units
1
A remote types library unit supports the definition
of types intended for use in communication between active partitions.
Syntax
2
The
form of a
pragma Remote_Types is
as follows:
3
pragma Remote_Types[(
library_unit_name)];
Legality Rules
4
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:
5
- it shall be preelaborable;
6
- it shall depend semantically only on declared pure, shared
passive, or other remote types library units;
7
- it shall not contain the declaration of any variable within
the visible part of the library unit;
8
- 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.
9/1
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:
9.1/1
- an access-to-subprogram type, or
9.2/1
- a general access type that designates a class-wide limited
private type or a class-wide private type extension all of whose ancestors
are either private type extensions or limited private types.
9.3/1
A type that is derived from a remote access
type is also a remote access type.
10
The following restrictions
apply to the use of a remote access-to-subprogram type:
11
- A value of a remote access-to-subprogram type shall be
converted only to another (subtype-conformant) remote access-to-subprogram
type;
12
- 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.
13
The following restrictions
apply to the use of a remote access-to-class-wide type:
14/1
- The primitive subprograms of the corresponding specific
limited private type shall only have access parameters if they are controlling
formal parameters; each non-controlling formal parameter shall have either
a nonlimited type or a type with Read and Write attributes specified
via an attribute_definition_clause;
15
- A value of a remote access-to-class-wide type shall be
explicitly converted only to another remote access-to-class-wide type;
16/1
- 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 E.4, ``Remote
Subprogram Calls'').
17/1
- 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.
18
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 13.13.2) provide
for sending values of such a type between active partitions, with Write
marshalling the representation, and Read unmarshalling any levels of
indirection.
Contents Index Previous Next Legal