| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef __com_sun_star_bridge_XBridgeSupplier2_idl__ |
| #define __com_sun_star_bridge_XBridgeSupplier2_idl__ |
| |
| #ifndef __com_sun_star_uno_XInterface_idl__ |
| #include <com/sun/star/uno/XInterface.idl> |
| #endif |
| |
| #ifndef __com_sun_star_lang_IllegalArgumentException_idl__ |
| #include <com/sun/star/lang/IllegalArgumentException.idl> |
| #endif |
| |
| |
| //============================================================================= |
| |
| module com { module sun { module star { module bridge { |
| |
| //============================================================================= |
| |
| /** defines the interface for creating bridges to other object models. |
| <p /> |
| <p> |
| The created bridges are transparent to the user. That is, if one maps |
| an interface into the target model, then the resulting target interface |
| is a bridge implementation, that is not being noticed by an user. During |
| a call on that interface, the bridge is invoked to convert the arguments |
| and carry out a call according to the rules of the source model. |
| Return values are automatically mapped to the types of the target model. |
| </p> |
| <p> |
| Simple types are mapped to simple target types. That is, there is no additional |
| bridging code involved when those types are being used. |
| </p> |
| |
| <p>Sometimes a bridge cannot be created, depending on whether a programm uses |
| the XBridgeSupplier2 interface remotely. Assuming one wants to bridge an |
| OLE Automation object to UNO by calling createBridge on a proxy, then the UNO remote |
| bridge would not recognise that the Any argument contains an IDispatch interface. |
| Therefore it cannot marshal it as COM requires it and the bridgeing would fail. |
| To prevent this, implementations of this interface should be aware of this scenario and |
| if necessary take the appropriate steps. The process ID argument to the createBridge |
| function represents the calling process and may be used by the implementation to determine |
| if it is being accessed remotely. |
| </p> |
| <p>All objects, whether they are part of the UNO object model or not, |
| are carried in an <atom>any</atom>. The representation of this object |
| is heavily model-dependent and has to be specified in the following list: </p> |
| |
| <dl> |
| <dt>UNO: </dt> |
| <dd>The any carries normal UNO types, which can be any base type, |
| struct, sequence, enum or interface. </dd> |
| |
| <dt>OLE: </dt> |
| <dd>The any carries an <atom>unsigned long</atom> (on 32-bit systems) |
| or an <atom>unsigned hyper</atom> (on 64-bit systems), which is |
| interpreted as a variant pointer. The any does not control the |
| lifetime of the represented variant. That implies that the caller |
| has the responsibility of freeing the OLE resources represented |
| by the any value. </dd> |
| |
| <dt>JAVA: </dt> |
| <dd>not specified yet. </dd> |
| |
| <dt>CORBA: </dt> |
| <dd>not specified yet. </dd> |
| </dl> |
| |
| </p> |
| <p>Any implementation can supply its own bridges to other object |
| models by implementing this interface and returning the bridge |
| when the method <member>XBridgeSupplier2::createBridge()</member> |
| is called with itself as the first parameter. </p> |
| |
| @see com::sun::star::bridge::OleBridgeSupplier2 |
| */ |
| published interface XBridgeSupplier2: com::sun::star::uno::XInterface |
| { |
| /** creates a bridge to provide an object of one object model with another. |
| */ |
| any createBridge( [in] any aModelDepObject, |
| [in] sequence< byte > aProcessId, |
| [in] short nSourceModelType, |
| [in] short nDestModelType ) |
| raises( com::sun::star::lang::IllegalArgumentException ); |
| |
| }; |
| |
| //============================================================================= |
| |
| }; }; }; }; |
| |
| /*============================================================================= |
| |
| =============================================================================*/ |
| #endif |