CVS difference for 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