Change-Id: Iaac84391d5cf654166739b22b9e6f1c30e9c567e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/209924 Tested-by: Julien Nabet <serval2412@yahoo.fr> Reviewed-by: Julien Nabet <serval2412@yahoo.fr>
95 lines
4.0 KiB
Plaintext
95 lines
4.0 KiB
Plaintext
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* 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 .
|
|
*/
|
|
|
|
|
|
|
|
module com { module sun { module star { module bridge {
|
|
|
|
|
|
/** defines the interface for creating bridges to other object models.
|
|
|
|
<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 program 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 bridging 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 `any`. 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 `unsigned long` (on 32-bit systems)
|
|
or an `unsigned hyper` (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>
|
|
</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 XBridgeSupplier2::createBridge()
|
|
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 );
|
|
|
|
};
|
|
|
|
|
|
}; }; }; };
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|