Go to the first, previous, next, last section, table of contents.


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:
    1. it shall be preelaborable;
    2. it shall depend semantically only on declared pure, shared passive, or other remote types library units;
    3. it shall not contain the declaration of any variable within the visible part of the library unit;
    4. 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.

  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 either an access-to-subprogram type or a general access type that designates a class-wide limited private type.
  2. The following restrictions apply to the use of a remote access-to-subprogram type:
    1. A value of a remote access-to-subprogram type shall be converted only to another (subtype-conformant) remote access-to-subprogram type;
    2. 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.

  1. The following restrictions apply to the use of a remote access-to-class-wide type:
    1. 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.
    2. A value of a remote access-to-class-wide type shall be explicitly converted only to another remote access-to-class-wide type;
    3. 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,
    4. 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

  1. (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.