Ada Reference ManualLegal Information
Contents   Index   References   Search   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/2
the full view of each type declared in the visible part of the library unit that has any available stream attributes shall support external streaming (see 13.13.2).
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/2
A value of a remote access-to-subprogram type shall be converted only to or from 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/2
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 support external streaming (see 13.13.2);
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/2
The Storage_Pool attribute is not defined for a remote access-to-class-wide type; 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. The Storage_Size attribute of a remote access-to-class-wide type yields 0; it is not allowed in an attribute_definition_clause.
NOTES
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   References   Search   Previous   Next 
Ada-Europe Sponsored by Ada-Europe