CVS difference for ais/ai-00131.txt

Differences between 1.10 and version 1.11
Log of other versions for file ais/ai-00131.txt

--- ais/ai-00131.txt	1999/06/22 01:44:37	1.10
+++ ais/ai-00131.txt	1999/07/21 03:10:58	1.11
@@ -1,5 +1,6 @@
-!standard B.1      (13-18)                              99-06-12  AI95-00131/08
+!standard B.1      (13-18)                              99-07-20  AI95-00131/09
 !class binding interpretation 98-11-05
+!status Corrigendum 2000 99-07-20
 !status WG9 approved 99-06-12
 !status ARG Approved (with changes) 8-0-1  99-03-24
 !status work item 98-11-05
@@ -113,7 +114,80 @@
 function with result type T corresponds to a C function with return type t,
 where t is the C type corresponding to the Ada type T.
 
-!appendix 96-04-17
+!corrigendum B.03(1)
+
+@drepl
+The facilities relevant to interfacing with the C language are the
+package Interfaces.C and its children; and support for the Import, Export,
+and Convention pragmas with @fa<@i<convention>_identifier> C.
+@dby
+The facilities relevant to interfacing with the C language are the
+package Interfaces.C and its children; and support for the Import, Export,
+and Convention pragmas with @fa<@i<convention>_identifier> C; and support
+for the Convention pragma with @fa<@i<convention>_identifier> C_Pass_By_Copy."
+
+!corrigendum B.03(60)
+
+@dinsa
+@xindent<The To_C and To_Ada subprograms that convert between Wide_String
+and wchar_array have analogous effects to the To_C and To_Ada
+subprograms that convert between String and char_array, except that
+wide_nul is used instead of nul.>
+@dinss
+A Convention pragma with @fa<@i<convention>_identifier> C_Pass_By_Copy may
+only be applied to a type.
+
+A type T is eligible for convention C_Pass_By_Copy if T is a record type that
+has no discriminants and that only has components with statically constrained
+subtypes, and each component is C-compatible.  (The eligibility rules
+in B.1 do not apply to convention C_Pass_By_Copy.)
+
+If a type is C_Pass_By_Copy-compatible then it is also C-compatible.
+
+!corrigendum B.03(61)
+
+@drepl
+An implementation shall support pragma Convention with a C
+convention_identifier for a C-eligible type (see B.1)
+@dby
+An implementation shall support pragma Convention with a C
+convention_identifier for a C-eligible type (see B.1).
+An implementation shall support pragma Convention
+with a C_Pass_By_Copy convention_identifier for a C_Pass_By_Copy-eligible
+type.
+
+!corrigendum B.03(68)
+
+@dinsa
+@xbullet<An Ada @b<access> T parameter, or an Ada @b<out> or @b<in out> parameter of
+an elementary type T, is passed as a t* argument to a C function,
+where t is the C type corresponding to the Ada type T. In the
+case of an elementary @b<out> or @b<in out> parameter, a pointer to a
+temporary copy is used to preserve by-copy semantics.>
+@dinst
+@xbullet<An Ada parameter of a C_Pass_By_Copy-compatible [record] type T,
+of mode @b<in>, should be passed as a t argument to a C function, where t is the
+C struct corresponding to the Ada type T.>
+
+!corrigendum B.03(69)
+
+@drepl
+@xbullet<An Ada parameter of a record type T, of any mode, is passed as a
+t* argument to a C function, where t is the C struct
+corresponding to the Ada type T.>
+@dby
+@xbullet<An Ada parameter of a record type T, of any mode, other than an @b<in>
+parameter of a C_Pass_By_Copy-compatible type, is passed as a
+t* argument to a C function, where t is the C struct corresponding to the
+Ada type T.>
+
+!ACATS test
+
+A CXC* C-Test should be created for C_Pass_By_Copy. It probably will need a
+C function similar to that in CXC3013 to check that the passing was done
+properly.
+
+!appendix
 
 !section B.3(69)
 !subject Interface to C -- passing records as parameters

Questions? Ask the ACAA Technical Agent