CVS difference for ais/ai-00260.txt

Differences between 1.6 and version 1.7
Log of other versions for file ais/ai-00260.txt

--- ais/ai-00260.txt	2001/09/08 01:42:48	1.6
+++ ais/ai-00260.txt	2001/10/19 01:36:44	1.7
@@ -5,7 +5,7 @@
 !status received 01-02-13
 !priority Low
 !difficulty Medium
-!subject How to replace S'Class'Input with custom versions
+!subject How to control the tag representation in a stream
 
 !summary
 
@@ -37,14 +37,14 @@
 
    S'Tag_Write
 
-        procedure S'Tag_Write (S : access Streams.Root_Stream_Type'Class;
+        procedure S'Tag_Write (Stream : access Streams.Root_Stream_Type'Class;
                                Tag : Ada.Tags.Tag);
 
 	S'Tag_Write writes the value of Tag to Stream.
 
    S'Tag_Read
 
-        function S'Tag_Read (S : access Streams.Root_Stream_Type'Class)
+        function S'Tag_Read (Stream : access Streams.Root_Stream_Type'Class)
             return Ada.Tags.Tag;
 
 	S'Tag_Read reads a tag from Stream, and returns its value.
@@ -92,21 +92,21 @@
 
    S'Tag_Write
 
-        procedure S'Tag_Write (S : access Streams.Root_Stream_Type'Class;
+        procedure S'Tag_Write (Stream : access Streams.Root_Stream_Type'Class;
                                Tag : Ada.Tags.Tag);
 
 	S'Tag_Write writes the value of Tag to Stream.
 
    S'Tag_Read
 
-        function S'Tag_Read (S : access Streams.Root_Stream_Type'Class)
+        function S'Tag_Read (Stream : access Streams.Root_Stream_Type'Class)
             return Ada.Tags.Tag;
 
 	S'Tag_Read reads a tag from Stream, and returns its value.
 
 The Tag_Write and Tag_Read attributes of the parent type are inherited as
 specified in 13.1. The default implementation of Tag_Write is to call
-String'Output(Stream, Tags.External_Tag(Item'Tag)) -- see 3.9. The default
+String'Output(Stream, Tags.External_Tag(Tag)) -- see 3.9. The default
 implementation of Tag_Read is to return the value of
 Tags.Internal_Tag(String'Input(Stream)).
 
@@ -1240,3 +1240,35 @@
     My_Operation (Obj, ...) with Obj'Parent_Tag;)
 
 ****************************************************************
+
+From: Randy Brukardt
+Sent: Thursday, October 18, 2001 5:45 PM
+
+From the minutes of the 14th ARG meeting (Bloomington MN):
+
+Change the title: How to control the tag representation in a stream.
+
+These are operational attributes with all of the effects that this implies.
+They have similar inheritance rules as 'Read & 'Write have.
+
+Correct the wording: Formal S => Stream. Item'Tag => Tag
+
+Tucker now states that he thinks that his previous opinion was wrong; these
+attributes should be classwide only, without inheritance. Much discussion
+ensues. Eventually the group concludes that the attributes make the most sense
+only on the classwide type, as they are only used in dispatching operations.
+
+No inheritance would mean that child types don't get it. If T2 is derived from
+a type T1 which had a user-defined Tag_Write, T2'Class'Output wouldn't use the
+user-defined Tag_Write. This seems wrong. As a solution to this problem, Tucker
+suggests that the default implementation should be a call to the Parent'class
+operation.
+
+Someone makes a more radical suggestion to disallow overriding of these
+attributes. There is not much support for this idea - it might be useful.
+
+In Summary: the attributes are classwide, inherited (by the default operation
+calling the parent), no restriction on overriding. Approved this intent: 6-0-3
+
+****************************************************************
+

Questions? Ask the ACAA Technical Agent