!standard 13.13.2(52/2) 08-04-18 AI05-0065-1/03 !class binding interpretation 07-10-18 !status Amendment 201Z 08-11-26 !status WG9 Approved 08-06-20 !status ARG Approved 8-0-1 06-11-11 !status work item 07-10-18 !status received 07-08-08 !priority Low !difficulty Easy !qualifier Error !subject Remote access types should be defined as externally streamable !summary All remote access types are allowed in a Remote_Types packages; they are not required to have stream attributes specified by a visible attribute_definition_clause. !question A Remote_Types packages requires [E.2.2(8/2)] that 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). This seems to imply that remote access types are not allowed unless they meet the requirements of 13.13.2(52/2), which says that access types must have Read and Write attributes specified by a visible attribute_definition_clause. But that's bizarre, because their purpose is to be communicable across partitions. What is the intent? !recommendation (See Summary.) !wording Modify 13.13.2(52/2): A type is said to *support external streaming* if Read and Write attributes are provided for sending values of such a type between active partitions, with Write marshalling the representation, and Read unmarshalling the representation. A limited type supports external streaming only if it has available Read and Write attributes. A type with a part that is of {a non-remote}[an] access type supports external streaming only if that access type or the type of some part that includes the access type component, has Read and Write attributes that have been specified via an attribute_definition_clause, and that attribute_definition_clause is visible. An anonymous access type does not support external streaming. All other types {(including remote access types, see E.2.2)} support external streaming. !discussion It is easier to define "remote access types" to be externally streamable than to add additional text to Annex E. While such access types are not necessarily streamable outside of partition communication (for instance, they may not work to disk files), that's not relevant for the formal definition of "externally streamable" (which is only about partition communication). This is mildly annoying, as it is different than the intuitive meaning of "externally streamable". But it isn't sufficient reason to add a bunch of additional text to Annex E. !corrigendum 13.13.2(52/2) @drepl A type is said to @i if Read and Write attributes are provided for sending values of such a type between active partitions, with Write marshalling the representation, and Read unmarshalling the representation. A limited type supports external streaming only if it has available Read and Write attributes. A type with a part that is of an access type supports external streaming only if that access type or the type of some part that includes the access type component, has Read and Write attributes that have been specified via an @fa, and that @fa is visible. An anonymous access type does not support external streaming. All other types support external streaming. @dby A type is said to @i if Read and Write attributes are provided for sending values of such a type between active partitions, with Write marshalling the representation, and Read unmarshalling the representation. A limited type supports external streaming only if it has available Read and Write attributes. A type with a part that is of a non-remote access type supports external streaming only if that access type or the type of some part that includes the access type component, has Read and Write attributes that have been specified via an @fa, and that @fa is visible. An anonymous access type does not support external streaming. All other types (including remote access types, see E.2.2) support external streaming. !ACATS Test An ACATS test should ensure that remote access types are allowed (it seems likely that one exists). !appendix From: Gary Dismukes Sent: Wednesday, August 8, 2007 1:43 PM The following restriction applies to Remote_Types packages: E.2.2(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). This seems to imply that remote access types are not allowed in the visible part unless they meet the requirements of 13.13.2(52/2), which says that access types must have Read and Write attributes specified by a visible attribute_definition_clause. But surely remote access types should always be treated as externally streamable, since their purpose is to be communicable across partitions, so it seems like there should be a rule added to define them as such in either 13.13.2(52/2) or somewhere in E.2.2. ****************************************************************