CVS difference for ai05s/ai05-0185-1.txt
--- ai05s/ai05-0185-1.txt 2010/08/12 03:30:57 1.2
+++ ai05s/ai05-0185-1.txt 2010/10/19 03:51:18 1.3
@@ -1,7 +1,8 @@
-!standard A.3.5 (0) 10-08-11 AI05-0185-1/02
+!standard A.3.5 (0) 10-10-15 AI05-0185-1/03
!standard A.3.6 (0)
!class amendment 09-11-02
!status Amendment 2012 10-08-11
+!status work item 10-10-18
!status ARG Approved 8-0-0 10-06-20
!status work item 09-11-02
!status received 09-11-02
@@ -11,7 +12,7 @@
!summary
-Packages are needed to provide support for the classification and case folding
+Packages are added to provide support for the classification and case folding
of Wide_Character and Wide_Wide_Character values.
!problem
@@ -35,7 +36,7 @@
This proposal to create two standard packages;
Ada.Wide_Characters.Handling and
Ada.Wide_Wide_Characters.Handling
-based on the GNAT Unicode packages, but without the functions that accept
+is based on the GNAT Unicode packages, but without the functions that accept
Unicode Category parameters.
!wording
@@ -102,7 +103,7 @@
Returns True if the Wide_Character designated by Item is categorized as
letter_uppercase, letter_lowercase, letter_titlecase, letter_modifier,
- letter_other, or number_letter. Otherwise returns False.
+ letter_other, or number_letter; otherwise returns False.
function Is_Lower (Item : Wide_Character) return Boolean;
@@ -129,20 +130,20 @@
Returns True if the Wide_Character designated by Item is categorized as
letter_uppercase, letter_lowercase, letter_titlecase, letter_modifier,
- letter_other, number_letter, or number_decimal. Otherwise returns False.
+ letter_other, number_letter, or number_decimal; otherwise returns False.
function Is_Special (Item : Wide_Character) return Boolean;
Returns True if the Wide_Character designated by Item is categorized as
graphic_character, but not categorized as letter_uppercase,
letter_lowercase, letter_titlecase, letter_modifier, letter_other,
- number_letter, or number_decimal. Otherwise returns False.
+ number_letter, or number_decimal; otherwise returns False.
function Is_Line_Terminator (Item : Wide_Character) return Boolean;
Returns True if the Wide_Character designated by Item is categorized as
separator_line or separator_paragraph, or if Item is a conventional line
- terminator character (CR, LF, VT, or FF). Otherwise returns False.
+ terminator character (CR, LF, VT, or FF); otherwise returns False.
function Is_Mark (Item : Wide_Character) return Boolean;
@@ -199,13 +200,13 @@
A.3.6 The Package Wide_Wide_Characters.Handling
The package Wide_Wide_Characters.Handling has the same contents as
-Wide_Character.Handling except that each occurrence of Wide_Character is
+Wide_Characters.Handling except that each occurrence of Wide_Character is
replaced by Wide_Wide_Character, and each occurrence of Wide_String is replaced
by Wide_Wide_String.
!discussion
-The GNAT Unicode packages defines a Category type which maps to the Unicode
+The GNAT Unicode packages define a Category type which maps to the Unicode
standard. Second forms of most of the classification routines exist that operate
on category type parameters instead of Wide_Character or Wide_Wide_Character.
The reason for these routines is that it is claimed they are more efficient if
@@ -231,9 +232,9 @@
functions. It is not clear whether these functions have any meaning in
Wide_Character or Wide_Wide_Character contexts, as there do not appear to be any
Unicode functions for stripping off diacritical marks, and it is not clear that
-doing so would result with a string that was meaningful.
+doing so would result in a string that was meaningful.
-Also, the ISO_646 related functions were not added, since those deal with 8 bit
+Also, the ISO_646 related functions were not added, since those deal with 8-bit
values, they were deemed not appropriate for Wide_Character and
Wide_Wide_Character contexts.
@@ -310,7 +311,7 @@
@xindent<Returns True if the Wide_Character designated by Item is categorized as
@fa<letter_uppercase>, @fa<letter_lowercase>, @fa<letter_titlecase>,
-@fa<letter_modifier>, @fa<letter_other>, or @fa<number_letter>. Otherwise
+@fa<letter_modifier>, @fa<letter_other>, or @fa<number_letter>; otherwise
returns False.>
@xcode<@b<function> Is_Lower (Item : Wide_Character) @b<return> Boolean;>
@@ -339,21 +340,21 @@
@xindent<Returns True if the Wide_Character designated by Item is categorized as
@fa<letter_uppercase>, @fa<letter_lowercase>, @fa<letter_titlecase>,
@fa<letter_modifier>, @fa<letter_other>, @fa<number_letter>, or
-@fa<number_decimal>. Otherwise returns False.>
+@fa<number_decimal>; otherwise returns False.>
@xcode<@b<function> Is_Special (Item : Wide_Character) @b<return> Boolean;>
@xindent<Returns True if the Wide_Character designated by Item is categorized as
@fa<graphic_character>, but not categorized as @fa<letter_uppercase>,
@fa<letter_lowercase>, @fa<letter_titlecase>, @fa<letter_modifier>,
-@fa<letter_other>, @fa<number_letter>, or number_decimal. Otherwise returns
+@fa<letter_other>, @fa<number_letter>, or number_decimal; otherwise returns
False.>
@xcode<@b<function> Is_Line_Terminator (Item : Wide_Character) @b<return> Boolean;>
@xindent<Returns True if the Wide_Character designated by Item is categorized as
@fa<separator_line> or @fa<separator_paragraph>, or if Item is a conventional
-line terminator character (CR, LF, VT, or FF). Otherwise returns False.>
+line terminator character (CR, LF, VT, or FF); otherwise returns False.>
@xcode<@b<function> Is_Mark (Item : Wide_Character) @b<return> Boolean;>
@@ -412,7 +413,7 @@
@dinsc
The package Wide_Wide_Characters.Handling has the same contents as
-Wide_Character.Handling except that each occurrence of Wide_Character is
+Wide_Characters.Handling except that each occurrence of Wide_Character is
replaced by Wide_Wide_Character, and each occurrence of Wide_String is replaced
by Wide_Wide_String.
@@ -437,5 +438,34 @@
function Is_Decimal_Digit (Item : Wide_Character) return Boolean renames Is_Digit;
and the text description removed.
+
+****************************************************************
+
+Editor's note: This AI was reopened to address the items mentioned above and others
+raised during Editorial Review. Specifically:
+
+I had previously asked that the names Is_Other and Is_Punctuation be changed to
+Is_Other_Format and Is_Punctuation_Connector; the latter in particular is very
+misleading (it is true for underscore, but not for period or comma).
+
+I had also noted that the implementation advice in A.3.1 is now dubious; no one
+commented on that. So I don't even know what to suggest there.
+
+Robert noted that To_Lower and To_Upper doesn't define the bounds of the result.
+(It should be 1, to be consistent with Ada.Characters.Handling.)
+
+John would prefer that Is_Line_Terminator, .. Is_Graphic be added to
+Ada.Characters.Handling.
+
+Finally we need to clarify the definition of Simple Lowercase Mapping and Simple
+Uppercase Mapping. The first is a Unicode terms; but we can't refer to Unicode
+normatively in the Standard. The second doesn't exist anywhere.
+
+Moreover, these are different than what identifiers use. Robert and I had an e-mail
+meltdown on this back in July. And the identifier definition is completely daft,
+as the "convert to uppercase" definition says use Unicode full case folding -- but
+*that* is a conversion to *lower* case!
+
+So we need to decide what we really want here.
****************************************************************
Questions? Ask the ACAA Technical Agent