Client-Side Conversions

From Apache OpenOffice Wiki
Jump to: navigation, search

The UNO IDL description and the defined mappings indicate what to expect as a return value when a particular UNO function is called. However, the language used might apply yet another conversion after a value came over the bridge.

  // UNO IDL 
  float func();
  ' VB
  Dim ret As Single
  ret= obj.func() 'no conversion by VB
  Dim ret2 As String
  ret2= obj.func() 'VB converts float to string

When the function returns, VB converts the float value into a string and assigns it to ret2. Such a conversion comes in useful when functions return a character, and a string is preferred instead of a VB Integer value.

  // UNO IDL
  char func();
  ' VB
  Dim ret As String
  ret= obj.func()'VB converts the returned short into a string

Be aware of the different value spaces if taking advantage of these conversions. That is, if the value space of a variable that receives a return value is smaller than the UNO type, a runtime error might occur if the value does not fit into the provided variable. Refer to the documentation of your language for client-side conversions.

Client-side conversions only work with return values and not with out or inout parameters. The current bridge implementation is unable to transport an out or inout parameter back to Automation if it does not have the expected type according to the default mapping.

Another kind of conversion is done implicitly. The user has no influence on the kind of conversion. For example, the scripting engine used with the Windows Scripting Host or Internet Explorer uses double values for all floating point values. Therefore, when a UNO function returns a float value, then it is converted into a double which may cause a slightly different value. For example:

  // UNO IDL
  float func(); //returns 3.14
  // JScript
  var ret= obj.func(); // implicit conversion from float to double, ret= 3.14000010490417

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools
In other languages