| /************************************************************** |
| * |
| * 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_uno_XWeak_idl__ |
| #define __com_sun_star_uno_XWeak_idl__ |
| |
| #ifndef __com_sun_star_uno_XInterface_idl__ |
| #include <com/sun/star/uno/XInterface.idl> |
| #endif |
| |
| #ifndef __com_sun_star_uno_XAdapter_idl__ |
| #include <com/sun/star/uno/XAdapter.idl> |
| #endif |
| |
| |
| //============================================================================= |
| |
| module com { module sun { module star { module uno { |
| |
| //============================================================================= |
| |
| // DocMerge from xml: interface com::sun::star::uno::XWeak |
| /** the server-side interface to a weak object. |
| |
| |
| |
| <p>This interface is proxy to the adapted object. |
| In order to make it possible to have weak references to objects, |
| the <type>XAdapter</type> interface must be implemented to provide |
| a weak adapter for the clients. |
| |
| <h4>Concept of weak referencing:</h4> |
| |
| </p> |
| <p>This module specifies the interfaces for implementing and using |
| weak references.</p> |
| <p> |
| |
| </p> |
| <p>The sense of weak references is to hold a reference to an object |
| without affecting the lifetime of the object. That means that a weak |
| reference may become invalid, at any time, if the referenced object dies. |
| |
| </p> |
| <p>The following interfaces describe one way to handle weak references |
| by providing a weak adapter. The weak object has to provide this |
| adapter if anyone wants to hold a weak reference. To separate their |
| lifetimes, the adapter and the original object must not share the same |
| reference counter. The weak reference is in fact only a hard reference |
| to the adapter, which knows - but does not hold - the original object. |
| That means that the implementation and synchronization of weak |
| referencing is the responsibility of the object. The following |
| interfaces are involved in the concept of weak referencing: |
| |
| <dl> |
| <dt> |
| <type>XWeak</type> |
| </dt> |
| <dd>is the server-side interface of the referred object. This |
| referred object must support the <type>XAdapter</type> interface. |
| |
| </dd> |
| <dt> |
| <type>XReference</type> |
| </dt> |
| <dd>is a client-side interface which must be implemented by |
| the holder of any weak reference. It is used for notification |
| when the adapted object dies. |
| |
| </dd> |
| </dl> |
| </p> |
| */ |
| published interface XWeak: com::sun::star::uno::XInterface |
| { |
| //------------------------------------------------------------------------- |
| |
| // DocMerge from xml: method com::sun::star::uno::XWeak::queryAdapter |
| /** queries the weak adapter. |
| |
| |
| |
| <p>It is important that the adapter must know, but not hold |
| the adapted object. If the adapted object dies, all references |
| to the adapter have to be notified to release the adapter. |
| |
| </p> |
| */ |
| com::sun::star::uno::XAdapter queryAdapter(); |
| |
| }; |
| |
| //============================================================================= |
| |
| }; }; }; }; |
| |
| /*============================================================================= |
| |
| =============================================================================*/ |
| #endif |