[Ada] Updates to make Interfaces.C.Strings match RM

Arnaud Charlet charlet@adacore.com
Tue Aug 2 09:42:00 GMT 2011


This patch updates Interafaces.C.Strings to match the RM as follows:
In accordance with AI95-00161
 pragma Preelaborable_Initialization is added for chars_ptr
In accordance with AI95-00276
 aliased keyword is added to declaration of chars_ptr_array

The following should compile quietly:

with interfaces.C.Strings;
with Interfaces.C.Pointers;
package Char_Ptr_Ptr is new Interfaces.C.Pointers
 (Index              => Interfaces.C.size_t,
  Element            => Interfaces.C.Strings.chars_ptr,
  Element_Array      => Interfaces.C.Strings.chars_ptr_array,
  Default_Terminator => Interfaces.C.Strings.Null_Ptr);

Tested on x86_64-pc-linux-gnu, committed on trunk

2011-08-02  Robert Dewar  <dewar@adacore.com>

	* i-cstrin.ads: Updates to make Interfaces.C.Strings match RM

-------------- next part --------------
Index: i-cstrin.ads
===================================================================
--- i-cstrin.ads	(revision 177038)
+++ i-cstrin.ads	(working copy)
@@ -45,8 +45,9 @@
    --  strict aliasing assumptions for this type.
 
    type chars_ptr is private;
+   pragma Preelaborable_Initialization (chars_ptr);
 
-   type chars_ptr_array is array (size_t range <>) of chars_ptr;
+   type chars_ptr_array is array (size_t range <>) of aliased chars_ptr;
 
    Null_Ptr : constant chars_ptr;
 


More information about the Gcc-patches mailing list