CVS difference for ai05s/ai05-0162-1.txt

Differences between 1.1 and version 1.2
Log of other versions for file ai05s/ai05-0162-1.txt

--- ai05s/ai05-0162-1.txt	2009/10/16 03:23:17	1.1
+++ ai05s/ai05-0162-1.txt	2010/01/30 05:28:01	1.2
@@ -1,4 +1,6 @@
-!standard  3.10.1(3)                                   09-10-15    AI05-0162-1/01
+!standard  3.10.1(2.5/2)                                 10-01-29    AI05-0162-1/02
+!standard  3.10.1(2.6/2)
+!standard  3.10.1(3)
 !standard  3.10.1(4/2)
 !class Amendment 09-10-15
 !status work item 09-10-15
@@ -25,8 +27,9 @@
        No_Element : in Cursor;
    package Ada.Iterator_Interfaces is
        type Basic_Iterator is limited interface;
-       function First (Object : Basic_Iterator) return Cursor;
-       function Next (Object : Basic_Iterator; Position : Cursor) return Cursor;
+       function First (Object : Basic_Iterator) return Cursor is abstract;
+       function Next (Object : Basic_Iterator; Position : Cursor)
+           return Cursor is abstract;
    end Ada.Iterator_Interfaces;
 
 One way to use this in the existing containers packages would be:
@@ -51,9 +54,9 @@
       No_Element : Cursor renames Cursors.No_Element;
 
       package Iterators is new
-          Ada.Iterator_Interfaces (Cursors, No_Element);
+          Ada.Iterator_Interfaces (Cursor, No_Element);
 
-      type List is new Iterators with private; -- (1)
+      type List is new Iterators.Basic_Iterator with private; -- (1)
 
       Empty_List : constant List;
       function Is_Empty (Container : List) return Boolean;
@@ -78,6 +81,18 @@
 
 !wording
 
+Modify 3.10.1(2.5/2):
+
+In these cases, the dereference has the [full] view of T{ visible at the point of the
+dereference}. 
+
+Modify 3.10.1(2.6/2):
+
+Similarly, if a subtype_mark denotes a subtype_declaration defining a subtype of an
+incomplete view T, the subtype_mark denotes an incomplete view except under the same
+two circumstances given above, in which case it denotes the [full] view of T{ visible
+at the point of the subtype_mark}. 
+
 Modify 3.10.1(3):
 
 An incomplete_type_declaration requires a completion, which shall be a {type_declaration
@@ -101,15 +116,33 @@
 {type_declaration}[full_type_declaration] is nevertheless allowed to have discriminants,
 either explicitly, or inherited via derivation.
 
+Replace AARM 3.11.1(1.h/2):
+
+   In Ada 2005 the limited view of the package contains an
+   incomplete view of the private type, so we can have four parts now.
+
+by:
+
+   An incomplete type (whether declared in the limited view of a
+   package or not) may be completed by a private type declaration,
+   so we can have four parts now.
+
+[Author's note: The proper body corresponding to a body_stub is not considered to be a
+"completion", so four parts is the right number even if a task body has a stub.]
+
 !discussion
 
-A limited with provides an incomplete view of a private type, so implementations already
+A "limited with" provides an incomplete view of a private type, so implementations already
 have to deal with the possibility of such a view. Eliminating the restriction against
 explicitly declaring such a view is just eliminating an unnecessary limitation.
 
 The various AIs suggesting features to allow partial instances, not-private parts, and
 integrated packages don't help in this situation. But some way to do this will be needed
-if AI05-0139-1 is adopted using the magic generic interface idea.
+if AI05-0139-1 or an alternative is adopted using the magic generic interface idea.
+
+
+3.10.1(1) talks about deferring the declaration to a subsequent full type declaration;
+this is still true (even if not immediate) and thus no wording change is needed there.
 
 !example
 

Questions? Ask the ACAA Technical Agent