CVS difference for ai05s/ai05-0137-2.txt

Differences between 1.2 and version 1.3
Log of other versions for file ai05s/ai05-0137-2.txt

--- ai05s/ai05-0137-2.txt	2010/06/14 01:24:49	1.2
+++ ai05s/ai05-0137-2.txt	2010/07/27 00:40:35	1.3
@@ -1,6 +1,6 @@
-!standard A.4.11                                       10-05-07  AI05-0137-2/01
+!standard A.4.11                                       10-06-20  AI05-0137-2/02
 !class Amendment 10-05-07
-!status Amendment 201Z 10-05-07
+!status Amendment 2012 10-05-07
 !status work item 10-05-07
 !status received 10-03-15
 !priority Medium
@@ -10,7 +10,7 @@
 !summary
 
 New child packages of Ada.Strings are added to support conversions
-between Wide_String/Wide_Wide_String and UTF_8/UTF_16 encoding. These
+between String/Wide_String/Wide_Wide_String and UTF_8/UTF_16 encoding. These
 packages are intended to replace the already approved versions from
 AI05-0137-1.
 
@@ -23,7 +23,7 @@
 
 It would be useful for ASIS users, but also for the Ada
 community at large to define a package to handle encoding/decoding
-between Wide_String/Wide_Wide_String and UTF_8/UTF_16.
+between String/Wide_String/Wide_Wide_String and UTF_8/UTF_16.
 
 !proposal
 
@@ -35,14 +35,15 @@
 
 A.4.11 String encoding
 
-Facilities for encoding, decoding, and converting strings in various character
-encoding schemes are provided by packages Strings.UTF_Encoding,
-Strings.UTF_Encoding.Conversions, Strings.UTF_Encoding.Wide_Encoding, and
-Strings.UTF_Encoding.Wide_Wide_Encoding.
+Facilities for encoding, decoding, and converting strings in various
+character encoding schemes are provided by packages
+Strings.UTF_Encoding, Strings.UTF_Encoding.Conversions,
+Strings.UTF_Encoding.Strings, Strings.UTF_Encoding.Wide_Strings, and
+Strings.UTF_Encoding.Wide_Wide_Strings.
 
 Static Semantics
 
-The encoding library packages have the following declaration:
+The encoding library packages have the following declarations:
 
 package Ada.Strings.UTF_Encoding is
    pragma Pure (UTF_Encoding);
@@ -104,9 +105,32 @@
 
 end Ada.Strings.UTF_Encoding.Conversions;
 
-package Ada.Strings.UTF_Encoding.Wide_Encoding is
-   pragma Pure (Wide_Encoding);
+package Ada.Strings.UTF_Encoding.Strings is
+   pragma Pure (Strings);
+
+   -- Encoding / decoding between String and various encoding schemes
+   function Encode (Item          : String;
+                    Output_Scheme : Encoding_Scheme;
+                    Output_BOM    : Boolean  := False) return UTF_String;
+
+   function Encode (Item       : String;
+                    Output_BOM : Boolean  := False) return UTF_8_String;
+
+   function Encode (Item       : String;
+                    Output_BOM : Boolean  := False) return UTF_16_Wide_String;
+
+   function Decode (Item         : UTF_String;
+                    Input_Scheme : Encoding_Scheme) return String;
+
+   function Decode (Item : UTF_8_String) return String;
+
+   function Decode (Item : UTF_16_Wide_String) return String;
+
+end Ada.Strings.UTF_Encoding.Strings;
 
