--- ai05s/ai05-0001-1.txt 2009/07/07 04:30:45 1.9 +++ ai05s/ai05-0001-1.txt 2009/07/11 03:06:22 1.10 @@ -259,7 +259,7 @@ If an operation attempts to modify the vector such that the position of the last element would be greater than Index_Type'Last, then the -operation raises Constraint_Error. +operation propagates Constraint_Error. Add the following after A.18.2(93/2): @@ -295,7 +295,7 @@ elements of Source. If Capacity is 0, then the vector capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the vector capacity is at least the specified value. -Otherwise, the operation raises Capacity_Error. +Otherwise, the operation propagates Capacity_Error. A.18.2(148/2) is replaced by the following: @@ -389,7 +389,7 @@ and elements of Source. If Capacity is 0, then the map capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the map capacity is at least the specified value. -Otherwise, the operation raises Capacity_Error. +Otherwise, the operation propagates Capacity_Error. A.18.6 Containers.Ordered_Maps @@ -453,7 +453,7 @@ Source. If Capacity is 0, then the set capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the set capacity is at least the specified value. -Otherwise, the operation raises Capacity_Error. +Otherwise, the operation propogates Capacity_Error. A.18.9 Containers.Ordered_Sets @@ -526,7 +526,7 @@ * The description of Reserve_Capacity is replaced by: If the specified Capacity is larger than the Container.Capacity, - then Reserve_Capacity raises Capacity_Error. Otherwise, the + then Reserve_Capacity propagates Capacity_Error. Otherwise, the operation has no effect. Implementation Advice @@ -572,7 +572,7 @@ check fails. * In procedure Assign, if Source length is greater than Target - capacity, then Capacity_Error is raised. + capacity, then Capacity_Error is propagated. * Function Copy is declared as follows: @@ -582,17 +582,17 @@ If Capacity is 0, then the list capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the list capacity equals the value of the Capacity parameter; - otherwise, the operation raises Capacity_Error. + otherwise, the operation propagates Capacity_Error. * In the three-parameter procedure Splice whose Source has type List, if the sum of Target.Length and Source.Length is greater than - Target.Capacity, then Splice raises Capacity_Error. + Target.Capacity, then Splice propagates Capacity_Error. [Editor's note: This is referring to A.18.3(112/2), but of course we can't say that.] * In the four-parameter procedure Splice, if Target.Length - equals Target.Capacity, then Splice raises Capacity_Error. + equals Target.Capacity, then Splice propagates Capacity_Error. [Editor's note: This is referring to A.18.3(114/2).] @@ -638,7 +638,7 @@ by: If the specified Capacity is larger than the Container.Capacity, - then Reserve_Capacity raises Capacity_Error. Otherwise, the + then Reserve_Capacity propagates Capacity_Error. Otherwise, the operation has no effect. * An additional operation is added immediately following Reserve_Capacity: @@ -658,7 +658,7 @@ in Source. If Capacity is 0, then the map capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the map capacity is the value of the Capacity - parameter; otherwise, the operation raises Capacity_Error. If + parameter; otherwise, the operation propagates Capacity_Error. If the Modulus argument is 0, then the map modulus is the value returned by a call to Default_Modulus with the map capacity as its argument; otherwise the map modulus is the value of the @@ -705,7 +705,7 @@ check fails. * In procedure Assign, if Source length is greater than Target - capacity, then Capacity_Error is raised. + capacity, then Capacity_Error is propagated. * The function Copy is replaced with: @@ -716,7 +716,7 @@ in Source. If Capacity is 0, then the map capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the map capacity is the specified value; - otherwise, the operation raises Capacity_Error. + otherwise, the operation propagates Capacity_Error. Implementation Advice @@ -759,7 +759,7 @@ * The description of Reserve_Capacity is replaced by: If the specified Capacity is larger than the Container.Capacity, - then Reserve_Capacity raises Capacity_Error. Otherwise, the + then Reserve_Capacity propagates Capacity_Error. Otherwise, the operation has no effect. * An additional operation is added immediately following Reserve_Capacity: @@ -779,7 +779,7 @@ Source. If Capacity is 0, then the set capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the set capacity is the value of the Capacity - parameter; otherwise, the operation raises Capacity_Error. If + parameter; otherwise, the operation propagates Capacity_Error. If the Modulus argument is 0, then the set modulus is the value returned by a call to Default_Modulus with the set capacity as its argument; otherwise the set modulus is the value of the @@ -826,7 +826,7 @@ check fails. * In procedure Assign, if Source length is greater than Target - capacity, then Capacity_Error is raised. + capacity, then Capacity_Error is propagated. * The function Copy is replaced with: @@ -837,7 +837,7 @@ Source. If Capacity is 0, then the set capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the set capacity is the specified value; - otherwise, the operation raises Capacity_Error. + otherwise, the operation propagates Capacity_Error. Implementation Advice @@ -1105,7 +1105,7 @@ @dinst If an operation attempts to modify the vector such that the position of the last element would be greater than Index_Type'Last, then the -operation raises Constraint_Error. +operation propagates Constraint_Error. !corrigendum A.18.2(93/2) @@ -1153,7 +1153,7 @@ elements of Source. If Capacity is 0, then the vector capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the vector capacity is at least the specified value. -Otherwise, the operation raises Capacity_Error.> +Otherwise, the operation propagates Capacity_Error.> !corrigendum A.18.2(148/2) @@ -1295,7 +1295,7 @@ and elements of Source. If Capacity is 0, then the map capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the map capacity is at least the specified value. -Otherwise, the operation raises Capacity_Error.> +Otherwise, the operation propagates Capacity_Error.> !corrigendum A.18.6(16/2) @@ -1396,7 +1396,7 @@ Source. If Capacity is 0, then the set capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the set capacity is at least the specified value. -Otherwise, the operation raises Capacity_Error.> +Otherwise, the operation propagates Capacity_Error.> !corrigendum A.18.9(16/2) @@ -1463,7 +1463,7 @@ @xbullet<The description of Reserve_Capacity is replaced by:> @xindent<If the specified Capacity is larger than the Container.Capacity, -then Reserve_Capacity raises Capacity_Error. Otherwise, the operation has no effect.> +then Reserve_Capacity propagates Capacity_Error. Otherwise, the operation has no effect.> @s8<@i<Implementation Advice>> @@ -1504,7 +1504,7 @@ check fails.> @xbullet<In procedure Assign, if Source length is greater than Target -capacity, then Capacity_Error is raised.> +capacity, then Capacity_Error is propagated.> @xbullet<Function Copy is declared as follows:> @@ -1514,14 +1514,14 @@ @xindent<If Capacity is 0, then the list capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the list capacity equals the value of the Capacity parameter; -otherwise, the operation raises Capacity_Error.> +otherwise, the operation propagates Capacity_Error.> @xbullet<In the three-parameter procedure Splice whose Source has type List, if the sum of Target.Length and Source.Length is greater than -Target.Capacity, then Splice raises Capacity_Error.> +Target.Capacity, then Splice propagates Capacity_Error.> @xbullet<In the four-parameter procedure Splice, if Target.Length -equals Target.Capacity, then Splice raises Capacity_Error.> +equals Target.Capacity, then Splice propagates Capacity_Error.> @s8<@i<Implementation Advice>> @@ -1562,7 +1562,7 @@ @xbullet<The description of Reserve_Capacity is replaced by:> @xindent<If the specified Capacity is larger than the Container.Capacity, -then Reserve_Capacity raises Capacity_Error. Otherwise, the operation has no effect.> +then Reserve_Capacity propagates Capacity_Error. Otherwise, the operation has no effect.> @xbullet<An additional operation is added immediately following Reserve_Capacity:> @@ -1582,7 +1582,7 @@ in Source. If Capacity is 0, then the map capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the map capacity is the value of the Capacity -parameter; otherwise, the operation raises Capacity_Error. If +parameter; otherwise, the operation propagates Capacity_Error. If the Modulus argument is 0, then the map modulus is the value returned by a call to Default_Modulus with the map capacity as its argument; otherwise the map modulus is the value of the @@ -1627,7 +1627,7 @@ check fails.> @xbullet<In procedure Assign, if Source length is greater than Target -capacity, then Capacity_Error is raised.> +capacity, then Capacity_Error is propagated.> @xbullet<The function Copy is replaced with:> @@ -1638,7 +1638,7 @@ in Source. If Capacity is 0, then the map capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the map capacity is the specified value; -otherwise, the operation raises Capacity_Error.> +otherwise, the operation propagates Capacity_Error.> @s8<@i<Implementation Advice>> @@ -1679,7 +1679,7 @@ @xbullet<The description of Reserve_Capacity is replaced by:> @xindent<If the specified Capacity is larger than the Container.Capacity, -then Reserve_Capacity raises Capacity_Error. Otherwise, the operation has no effect.> +then Reserve_Capacity propagates Capacity_Error. Otherwise, the operation has no effect.> @xbullet<An additional operation is added immediately following Reserve_Capacity:> @@ -1699,7 +1699,7 @@ Source. If Capacity is 0, then the set capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the set capacity is the value of the Capacity -parameter; otherwise, the operation raises Capacity_Error. If +parameter; otherwise, the operation propagates Capacity_Error. If the Modulus argument is 0, then the set modulus is the value returned by a call to Default_Modulus with the set capacity as its argument; otherwise the set modulus is the value of the @@ -1740,11 +1740,11 @@ Element_Type needs finalization.> @xbullet<If Insert (or Include) adds an element, a check is made that the -capacity is not exceeded, and Capacity_Error is raised if this +capacity is not exceeded, and Capacity_Error is propagated if this check fails.> @xbullet<In procedure Assign, if Source length is greater than Target -capacity, then Capacity_Error is raised.> +capacity, then Capacity_Error is propagated.> @xbullet<The function Copy is replaced with:> @@ -1755,7 +1755,7 @@ Source. If Capacity is 0, then the set capacity is the length of Source; if Capacity is equal to or greater than Source.Length, the set capacity is the specified value; -otherwise, the operation raises Capacity_Error.> +otherwise, the operation propagates Capacity_Error.> @s8<@i<Implementation Advice>> @@ -4757,6 +4757,41 @@ Did I miss any?] Any comments? + +**************************************************************** + +From: Ed Schonberg +Sent: Monday, July 6, 2009 11:28 PM + +> [I can't find any routines other than Insert or Include that can add an +> element. Did I miss any?] + +Same should apply to Union, and the phrasing has to mention "one element or more". + +**************************************************************** + +From: Randy Brukardt +Sent: Monday, July 6, 2009 11:59 PM + +Union doesn't "add" elements, it "inserts" them. One has to presume that means +calling Insert. As such, this wording is correct as written. + +It should be noted that the wording of the entire containers library is completely +confused as to whether elements are removed or deleted from containers. That probably +ought to be fixed; I just finished writing a patch-around to deal with that problem +(cursors designating removed elements are not considered invalid, at least if you read +the standard strictly, which only makes "deleted elements" invalid). It probably +would be best to rewrite all of the text that uses the term "deleted" to say "removed" +instead ("removed" is far more common). We'll have to talk about that at a meeting; +based on what it took me to create the AI, we're probably talking about 6-8 hours of +work to do that (creating AI text, Amendment text, and consolidated Standard text); +I have to wonder if this is good use of my time. + +If we do that (Intersection and Difference are among those that would need to be changed), +I suppose we should also change Union to say that it "adds" elements, and then this +wording would need to be changed. (It surely would be clearer, because it isn't clear +what lower case "insert" refers to here, and we really do want all of the rules that +apply to adding nodes to apply here.) ****************************************************************

Questions? Ask the ACAA Technical Agent