/* -*- 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 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 ` 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: */
Messung V0.5 in Prozent C=98 H=94 G=95
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland