[Top] [Prev] [Next] [Bottom]

C++ Mapping Overview

15


This chapter explains how:

15.1 Key Design Decisions

The design of the C++ mapping was driven by a number of considerations, including a design that achieves reasonable performance, portability, efficiency, and usability for OMG IDL-to-C++ implementations. Several other considerations are outlined in this section.

For more information about the general requirements of a mapping from OMG IDL to any programming language, refer to Section 14.1, "Requirements for a Language Mapping," on page 14-1.

15.1.1 Compliance

The C++ mapping tries to avoid limiting the implementation freedoms of ORB developers. For each OMG IDL and CORBA construct, the C++ mapping explains the syntax and semantics of using the construct from C++. A client or server program conforms to this mapping-is CORBA-C++ compliant-if it uses the constructs as described in the C++ mapping chapters. An implementation conforms to this mapping if it correctly executes any conforming client or server program. A conforming client or server program is therefore portable across all conforming implementations. For more information about CORBA compliance, refer to Section 0.6, "Definition of CORBA Compliance".

15.1.2 C++ Implementation Requirements

The mapping proposed here assumes that the target C++ environment supports all the features described in The Annotated C++ Reference Manual (ARM) by Ellis and Stroustrup as adopted by the ANSI/ISO C++ standardization committees, including exception handling. In addition, it assumes that the C++ environment supports the namespace construct recently adopted into the language. Because C++ implementations vary widely in the quality of their support for templates, this mapping does not explicitly require their use, nor does it disallow their use as part of a CORBA-compliant implementation.

15.1.3 C Data Layout Compatibility

Some ORB vendors feel strongly that the C++ mapping should be able to work directly with the CORBA C mapping. This mapping makes every attempt to ensure compatibility between the C and C++ mappings, but it does not mandate such compatibility. In addition to providing better interoperability and portability, the C++ call style solves the memory management problems seen by C programmers who use the C call style. Therefore, the OMG has adopted the C++ call style for OMG IDL. However, to provide continuity for earlier applications, an implementation might choose to support the C call style as an option. If an implementation supports both call styles, it is recommended that the C call style be phased out.

Note that the mapping in Chapter 14, "C Language Mapping" has been modified from CORBA V1.2 to achieve compatibility between the C and C++ mappings.

15.1.4 No Implementation Descriptions

This mapping does not contain implementation descriptions. It avoids details that would constrain implementations, but still allows clients to be fully source compatible with any compliant implementation. Some examples show possible implementations, but these are not required implementations.

15.2 Organization of the C++ Mapping

In addition to this overview, the mapping of OMG IDL to the C++ programming language is divided into the following chapters:

Three appendices are also included at the end of the C++ chapters. One appendix contains C++ definitions for the CORBA module; another contains C++ keywords for the CORBA module; and another contains workarounds for C++ dialects that do not match the assumptions specified in Section 15.1.2, "C++ Implementation Requirements," on page 15-2.



[Top] [Prev] [Next] [Bottom]

pubs@omg.org
Copyright © 1995, Object Management Group. All rights reserved.