+package Ada.Strings.UTF_Encoding.Wide_Strings is
+   pragma Pure (Wide_Strings);
+
    -- Encoding / decoding between Wide_String and various encoding schemes
    function Encode (Item          : Wide_String;
                     Output_Scheme : Encoding_Scheme;
@@ -125,10 +149,10 @@
 
    function Decode (Item : UTF_16_Wide_String) return Wide_String;
 
-end Ada.Strings.UTF_Encoding.Wide_Encoding;
+end Ada.Strings.UTF_Encoding.Wide_Strings;
 
-package Ada.Strings.UTF_Encoding.Wide_Wide_Encoding is
-   pragma Pure (Wide_Wide_Encoding);
+package Ada.Strings.UTF_Encoding.Wide_Wide_Strings is
+   pragma Pure (Wide_Wide_Strings);
 
    -- Encoding / decoding between Wide_Wide_String and various encoding schemes
    function Encode (Item          : Wide_Wide_String;
@@ -148,7 +172,7 @@
 
    function Decode (Item : UTF_16_Wide_String) return Wide_Wide_String;
 
-end Ada.Strings.UTF_Encoding.Wide_Wide_Encoding;
+end Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
 
 
 The type Encoding_Scheme defines encoding schemes. UTF_8 corresponds
@@ -161,9 +185,9 @@
 containing a sequence of values encoded in one of three ways (UTF-8,
 UTF-16BE, or UTF-16LE). The subtype UTF_8_String is used to represent
 a String of 8-bit values containing a sequence of values encoded in
-UTF-8. The subtype UTF_16_Wide_String is is used to represent a
-Wide_String of 16-bit containing a sequence of values encoded in
-UTF-16.
+UTF-8. The subtype UTF_16_Wide_String is used to represent a
+Wide_String of 16-bit values containing a sequence of values encoded
+in UTF-16.
 
 The BOM_8, BOM_16BE, BOM_16LE and BOM_16 constants correspond to
 values used at the start of a string to indicate the encoding.
@@ -181,9 +205,12 @@
        invalid encoding sequence.
     *  By a Decode function when the expected encoding is UTF-16BE or
        UTF-16LE and the input string has an odd length.
+    *  By a Decode function yielding a String when the decoding
+       of a sequence results in a code-point whose value exceeds
+       16#FF#.
     *  By a Decode function yielding a Wide_String when the decoding
        of a sequence results in a code-point whose value exceeds
-       16#FFFF#
+       16#FFFF#.
     *  By an Encode function taking a Wide_String as input when an
        invalid character appears in the input. In particular the
        characters whose position is in the range 16#D800# .. 16#DFFF#
@@ -202,8 +229,9 @@
 Item parameter which is assumed to contain characters whose position
 values correspond to a valid encoding sequence according to the
 encoding scheme required by the function or specified by its
-Input_Scheme parameter, and returns the corresponding Wide_String
-(respectively Wide_Wide_String) value.
+Input_Scheme parameter, and returns the corresponding String,
+Wide_String or Wide_Wide_String value. The lower bound of the returned
+string is 1.
 
 function Encoding (Item    : UTF_String;
                    Default : Encoding_Scheme := UTF_8) return Encoding_Scheme;
@@ -247,6 +275,42 @@
 Converts from input encoded in UTF-16 and generates an output encoded
 in UTF-8.
 
+function Encode (Item          : String;
+                 Output_Scheme : Encoding_Scheme;
+                 Output_BOM    : Boolean  := False) return UTF_String;
+
+Encodes from String input, and generates an output encoded in
+UTF-8, UTF-16LE or UTF-16BE encoding as specified by Output_Scheme.
+
+function Encode (Item       : String;
+                 Output_BOM : Boolean  := False) return UTF_8_String;
+
+Encodes from String input, and generates an output encoded in
+UTF-8 encoding.
+
+function Encode (Item       : String;
+                 Output_BOM : Boolean  := False) return UTF_16_Wide_String;
+
+Encodes from String input, and generates an output encoded in
+UTF_16 encoding.
+
+function Decode (Item         : UTF_String;
+                 Input_Scheme : Encoding_Scheme) return String;
+
+Decodes from input encoded in UTF-8, UTF-16LE, or UTF-16BE as
+specified by Input_Scheme, and returns the corresponding String
+value.
+
+function Decode (Item : UTF_8_String) return String;
+
+Decodes from input encoded in UTF-8, and returns the corresponding
+String value.
+
+function Decode (Item : UTF_16_Wide_String) return String;
+
+Decodes from input encoded in UTF-16, and returns the corresponding
+String value.
+
 function Encode (Item          : Wide_String;
                  Output_Scheme : Encoding_Scheme;
                  Output_BOM    : Boolean  := False) return UTF_String;
@@ -440,12 +504,12 @@
 
 Facilities for encoding, decoding, and converting strings in various character
 encoding schemes are provided by packages Strings.UTF_Encoding,
-Strings.UTF_Encoding.Conversions, Strings.UTF_Encoding.Wide_Encoding, and
-Strings.UTF_Encoding.Wide_Wide_Encoding.
+Strings.UTF_Encoding.Conversions, Strings.UTF_Encoding.Strings,
+Strings.UTF_Encoding.Wide_Strings, and Strings.UTF_Encoding.Wide_Wide_Strings.
 
 @s8<@i<Static Semantics>>
 
-The encoding library packages have the following declaration:
+The encoding library packages have the following declarations:
 
 @xcode<@b<package> Ada.Strings.UTF_Encoding @b<is>
    @b<pragma> Pure (UTF_Encoding);
@@ -506,9 +570,32 @@
                      Output_BOM    : Boolean := False) @b<return> UTF_8_String;
 
 @b<end> Ada.Strings.UTF_Encoding.Conversions;
+
+@b<package> Ada.Strings.UTF_Encoding.Strings @b<is>
+   @b<pragma> Pure (Strings);
+
+   -- Encoding / decoding between String and various encoding schemes
+   @b<function> Encode (Item          : String;
+                    Output_Scheme : Encoding_Scheme;
+                    Output_BOM    : Boolean  := False) @b<return> UTF_String;
+
+   @b<function> Encode (Item       : String;
+                    Output_BOM : Boolean  := False) @b<return> UTF_8_String;
+
+   @b<function> Encode (Item       : String;
+                    Output_BOM : Boolean  := False) @b<return> UTF_16_Wide_String;
+
+   @b<function> Decode (Item         : UTF_String;
+                    Input_Scheme : Encoding_Scheme) @b<return> String;
+
+   @b<function> Decode (Item : UTF_8_String) @b<return> String;
+
+   @b<function> Decode (Item : UTF_16_Wide_String) @b<return> String;
+
+@b<end> Ada.Strings.UTF_Encoding.Strings;
 
-@b<package> Ada.Strings.UTF_Encoding.Wide_Encoding @b<is>
-   @b<pragma> Pure (Wide_Encoding);
+@b<package> Ada.Strings.UTF_Encoding.Wide_Strings @b<is>
+   @b<pragma> Pure (Wide_Strings);
 
    -- Encoding / decoding between Wide_String and various encoding schemes
    @b<function> Encode (Item          : Wide_String;
@@ -528,10 +615,10 @@
 
    @b<function> Decode (Item : UTF_16_Wide_String) @b<return> Wide_String;
 
-@b<end> Ada.Strings.UTF_Encoding.Wide_Encoding;
+@b<end> Ada.Strings.UTF_Encoding.Wide_Strings;
 
-@b<package> Ada.Strings.UTF_Encoding.Wide_Wide_Encoding @b<is>
-   @b<pragma> Pure (Wide_Wide_Encoding);
+@b<package> Ada.Strings.UTF_Encoding.Wide_Wide_Strings @b<is>
+   @b<pragma> Pure (Wide_Wide_Strings);
 
    -- Encoding / decoding between Wide_Wide_String and various encoding schemes
    @b<function> Encode (Item          : Wide_Wide_String;
@@ -551,7 +638,7 @@
 
    @b<function> Decode (Item : UTF_16_Wide_String) @b<return> Wide_Wide_String;
 
-@b<end> Ada.Strings.UTF_Encoding.Wide_Wide_Encoding;>
+@b<end> Ada.Strings.UTF_Encoding.Wide_Wide_Strings;>
 
 
 The type Encoding_Scheme defines encoding schemes. UTF_8 corresponds
@@ -564,8 +651,8 @@
 containing a sequence of values encoded in one of three ways (UTF-8,
 UTF-16BE, or UTF-16LE). The subtype UTF_8_String is used to represent
 a String of 8-bit values containing a sequence of values encoded in
-UTF-8. The subtype UTF_16_Wide_String is is used to represent a
-Wide_String of 16-bit containing a sequence of values encoded in
+UTF-8. The subtype UTF_16_Wide_String is used to represent a
+Wide_String of 16-bit values containing a sequence of values encoded in
 UTF-16.
 
 The BOM_8, BOM_16BE, BOM_16LE and BOM_16 constants correspond to
@@ -584,8 +671,10 @@
     encoding sequence.>
   @xbullet<By a Decode function when the expected encoding is UTF-16BE or
     UTF-16LE and the input string has an odd length.>
+  @xbullet<By a Decode function yielding a String when the decoding
+    of a sequence results in a code-point whose value exceeds 16#FF#.>
   @xbullet<By a Decode function yielding a Wide_String when the decoding
-    of a sequence results in a code-point whose value exceeds 16#FFFF#>
+    of a sequence results in a code-point whose value exceeds 16#FFFF#.>
   @xbullet<By an Encode function taking a Wide_String as input when an
     invalid character appears in the input. In particular the
     characters whose position is in the range 16#D800# .. 16#DFFF#
@@ -604,8 +693,8 @@
 Item parameter which is assumed to contain characters whose position
 values correspond to a valid encoding sequence according to the
 encoding scheme required by the function or specified by its
-Input_Scheme parameter, and returns the corresponding Wide_String
-(respectively Wide_Wide_String) value.
+Input_Scheme parameter, and returns the corresponding String, Wide_String,
+or Wide_Wide_String value. The lower bound of the returned string is 1.
 
 @xcode<@b<function> Encoding (Item    : UTF_String;
                    Default : Encoding_Scheme := UTF_8) @b<return> Encoding_Scheme;>
@@ -649,6 +738,42 @@
 @xindent<Converts from input encoded in UTF-16 and generates an output encoded
 in UTF-8.>
 
+@xcode<@b<function> Encode (Item          : String;
+                 Output_Scheme : Encoding_Scheme;
+                 Output_BOM    : Boolean  := False) @b<return> UTF_String;>
+
+@xindent<Encodes from String input, and generates an output encoded in
+UTF-8, UTF-16LE or UTF-16BE encoding as specified by Output_Scheme.>
+
+@xcode<@b<function> Encode (Item       : String;
+                 Output_BOM : Boolean  := False) @b<return> UTF_8_String;>
+
+@xindent<Encodes from String input, and generates an output encoded in
+UTF-8 encoding.>
+
+@xcode<@b<function> Encode (Item       : String;
+                 Output_BOM : Boolean  := False) @b<return> UTF_16_Wide_String;>
+
+@xindent<Encodes from String input, and generates an output encoded in
+UTF_16 encoding.>
+
+@xcode<@b<function> Decode (Item         : UTF_String;
+                 Input_Scheme : Encoding_Scheme) @b<return> String;>
+
+@xindent<Decodes from input encoded in UTF-8, UTF-16LE, or UTF-16BE as
+specified by Input_Scheme, and returns the corresponding String
+value.>
+
+@xcode<@b<function> Decode (Item : UTF_8_String) @b<return> String;>
+
+@xindent<Decodes from input encoded in UTF-8, and returns the corresponding
+String value.>
+
+@xcode<@b<function> Decode (Item : UTF_16_Wide_String) @b<return> String;>
+
+@xindent<Decodes from input encoded in UTF-16, and returns the corresponding
+String value.>
+
 @xcode<@b<function> Encode (Item          : Wide_String;
                  Output_Scheme : Encoding_Scheme;
                  Output_BOM    : Boolean  := False) @b<return> UTF_String;>
@@ -659,7 +784,7 @@
 @xcode<@b<function> Encode (Item       : Wide_String;
                  Output_BOM : Boolean  := False) @b<return> UTF_8_String;>
 
-@xindent<Encodes from Wide_String input, and generates an output encoded in
+@xindent<Encodes from String input, and generates an output encoded in
 UTF-8 encoding.>
 
 @xcode<@b<function> Encode (Item       : Wide_String;
@@ -2321,7 +2446,7 @@
 Sent: Friday, June 11, 2010  7:06 AM
 
 > Robert had suggested names of:
-> 
+>
 > Ada.Strings.UTF_Encoding.String_Encoding;
 > Ada.Strings.UTF_Encoding.Wide_String_Encoding;
 > Ada.Strings.UTF_Encoding.Wide_Wide_String_Encoding;
@@ -2330,9 +2455,9 @@
 don'tmind too much if someone wants to put these packages somewhere else, I
 would be willing to move them around and rename them
 
-> Alternatively, we could split these up and use appropriate with 
+> Alternatively, we could split these up and use appropriate with
 > clauses for the shared text:
-> 
+>
 > Ada.Characters.UTF_Encoding;
 > Ada.Strings.UTF_Encoding;
 > Ada.Wide_Strings.Wide_UTF_Encoding;
@@ -2341,6 +2466,243 @@
 I do not like at all any further reorganization of the packages.
 I wasted enough time on these (and believe me, no one else at AdaCore has the
 slightest interest in them :-) :-))
+
+****************************************************************
+
+From: Robert Dewar
+Sent: Monday, July 26, 2010  6:53 AM
+
+I have reviewed the packages in this AI (but not all the commentary, I will try
+to find time to do that some time).
+
+Right now GNAT implements:
+
+> a-stuten.ads:package Ada.Strings.UTF_Encoding a-suenco.ads:package
+> Ada.Strings.UTF_Encoding.Conversions
+> a-suesen.ads:package Ada.Strings.UTF_Encoding.String_Encoding
+> a-suewse.ads:package Ada.Strings.UTF_Encoding.Wide_String_Encoding
+> a-suezse.ads:package
+> Ada.Strings.UTF_Encoding.Wide_Wide_String_Encoding
+
+And the proposal has the packages
+
+> package Ada.Strings.UTF_Encoding
+> package Ada.Strings.UTF_Encoding.Conversions
+> package Ada.Strings.UTF_Encoding.Wide_Encoding
+> package Ada.Strings.UTF_Encoding.Wide_Wide_Encoding
+
+I somewhat prefer my names, but I don't mind changing. I do intend to keep the
+GNAT package that is now called String_Encoding, it's contents are:
+
+> package Ada.Strings.UTF_Encoding.String_Encoding is
+>    pragma Pure (String_Encoding);
+>
+>    --  The encoding routines take a String as input and encode the result
+>    --  using the specified UTF encoding method. The result includes a BOM if
+>    --  the Output_BOM argument is set to True. All 256 values of type Character
+>    --  are valid, so Encoding_Error cannot be raised for string input data.
+>
+>    function Encode
+>      (Item          : String;
+>       Output_Scheme : Encoding_Scheme;
+>       Output_BOM    : Boolean  := False) return UTF_String;
+>    --  Encode String using UTF-8, UTF-16LE or UTF-16BE encoding as specified by
+>    --  the Output_Scheme parameter.
+>
+>    function Encode
+>      (Item       : String;
+>       Output_BOM : Boolean  := False) return UTF_8_String;
+>    --  Encode String using UTF-8 encoding
+>
+>    function Encode
+>      (Item       : String;
+>       Output_BOM : Boolean  := False) return UTF_16_Wide_String;
+>    --  Encode String using UTF_16 encoding
+>
+>    --  The decoding routines take a UTF String as input, and return a decoded
+>    --  Wide_String. If the UTF String starts with a BOM that matches the
+>    --  encoding method, it is ignored. An incorrect BOM raises Encoding_Error,
+>    --  as does a code out of range of type Character.
+>
+>    function Decode
+>      (Item         : UTF_String;
+>       Input_Scheme : Encoding_Scheme) return String;
+>    --  The input is encoded in UTF_8, UTF_16LE or UTF_16BE as specified by the
+>    --  Input_Scheme parameter. It is decoded and returned as a String value.
+>    --  Note: a convenient form for scheme may be Encoding (UTF_String).
+>
+>    function Decode
+>      (Item : UTF_8_String) return String;
+>    --  The input is encoded in UTF-8 and returned as a String value
+>
+>    function Decode
+>      (Item : UTF_16_Wide_String) return String;
+>    --  The input is encoded in UTF-16 and returned as a String value
+>
+> end Ada.Strings.UTF_Encoding.String_Encoding;
+
+I don't really care one way or another if this is included in the standard or
+not (it doesn't affect us), obviously I think it should be included.
+
+I do have to think about
+its name. If I change the names of the Wide and Wide_Wide packages to match the
+AI, then I suppose I will call this additional package
+
+Ada.Strings.UTF_Encoding.Encoding
+
+which seems a bit redundant.
+
+I really prefer my names, they emphasize that the three packages deal with
+Strings, Wide_Strings and Wide_Wide_Strings. In fact I think I will keep my
+names anyway, but I will provide the AI names as renamings if people really feel
+they are better.
+
+Thoughts?
+
+****************************************************************
+
+From: Tucker Taft
+Sent: Monday, July 26, 2010  9:34 AM
+
+We debated various namings and came
+up with the ones in the AI.  It is not
+clear whether there is sufficient reason to reopen the AI.
+
+****************************************************************
+
+From: Robert Dewar
+Sent: Monday, July 26, 2010  10:03 AM
+
+Yes, but note the additional factor that you are missing a package, and the name
+
+Ada.Strings.UTF_Encoding.Encoding
+
+for the String specific version is distinctly unpleasant in my view! It was the
+addition of this package (which is definitely needed) that made me add String to
+the names. The real issue here is whether to add the missing package.
+
+Once that is decided, the issue of what to call it can be addressed
+
+In the case of
+
+package Ada.Strings.UTF_Encoding.Wide_Wide_Encoding
+
+You know it has to do with Wide_Wide_String, but that hint is not there for the
+base package.
+
+As I say, I am going to maintain the existing names in GNAT for this reason, but
+it's of course trivial to add renames for the 2/3 packages that are in the
+standard.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, July 26, 2010  1:19 PM
+
+That would be true, except that (a) the AI Robert referenced (version /01)
+doesn't reflect the discussion from Valencia; and (b) we only voted intent in
+Valencia because of the extensive changes that the AI underwent there.
+
+Jean-Pierre sent a newer version of this AI to the ARG list on June 25th; I
+haven't posted it yet, but anyone planning to comment on the AI needs to refer
+to that most recent draft and not previous versions.
+
+Thus I agree with Tucker that Robert's comments are moot, but for a different
+reason: he's referring to an obsolete version of the AI.
+
+P.S. Note that the package names were changed again, this time because of a
+complaint that is recorded as coming from Ed: too many "Encoding"s in the names.
+
+****************************************************************
+
+From: Robert Dewar
+Sent: Monday, July 26, 2010  5:42 PM
+
+Can we at least see the current modified specs ASAP. I really don't care about
+all the text, just the specs are enough.
+
+BTW, when you use the word moot, are you using it in the correct sense of
+"undecided, arguable", or in the peculiar common US modern sense of
+"irrelevant". I recommend against using the word at all because of this
+confusion.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, July 26, 2010  6:40 PM
+
+> Can we at least see the current modified specs ASAP. I really don't
+> care about all the text, just the specs are enough.
+
+I've forwarded J-P's old message to you (note that I haven't edited it yet, so
+there may be some small changes before it gets posted). For any one else that is
+interested, it was sent June 25th to this list.
+
+> BTW, when you use the word moot, are you using it in the correct sense
+> of "undecided, arguable", or in the peculiar common US modern sense of
+> "irrelevant". I recommend against using the word at all because of
+> this confusion.
+
+I think I used it correctly, but I think whether I used it correctly is moot
+(using it correctly). :-)
+
+I actually thought about this before I used the word, because I knew that you
+have complained about inaccurate use of this word in the past and that the
+definition isn't "irrelevant". In this case, I meant that your comments ought
+"to be left undecided", regardless of their technical merits, because they were
+superseded by the full ARG meeting.
+
+****************************************************************
+
+From: Robert Dewar
+Sent: Monday, July 26, 2010  6:47 PM
+
+> I've forwarded J-P's old message to you (note that I haven't edited it
+> yet, so there may be some small changes before it gets posted). For
+> any one else that is interested, it was sent June 25th to this list.
+
+So  this message basically represents the current proposal?
+
+>> BTW, when you use the word moot, are you using it in the correct
+>> sense of "undecided, arguable", or in the peculiar common US modern
+>> sense of "irrelevant". I recommend against using the word at all
+>> because of this confusion.
+>
+> I think I used it correctly, but I think whether I used it correctly
+> is moot (using it correctly). :-)
+>
+> I actually thought about this before I used the word, because I knew
+> that you have complained about inaccurate use of this word in the past
+> and that the definition isn't "irrelevant". In this case, I meant that
+> your comments ought "to be left undecided", regardless of their
+> technical merits, because they were superseded by the full ARG meeting.
+
+fair enough
+
+****************************************************************
+
+From: Robert Dewar
+Sent: Monday, July 26, 2010  6:49 PM
+
+I will look at the new version and comment ASAP!
+
+****************************************************************
+
+From: Robert Dewar
+Sent: Monday, July 26, 2010  7:18 PM
+
+I read the specs in the latest version Randy sent to me, and they are fine, I
+agree that removing the second Encoding from the names makes sense, and I will
+make that change in the GNAT implementation.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Monday, July 26, 2010  7:42 PM
+
+For the record, I've now checked over Jean-Pierre's version carefully, and while
+I found a couple of typos and the !corrigendum section was incompletely updated,
+I didn't find any significant problems.
 
 ****************************************************************
 

Questions? Ask the ACAA Technical Agent