!standard B.3 (01/1) 05-08-17 AI95-00376/04
!standard B.3 (02)
!standard 1.2 (8/1)
!class ramification 04-03-08
!status Amendment 200Y 04-07-02
!status WG9 approved 04-11-18
!status ARG Approved 3-0-3 04-06-14
!status work item 04-03-08
!status received 04-03-08
!qualifier Clarification
!priority Medium
!difficulty Easy
!subject Interfaces.C works for C++ as well
!summary
Wording changes are made to the Standard to make clear that the interfacing
capabilities of section B.3 apply to the C-subset of C++ as well.
!question
Which provisions does Ada offer to interface with C++ ?
!recommendation
(See wording.)
!wording
Change the title of section B.3 to read "Interfacing with C and C++"
Change B.3(1-2) to read:
The facilities relevant to interfacing with the C language and the
corresponding subset of the C++ language are the package Interfaces.C
and its children, and support for the Import, Export, and Convention
pragmas with convention_identifier C; and support for the Convention
pragma with convention_identifier C_Pass_By_Copy.
The package Interfaces.C contains the basic types, constants and
subprograms that allow an Ada program to pass scalars and strings to C
and C++ functions. When this clause mentions a C entity, the reference
also applies to the corresponding entity in C++.
Add the following after 1.2(8/1):
ISO/IEC 14882:2003, Programming languages - C++
!discussion
The facilities provided for C work equally well for C++.
Admittedly, a truly convenient interfacing with C++ would also entail
interfacing with the object-oriented elements of C++. However,
specifying standardized interfaces for this capability in a
compiler-independent fashion is deemed too difficult.
Note that if we normatively talk about C++, we need a reference to its
standard in 1.2.
!corrigendum 1.2(8/1)
@dinsa
ISO/IEC 10646-1:1993, @i,
supplemented by Technical Corrigendum 1:1996.
@dinst
ISO/IEC 14882:2003, @i.
!corrigendum B.3(0)
@drepl
Interfacing with C
@dby
Interfacing with C and C++
!corrigendum B.3(1/1)
@drepl
The facilities relevant to interfacing with the C language are the package
Interfaces.C and its children; support for the Import, Export, and Convention
pragmas with @i_@fa C; and support for the Convention
pragma with @i_@fa C_Pass_By_Copy.
@dby
The facilities relevant to interfacing with the C language and the
corresponding subset of the C++ language are the package
Interfaces.C and its children; support for the Import, Export, and Convention
pragmas with @i_@fa C; and support for the Convention
pragma with @i_@fa C_Pass_By_Copy.
!corrigendum B.3(2)
@drepl
The package Interfaces.C contains the basic types, constants and subprograms
that allow an Ada program to pass scalars and strings to C functions.
@dby
The package Interfaces.C contains the basic types, constants and subprograms
that allow an Ada program to pass scalars and strings to C and C++ functions.
When this clause mentions a C entity, the reference also applies to the
corresponding entity in C++.
!ACATS test
There is no functional change to the language here, so further tests are not
needed.
!appendix
****************************************************************