19 #ifndef INCLUDED_COM_SUN_STAR_UNO_REFERENCE_HXX
20 #define INCLUDED_COM_SUN_STAR_UNO_REFERENCE_HXX
23 #include <com/sun/star/uno/RuntimeException.hpp>
24 #include <com/sun/star/uno/XInterface.hpp>
38 XInterface * pInterface,
const Type & rType )
43 Any aRet( pInterface->queryInterface( rType ) );
46 XInterface * pRet =
static_cast< XInterface *
>( aRet.pReserved );
54 template<
class interface_type >
56 XInterface * pInterface )
SAL_THROW( (RuntimeException) )
68 XInterface * pInterface,
const Type & rType )
71 XInterface * pQueried = iquery( pInterface, rType );
74 throw RuntimeException(
79 template<
class interface_type >
81 XInterface * pInterface )
SAL_THROW( (RuntimeException) )
84 pInterface, interface_type::static_type());
87 template<
class interface_type >
88 inline interface_type * Reference< interface_type >::iset_throw(
89 interface_type * pInterface )
SAL_THROW( (RuntimeException) )
93 castToXInterface(pInterface)->acquire();
96 throw RuntimeException(
102 template<
class interface_type >
106 _pInterface->release();
109 template<
class interface_type >
115 template<
class interface_type >
118 _pInterface = rRef._pInterface;
120 _pInterface->acquire();
123 template<
class interface_type >
template<
class derived_type >
126 typename detail::UpCast< interface_type, derived_type >::t )
129 interface_type * p = rRef.
get();
132 _pInterface->acquire();
135 template<
class interface_type >
138 _pInterface = castToXInterface(pInterface);
140 _pInterface->acquire();
143 template<
class interface_type >
146 _pInterface = castToXInterface(pInterface);
149 template<
class interface_type >
152 _pInterface = castToXInterface(pInterface);
155 template<
class interface_type >
158 _pInterface = iquery( rRef.
get() );
161 template<
class interface_type >
164 _pInterface = iquery( pInterface );
167 template<
class interface_type >
171 ? iquery( static_cast< XInterface * >( rAny.
pReserved ) ) : 0);
174 template<
class interface_type >
177 _pInterface = iquery_throw( rRef.
get() );
180 template<
class interface_type >
183 _pInterface = iquery_throw( pInterface );
186 template<
class interface_type >
190 ? static_cast< XInterface * >( rAny.
pReserved ) : 0 );
193 template<
class interface_type >
196 _pInterface = castToXInterface( iset_throw( rRef.
get() ) );
199 template<
class interface_type >
202 _pInterface = castToXInterface( iset_throw( pInterface ) );
206 template<
class interface_type >
211 XInterface *
const pOld = _pInterface;
217 template<
class interface_type >
219 interface_type * pInterface )
SAL_THROW(())
222 castToXInterface(pInterface)->acquire();
223 XInterface *
const pOld = _pInterface;
224 _pInterface = castToXInterface(pInterface);
227 return (0 != pInterface);
230 template<
class interface_type >
234 XInterface *
const pOld = _pInterface;
235 _pInterface = castToXInterface(pInterface);
238 return (0 != pInterface);
241 template<
class interface_type >
249 template<
class interface_type >
253 return set( castFromXInterface( rRef._pInterface ) );
256 template<
class interface_type >
260 return set( castFromXInterface(iquery( pInterface )),
SAL_NO_ACQUIRE );
263 template<
class interface_type >
271 template<
class interface_type >
279 ? static_cast< XInterface * >( rAny.
pReserved ) : 0 )),
284 template<
class interface_type >
288 set( castFromXInterface(iquery_throw( pInterface )),
SAL_NO_ACQUIRE );
291 template<
class interface_type >
299 template<
class interface_type >
303 set( castFromXInterface(
306 ? static_cast< XInterface * >( rAny.
pReserved ) : 0 )),
310 template<
class interface_type >
317 template<
class interface_type >
325 template<
class interface_type >
327 interface_type * pInterface )
SAL_THROW(())
333 template<
class interface_type >
337 set( castFromXInterface( rRef._pInterface ) );
342 template<
class interface_type >
350 template<
class interface_type >
352 XInterface * pInterface )
SAL_THROW( (RuntimeException) )
363 if (_pInterface == pInterface)
372 catch (RuntimeException &)
382 if (_pInterface == rRef._pInterface)
391 catch (RuntimeException &)
400 return (!
operator == ( pInterface ));
410 return (!
operator == ( rRef._pInterface ));
Reference()
Default Constructor: Sets null reference.
Definition: Reference.hxx:110
Holds a weak reference to a type description.
Definition: typedescription.h:40
This String class provides base functionality for C++ like Unicode character array handling...
Definition: ustring.hxx:82
interface_type * get() const
Gets interface pointer.
Definition: Reference.h:411
C++ class representing an IDL meta type.
Definition: Type.h:55
#define sal_True
Definition: types.h:48
#define SAL_THROW_EXTERN_C()
Definition: types.h:360
rtl_uString * cppu_unsatisfied_iquery_msg(typelib_TypeDescriptionReference *pType) SAL_THROW_EXTERN_C()
type class of interface
Definition: typeclass.h:73
XInterface * get() const
Gets interface pointer.
Definition: Reference.h:84
static Reference< interface_type > query(const BaseReference &rRef)
Queries given interface reference for type interface_type.
Definition: Reference.hxx:343
sal_Bool operator!=(XInterface *pInterface) const
Unequality operator: compares two interfaces Checks if both references are null or refer to the same ...
Definition: Reference.hxx:398
This base class serves as a base class for all template reference classes and has been introduced due...
Definition: Reference.h:54
UnoReference_Query
Enum defining UNO_QUERY for implicit interface query.
Definition: Reference.h:134
sal_Bool operator==(XInterface *pInterface) const
Equality operator: compares two interfaces Checks if both references are null or refer to the same ob...
Definition: Reference.hxx:361
~Reference()
Destructor: Releases interface if set.
Definition: Reference.hxx:103
sal_Bool set(const Reference< interface_type > &rRef)
Sets the given interface.
Definition: Reference.hxx:250
struct _typelib_TypeDescriptionReference * pType
type of value
Definition: any2.h:44
sal_Bool operator<(const BaseReference &rRef) const
Needed by some STL containers.
Definition: Reference.hxx:379
Definition: Reference.h:156
Template reference class for interface type derived from BaseReference.
Definition: unotype.hxx:32
UnoReference_NoAcquire
Enum defining UNO_REF_NO_ACQUIRE for setting reference without acquiring a given interface.
Definition: Reference.h:43
C++ class representing an IDL any.
Definition: Any.h:46
rtl_uString * cppu_unsatisfied_iset_msg(typelib_TypeDescriptionReference *pType) SAL_THROW_EXTERN_C()
definition of a no acquire enum for ctors
Definition: types.h:376
typelib_TypeClass eTypeClass
type class of type
Definition: typedescription.h:52
This enum value can be used for implicit interface query.
Definition: Reference.h:138
UnoReference_QueryThrow
Enum defining UNO_QUERY_THROW for implicit interface query.
Definition: Reference.h:143
void clear()
Clears reference, i.e.
Definition: Reference.hxx:207
unsigned char sal_Bool
Definition: types.h:46
__sal_NoAcquire
Definition: types.h:372
static XInterface * iquery(XInterface *pInterface, const Type &rType)
Queries given interface for type rType.
Definition: Reference.hxx:37
UnoReference_SetThrow
Enum defining UNO_SET_THROW for throwing if attempts are made to assign a null interface.
Definition: Reference.h:154
void * pReserved
reserved space for storing value
Definition: any2.h:52
static XInterface * iquery_throw(XInterface *pInterface, const Type &rType)
Queries given interface for type rType.
Definition: Reference.hxx:67
sal_Bool operator==(const Any &rAny, const C &value)
Template equality operator: compares set value of left side any to right side value.
Definition: Any.hxx:554
XInterface * _pInterface
the interface pointer
Definition: Reference.h:59
#define sal_False
Definition: types.h:47
Reference< interface_type > & operator=(interface_type *pInterface)
Assignment operator: Acquires given interface pointer and sets reference.
Definition: Reference.hxx:326
#define SAL_THROW(exc)
Definition of function throw clause macros.
Definition: types.h:358