General Comments on Data Types


The adapter does not support embedded pointers. Therefore, no member variable of a UDT may be a pointer. For example, the following COM UDT (as expressed in IDL) would be illegal except for the ADO Recordset pointer and ADO connection object pointer described earlier:

struct xyz 
{ 
  short* m_pShort; 
  BSTR* m_pbstr; 
  SAFEARRAY(int)* m_pSA; 
  struct xyz* m_pxyz; 
}; 

Note; however, that the types BSTR and SAFEARRAY, though intrinsically pointers, are allowed. For example:

struct xyz 
{ 
  short m_Short; 
  BSTR m_bstr; 
  SAFEARRAY(int) m_pSA; 
  struct xyz m_xyz; 
}; 

Furthermore, VT_BYREF is not allowed in VARIANT's. For example, the following VARIANT VARTYPE would be illegal:

VT_I2 | VT_BYREF 

Finally, the element type of a SAFEARRAY may not be a pointer. For example, the following SAFEARRAY would be illegal:

SAFEARRAY(int*) 

The adapter allows top-level pointers only for parameters with the <out> attribute. Thus, the following method signature would be illegal:

HRESULT InvalidMethod(<in> int* pint); 

The best source of information for data types supported by the adapter is the sample.dat example shipped with the product. The file main.cpp in that project contains numerous examples of supported data types.


TIBCO Adapter™ for COM User’s Guide
Software Release 5.3, September 2005
Copyright © TIBCO Software Inc. All rights reserved
www.tibco.com