Table of Contents Previous Next PDF


OMG IDL Syntax and the C++ IDL Compiler

OMG IDL Syntax and the C++ IDL Compiler
The Object Management Group (OMG) Interface Definition Language (IDL) is used to describe the interfaces that client objects call and that object implementations provide. An OMG IDL interface definition fully specifies each operation’s parameters and provides the information needed to develop client applications that use the interface’s operations.
Client applications are written in languages for which mappings from OMG IDL statements have been defined. How an OMG IDL statement is mapped to a client language construct depends on the facilities available in the client language. For example, an OMG IDL exception might be mapped to a structure in a language that has no notion of exception, or to an exception in a language that does.
OMG IDL statements obey the same lexical rules as C++ statements, although new keywords are introduced to support distribution concepts. OMG IDL statements also provide full support for standard C++ preprocessing features and OMG IDL-specific pragmas.
Note:
module A
{
interface B
{
#pragma version B "3.5"
void op1();
};
};
The OMG IDL grammar is a subset of ANSI C++ with additional constructs to support the operation invocation mechanism. OMG IDL is a declarative language; it supports C++ syntax for constant, type, and operation declarations; it does not include any algorithmic structures or variables.
For a description of OMG IDL grammar, see Chapter 3 of the Common Object Request Broker: Architecture and Specification Revision 2.4 “OMG IDL Syntax and Semantics.”
All OMG IDL grammar is supported, with the exception of the following type declarations and associated literals:
Note:
Because CORBA 2.4 states that the native type declaration is intended for use in Object Adapters, not user interfaces, this type is available in the PortableServer module only for clients that support callbacks, that is, joint client/servers.
Do not use these data types in IDL definitions.
Note:
Support for the long long, unsigned long long, wchar, and wstring data types was added to Oracle Tuxedo CORBA in release 8.0.
OMG IDL Compiler Extensions
The IDL compiler defines preprocessor macros specific to the platform. All macros predefined by the preprocessor that you are using can be used in the OMG IDL file, in addition to the user-defined macros. You can also define your own macros when you are compiling or loading OMG IDL files.
Table 1‑1 describes the predefined macros for each platform.
 
Table 1‑1 Predefined Macros
C++ IDL Compiler Constraints
Table 1‑2 describes constraints for the Oracle Tuxedo 9.1 C++ IDL compiler and provides information about recommended workarounds.
 
Table 1‑2 C++ IDL Compiler 
void op5() context("*");
^
LIBORBCMD_CAT:131: INFO: ‘*’ is a non-standard
context property.
void op5() context("*");
^
LIBORBCMD_CAT:131: INFO: ‘*’ is a non-standard
context property.
get_
set_
Impl_
_ptr
_slice
Defining IDL variables of char or boolean type
C++ compilers report an error that an "operator <<" is ambiguous and that there is no "operator>>" for type char. These errors are produced because of the multiple levels of typedefs; the C++ compiler may not associate the type X::b with CORBA::Boolean because of the intermediate type definition of X::a.
Use a single level of indirection when you define char or boolean types. In the IDL example above, the attribute ‘X::Z’ would be defined using either the standard type ‘boolean’ or the user type ‘X::a’, but not the user type ‘X::b’.
 

Copyright © 1994, 2017, Oracle and/or its affiliates. All rights reserved.