CVS difference for ai05s/ai05-0191-1.txt
--- ai05s/ai05-0191-1.txt 2010/12/15 00:10:59 1.7
+++ ai05s/ai05-0191-1.txt 2011/01/17 07:00:31 1.8
@@ -1,4 +1,4 @@
-!standard 13.3(9/1) 10-11-19 AI05-0191-1/05
+!standard 13.3(9/1) 11-01-07 AI05-0191-1/06
!standard 13.3(73)
!class amendment 09-11-03
!status Amendment 2012 10-11-18
@@ -159,14 +159,73 @@
the referential nature of the actual argument requires a deviation from
the normal model of functions.
-
!example
+
+ procedure Cnt (A: in out Arrtype; B : in Arrtype) with
+ Pre => not A'Overlaps_Storage(B)
+ is
+ -- intended to count in A the number of value occurrences in B
+ -- part of a distribution sort
+ begin
+ for I in B'range loop
+ A(B(I)) := A(B(I)) + 1;
+ end loop;
+ end Cnt;
+
+!corrigendum 13.03(9/1)
+
+@drepl
+The following representation attributes are defined: Address, Alignment, Size,
+Storage_Size, and Component_Size.
+@dby
+The following representation attributes are defined: Address, Alignment, Size,
+Storage_Size, Component_Size, Has_Same_Storage, and Overlaps_Storage.
+
+!corrigendum 13.03(73)
+
+@dinsa
+@xbullet<An implementation should support specified Component_Sizes that are factors
+and multiples of the word size. For such Component_Sizes, the array should contain
+no gaps between components. For other Component_Sizes (if supported), the array
+should contain no gaps between components when packing is also specified; the
+implementation should forbid this combination in cases where it cannot support
+a no-gaps representation.>
+@dinss
+@s8<@i<Static Semantics>>
+
+For a prefix X that denotes an object:
+
+@xhang<@xterm<X'Has_Same_Storage>
+X'Has_Same_Storage denotes a function with the following specification:>
+
+@xcode< @b<function> X'Has_Same_Storage (@i<X> : @i<any_type>)
+ @b<return> Boolean>
+
+@xindent<The actual parameter shall be a name that denotes an object. The object denoted
+by the actual parameter can be of any type. This function evaluates the names
+of the objects involved and returns true if the representation of the object
+denoted by the actual parameter occupies exactly the same bits as the
+representation of the object denoted by X; it is false otherwise.>
+
+For a prefix X that denotes an object:
+
+@xhang<@xterm<X'Overlaps_Storage>
+X'Overlaps_Storage denotes a function with the following specification:>
+
+@xcode< @b<function> X'Overlaps_Storage (@i<X> : @i<any_type>)
+ @b<return> Boolean>
+
+@xindent<The actual parameter shall be a name that denotes an object. The object denoted
+by the actual parameter can be of any type. This function evaluates the names
+of the objects involved and returns true if the representation of the object
+denoted by the actual parameter shares at least one bit with the representation
+of the object denoted by X; it is false otherwise.>
-procedure Exchange_Values(A, B: ref_type) Assert(not A'IsSame(B));
+@xindent<@s9<NOTES@hr
+7 X'Has_Same_Storage(Y) implies X'Overlaps_Storage(Y).>>
-Assert(not A'Overlaps_Storage(B(i))); A(B(i)) := A(B(i)) + 1;
- -- intended to count in A the number of value occurrences in B
- -- part of a distribution sort
+@xindent<@s9<8 X'Has_Same_Storage(Y) and X'Overlaps_Storage(Y) are not considered
+to be reads of X and Y.>>
!ACATS test
@@ -175,7 +234,7 @@
!ASIS
Add two literals An_Is_Same_Attribute and An_Overlaps_Storage_Attribute to
-Attritbute_Kinds.
+Attribute_Kinds.
!appendix
Questions? Ask the ACAA Technical Agent