Previous Table of Contents Next


19.8 Mapping for CORBA Complex Types

   CORBA constructed types—Structs, Unions, and Exceptions—cannot be mapped directly to ODL constructed types, as Automation does not support them as valid parameter types. Instead, constructed types are mapped to Pseudo-Automation Interfaces. The objects that implement Pseudo-Automation Interfaces are called pseudo-objects. Pseudo-objects do not expose the IForeignObject interface.

   Pseudo-Automation Interfaces are Dual Interfaces, but do not derive directly from IDispatch as do Automation View Interfaces. Instead, they derive from DIForeignComplexType:

   // ODL[odl, dual, uuid(...)]interface DIForeignComplexType: IDispatch {

   [propget] HRESULT ([retval,out] BSTR *val);HRESULT ([in] IDispatch *pDispatch, [out, retval] IDispatch **val);}

   The UUID for DIForeignComplexType is:

   {A8B553C0-3B72-11cf-BBFC-444553540000}

   This interface can also be implemented as a generic (nondual) Automation Interface, in which case it is named DForeignComplexType and its UUID is:

   {E977F900-3B75-11cf-BBFC-444553540000}

   The direct use of the INSTANCE repositoryID () is deprecated. The approved way to retrieve the repositoryId is through the DIObjectInfo::unique id () method.

   The direct use of the INSTANCE clone () method is deprecated. The approved way to clone the data referred to by a reference is to use the DIObjectInfo::clone () method.