Inprise Delphi CORBA Support - Release Notes

# Release Notes

This is intended for use with VisiBroker 3.3 or 4.0, and Delphi 7 only. It supersedes all field test releases.

VisiBroker 3.3. support for Delphi provides:

- an IDL to Delphi compiler (idl2pas.jar)
- two CORBA developer support units (OrbPas30.pas / OrbPas30.dcu, Corba.Pas / Corba.dcu)
- a runtime library (orbpas33.dll, orb_br.dll).

VisiBroker 4.0 support in Delphi provides:

- an IDL to Delphi compiler (idl2pas.jar)
- two CORBA developer support units (OrbPas40.pas / OrbPas40.dcu, Corba.Pas / Corba.dcu)
- a runtime library (orbpas40.dll, orb_br.dll, vport_br).

Compatibility with Delphi

The Delphi CORBA capability provided by this product is designed to coexist with Delphi. Specifically, the new runtime files are add-on files for the original runtime library. They do not replace existing files in the Delphi product.

Because the two CORBA architectures can coexist, it is possible to;

| Use the CORBA wizards in Delphi to generate static binding clients and servers.
| Connect a client written using the new client-side implementation to connect to a server generated by the Delphi DII wizards. The existing CORBA functionality in Delphi uses the Type Library Editor to generate OMG CORBA 2.1 compatible IDL from a Type Library. This means that you can you can create a server with the Delphi Type Library Editor and then access it with a client built using the stub files generated from the IDL by the idl2pas compiler (see examples ). You can also create complete clients and servers just using the IDL2pas compiler. However, the "preferred" method of developing CORBA applications is to use OMG IDL and the IDL2Pas compiler. Note, to use both DII and IDL2pas you need to install the VisiBroker 3.3 ORB.

### VisiBroker Common IDL Compiler Architecture

This is the first generally-released compiler to be based on the Borland VisiBroker 4.0 Common IDL Compiler Architecture (VCICA). The use of the VCICA facilitates the future integration of the compiler into the Delphi IDE and other Borland components. The VCICA is written in Java and for this reason the IDL-to-Delphi compiler itself is written in Java. This ensures that the tool will also run on Linux and will facilitate support for Kylix.

The IDL-Delphi Mapping

Borland has specified a language mapping between IDL and Delphi. The language mapping is described in chapter two of the VisiBroker for Delphi manual . This mapping has not been sanctioned by the OMG and may be subject to revision.

The examples included in this distribution show various aspects of the mapping described in the document.

Corba 2.1 and 2.3

The current release of the Delphi ORB is built around either VisiBroker 3.3.2 which supports CORBA 2.1, or VisiBroker 4.0 which supports the CORBA 2.3 IDL standard (note Object By Value is not supported in this release).

Corba Keywords

CORBA 2.3 adds a number of keywords to those recognized by 2.1. This means that IDL that is accepted by a 2.1 compliant compiler will be rejected by a 2.3 compliant compiler if that IDL uses names that happen to be among the keywords that are new to 2.3.

If you encounter this situation the compiler's keyword detection can be overridden by prefix the offending word with an underbar (_) in the IDL. (i.e. the operation void supports(short a) would become void _supports(short a) in the IDL. The resulting Delphi files would contain an operation named supports, not _supports.)

Delphi Keywords

Any name used in an IDL file that conflicts with a Delphi keyword will automatically have an underscore added to it by the compiler in order to prevent naming conflicts when the generated files are processed by the Delphi compiler. Note: in some testing the use of "Owner" as a variable name results in the generation of the variable "_Owner". In some cases you may still get a compile error. The work around is to change all instances of this variable to "Owner_". It is recommended the you avoid the use of Delphi reserved words.

### Features Supported

| Client and Server CORBA generation
| Support for all of the basic CORBA types that can be mapped to Delphi (int, float, double, string, etc.) At present we do not intend to add support for the fixed datatype because there is no equivalent type in Delphi.
| Modules.
| Single and Multiple Inheritance of interfaces.
| Compound types; Structs, Unions, Arrays, and Sequences.
| Parameter passing for In, Out, and InOut directions.
| One-way and two-way operations.
| Attributes.
| Exception handling.
| Constants.
| Nesting of modules, compound types etc..
| Preprocessor directives (#include etc.).
| Anonymous types.
| CORBA Object type.
| CORBA Any type.
| Callbacks
| COSNaming Service
| COSEvent Service