summaryrefslogtreecommitdiff
path: root/cppu/inc/com/sun/star/uno/Reference.h
diff options
context:
space:
mode:
Diffstat (limited to 'cppu/inc/com/sun/star/uno/Reference.h')
-rw-r--r--cppu/inc/com/sun/star/uno/Reference.h519
1 files changed, 0 insertions, 519 deletions
diff --git a/cppu/inc/com/sun/star/uno/Reference.h b/cppu/inc/com/sun/star/uno/Reference.h
deleted file mode 100644
index 94551a087063..000000000000
--- a/cppu/inc/com/sun/star/uno/Reference.h
+++ /dev/null
@@ -1,519 +0,0 @@
-/* -*- 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 .
- */
-#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
-#define _COM_SUN_STAR_UNO_REFERENCE_H_
-
-#include <rtl/alloc.h>
-
-
-namespace com
-{
-namespace sun
-{
-namespace star
-{
-namespace uno
-{
-
-class RuntimeException;
-class XInterface;
-class Type;
-class Any;
-
-/** Enum defining UNO_REF_NO_ACQUIRE for setting reference without acquiring a given interface.
- Deprecated, please use SAL_NO_ACQUIRE.
- @deprecated
-*/
-enum UnoReference_NoAcquire
-{
- /** This enum value can be used for creating a reference granting a given interface,
- i.e. transferring ownership to it.
- */
- UNO_REF_NO_ACQUIRE
-};
-
-/** This base class serves as a base class for all template reference classes and
- has been introduced due to compiler problems with templated operators ==, =!.
-*/
-class BaseReference
-{
-protected:
- /** the interface pointer
- */
- XInterface * _pInterface;
-
- /** Queries given interface for type rType.
-
- @param pInterface interface pointer
- @param rType interface type
- @return interface of demanded type (may be null)
- */
- inline static XInterface * SAL_CALL iquery( XInterface * pInterface, const Type & rType )
- SAL_THROW( (RuntimeException) );
-#ifndef EXCEPTIONS_OFF
- /** Queries given interface for type rType.
- Throws a RuntimeException if the demanded interface cannot be queried.
-
- @param pInterface interface pointer
- @param rType interface type
- @return interface of demanded type
- */
- inline static XInterface * SAL_CALL iquery_throw( XInterface * pInterface, const Type & rType )
- SAL_THROW( (RuntimeException) );
-#endif
-
-public:
- /** Gets interface pointer. This call does not acquire the interface.
-
- @return UNacquired interface pointer
- */
- inline XInterface * SAL_CALL get() const SAL_THROW(())
- { return _pInterface; }
-
- /** Checks if reference is null.
-
- @return true if reference acquires an interface, i.e. true if it is not null
- */
- inline sal_Bool SAL_CALL is() const SAL_THROW(())
- { return (0 != _pInterface); }
-
- /** Equality operator: compares two interfaces
- Checks if both references are null or refer to the same object.
-
- @param pInterface another interface
- @return true if both references are null or refer to the same object, false otherwise
- */
- inline sal_Bool SAL_CALL operator == ( XInterface * pInterface ) const SAL_THROW(());
- /** Unequality operator: compares two interfaces
- Checks if both references are null or refer to the same object.
-
- @param pInterface another interface
- @return false if both references are null or refer to the same object, true otherwise
- */
- inline sal_Bool SAL_CALL operator != ( XInterface * pInterface ) const SAL_THROW(());
-
- /** Equality operator: compares two interfaces
- Checks if both references are null or refer to the same object.
-
- @param rRef another reference
- @return true if both references are null or refer to the same object, false otherwise
- */
- inline sal_Bool SAL_CALL operator == ( const BaseReference & rRef ) const SAL_THROW(());
- /** Unequality operator: compares two interfaces
- Checks if both references are null or refer to the same object.
-
- @param rRef another reference
- @return false if both references are null or refer to the same object, true otherwise
- */
- inline sal_Bool SAL_CALL operator != ( const BaseReference & rRef ) const SAL_THROW(());
-
- /** Needed by some STL containers.
-
- @param rRef another reference
- @return true, if this reference is less than rRef
- */
- inline sal_Bool SAL_CALL operator < ( const BaseReference & rRef ) const SAL_THROW(());
-};
-
-/** Enum defining UNO_QUERY for implicit interface query.
-*/
-enum UnoReference_Query
-{
- /** This enum value can be used for implicit interface query.
- */
- UNO_QUERY,
-};
-#ifndef EXCEPTIONS_OFF
-/** Enum defining UNO_QUERY_THROW for implicit interface query.
- If the demanded interface is unavailable, then a RuntimeException is thrown.
-*/
-enum UnoReference_QueryThrow
-{
- /** This enum value can be used for implicit interface query.
- */
- UNO_QUERY_THROW,
-};
-/** Enum defining UNO_SET_THROW for throwing if attempts are made to assign a null
- interface
-
- @since UDK 3.2.8
-*/
-enum UnoReference_SetThrow
-{
- UNO_SET_THROW
-};
-#endif
-
-/** Template reference class for interface type derived from BaseReference.
- A special constructor given the UNO_QUERY identifier queries interfaces
- for reference type.
-*/
-template< class interface_type >
-class Reference : public BaseReference
-{
- /** Queries given interface for type interface_type.
-
- @param pInterface interface pointer
- @return interface of demanded type (may be null)
- */
- inline static XInterface * SAL_CALL iquery( XInterface * pInterface )
- SAL_THROW( (RuntimeException) );
-#ifndef EXCEPTIONS_OFF
- /** Queries given interface for type interface_type.
- Throws a RuntimeException if the demanded interface cannot be queried.
-
- @param pInterface interface pointer
- @return interface of demanded type
- */
- inline static XInterface * SAL_CALL iquery_throw( XInterface * pInterface )
- SAL_THROW( (RuntimeException) );
- /** Returns the given interface if it is not <NULL/>, throws a RuntimeException otherwise.
-
- @param pInterface interface pointer
- @return pInterface
- */
- inline static interface_type * SAL_CALL iset_throw( interface_type * pInterface )
- SAL_THROW( (RuntimeException) );
-#endif
-
- /** Cast from an "interface pointer" (e.g., BaseReference::_pInterface) to a
- pointer to this interface_type.
-
- To work around ambiguities in the case of multiple-inheritance interface
- types (which inherit XInterface more than once), use reinterpret_cast
- (resp. a sequence of two static_casts, to avoid warnings about
- reinterpret_cast used between related classes) to switch from a pointer
- to XInterface to a pointer to this derived interface_type. In
- principle, this is not guaranteed to work. In practice, it seems to
- work on all supported platforms.
- */
- static inline interface_type * castFromXInterface(XInterface * p) {
- return static_cast< interface_type * >(static_cast< void * >(p));
- }
-
- /** Cast from a pointer to this interface_type to an "interface pointer"
- (e.g., BaseReference::_pInterface).
-
- To work around ambiguities in the case of multiple-inheritance interface
- types (which inherit XInterface more than once), use reinterpret_cast
- (resp. a sequence of two static_casts, to avoid warnings about
- reinterpret_cast used between related classes) to switch from a pointer
- to this derived interface_type to a pointer to XInterface. In
- principle, this is not guaranteed to work. In practice, it seems to
- work on all supported platforms.
- */
- static inline XInterface * castToXInterface(interface_type * p) {
- return static_cast< XInterface * >(static_cast< void * >(p));
- }
-
-public:
- /// @cond INTERNAL
- // these are here to force memory de/allocation to sal lib.
- inline static void * SAL_CALL operator new ( ::size_t nSize ) SAL_THROW(())
- { return ::rtl_allocateMemory( nSize ); }
- inline static void SAL_CALL operator delete ( void * pMem ) SAL_THROW(())
- { ::rtl_freeMemory( pMem ); }
- inline static void * SAL_CALL operator new ( ::size_t, void * pMem ) SAL_THROW(())
- { return pMem; }
- inline static void SAL_CALL operator delete ( void *, void * ) SAL_THROW(())
- {}
- /// @endcond
-
- /** Destructor: Releases interface if set.
- */
- inline ~Reference() SAL_THROW(());
-
- /** Default Constructor: Sets null reference.
- */
- inline Reference() SAL_THROW(());
-
- /** Copy constructor: Copies interface reference.
-
- @param rRef another reference
- */
- inline Reference( const Reference< interface_type > & rRef ) SAL_THROW(());
- /** Constructor: Sets given interface pointer.
-
- @param pInterface an interface pointer
- */
- inline Reference( interface_type * pInterface ) SAL_THROW(());
-
- /** Constructor: Sets given interface pointer without acquiring it.
-
- @param pInterface another reference
- @param dummy SAL_NO_ACQUIRE to force obvious distinction to other constructors
- */
- inline Reference( interface_type * pInterface, __sal_NoAcquire dummy) SAL_THROW(());
- /** Constructor: Sets given interface pointer without acquiring it.
- Deprecated, please use SAL_NO_ACQUIRE version.
-
- @deprecated
- @param pInterface another reference
- @param dummy UNO_REF_NO_ACQUIRE to force obvious distinction to other constructors
- */
- inline Reference( interface_type * pInterface, UnoReference_NoAcquire dummy ) SAL_THROW(());
-
- /** Constructor: Queries given interface for reference interface type (interface_type).
-
- @param rRef another reference
- @param dummy UNO_QUERY to force obvious distinction to other constructors
- */
- inline Reference( const BaseReference & rRef, UnoReference_Query dummy ) SAL_THROW( (RuntimeException) );
- /** Constructor: Queries given interface for reference interface type (interface_type).
-
- @param pInterface an interface pointer
- @param dummy UNO_QUERY to force obvious distinction to other constructors
- */
- inline Reference( XInterface * pInterface, UnoReference_Query dummy) SAL_THROW( (RuntimeException) );
- /** Constructor: Queries given any for reference interface type (interface_type).
-
- @param rAny an any
- @param dummy UNO_QUERY to force obvious distinction to other constructors
- */
- inline Reference( const Any & rAny, UnoReference_Query dummy) SAL_THROW( (RuntimeException) );
-#ifndef EXCEPTIONS_OFF
- /** Constructor: Queries given interface for reference interface type (interface_type).
- Throws a RuntimeException if the demanded interface cannot be queried.
-
- @param rRef another reference
- @param dummy UNO_QUERY_THROW to force obvious distinction
- to other constructors
- */
- inline Reference( const BaseReference & rRef, UnoReference_QueryThrow dummy ) SAL_THROW( (RuntimeException) );
- /** Constructor: Queries given interface for reference interface type (interface_type).
- Throws a RuntimeException if the demanded interface cannot be queried.
-
- @param pInterface an interface pointer
- @param dummy UNO_QUERY_THROW to force obvious distinction
- to other constructors
- */
- inline Reference( XInterface * pInterface, UnoReference_QueryThrow dummy ) SAL_THROW( (RuntimeException) );
- /** Constructor: Queries given any for reference interface type (interface_type).
- Throws a RuntimeException if the demanded interface cannot be queried.
-
- @param rAny an any
- @param dummy UNO_QUERY_THROW to force obvious distinction
- to other constructors
- */
- inline Reference( const Any & rAny, UnoReference_QueryThrow dummy ) SAL_THROW( (RuntimeException) );
- /** Constructor: assigns from the given interface of the same type. Throws a RuntimeException
- if the source interface is NULL.
-
- @param rRef another interface reference of the same type
- @param dummy UNO_SET_THROW to distinguish from default copy constructor
-
- @since UDK 3.2.8
- */
- inline Reference( const Reference< interface_type > & rRef, UnoReference_SetThrow dummy ) SAL_THROW( (RuntimeException) );
- /** Constructor: assigns from the given interface of the same type. Throws a RuntimeException
- if the source interface is NULL.
-
- @param pInterface an interface pointer
- @param dummy UNO_SET_THROW to distinguish from default assignment constructor
-
- @since UDK 3.2.8
- */
- inline Reference( interface_type * pInterface, UnoReference_SetThrow dummy ) SAL_THROW( (RuntimeException) );
-#endif
-
- /** Cast operator to Reference< XInterface >: Reference objects are binary compatible and
- any interface must be derived from com.sun.star.uno.XInterface.
- This a useful direct cast possibility.
- */
- inline SAL_CALL operator const Reference< XInterface > & () const SAL_THROW(())
- { return * reinterpret_cast< const Reference< XInterface > * >( this ); }
-
- /** Dereference operator: Used to call interface methods.
-
- @return UNacquired interface pointer
- */
- inline interface_type * SAL_CALL operator -> () const SAL_THROW(())
- { return castFromXInterface(_pInterface); }
-
- /** Gets interface pointer. This call does not acquire the interface.
-
- @return UNacquired interface pointer
- */
- inline interface_type * SAL_CALL get() const SAL_THROW(())
- { return castFromXInterface(_pInterface); }
-
- /** Clears reference, i.e. releases interface. Reference is null after clear() call.
- */
- inline void SAL_CALL clear() SAL_THROW(());
-
- /** Sets the given interface. An interface already set will be released.
-
- @param rRef another reference
- @return true, if non-null interface was set
- */
- inline sal_Bool SAL_CALL set( const Reference< interface_type > & rRef ) SAL_THROW(());
- /** Sets the given interface. An interface already set will be released.
-
- @param pInterface another interface
- @return true, if non-null interface was set
- */
- inline sal_Bool SAL_CALL set( interface_type * pInterface ) SAL_THROW(());
-
- /** Sets interface pointer without acquiring it. An interface already set will be released.
-
- @param pInterface an interface pointer
- @param dummy SAL_NO_ACQUIRE to force obvious distinction to set methods
- @return true, if non-null interface was set
- */
- inline sal_Bool SAL_CALL set( interface_type * pInterface, __sal_NoAcquire dummy) SAL_THROW(());
- /** Sets interface pointer without acquiring it. An interface already set will be released.
- Deprecated, please use SAL_NO_ACQUIRE version.
-
- @deprecated
- @param pInterface an interface pointer
- @param dummy UNO_REF_NO_ACQUIRE to force obvious distinction to set methods
- @return true, if non-null interface was set
- */
- inline sal_Bool SAL_CALL set( interface_type * pInterface, UnoReference_NoAcquire dummy) SAL_THROW(());
-
- /** Queries given interface for reference interface type (interface_type) and sets it.
- An interface already set will be released.
-
- @param pInterface an interface pointer
- @param dummy UNO_QUERY to force obvious distinction to set methods
- @return true, if non-null interface was set
- */
- inline sal_Bool SAL_CALL set( XInterface * pInterface, UnoReference_Query dummy ) SAL_THROW( (RuntimeException) );
- /** Queries given interface for reference interface type (interface_type) and sets it.
- An interface already set will be released.
-
- @param rRef another reference
- @param dummy UNO_QUERY to force obvious distinction to set methods
- @return true, if non-null interface was set
- */
- inline sal_Bool SAL_CALL set( const BaseReference & rRef, UnoReference_Query dummy) SAL_THROW( (RuntimeException) );
-
- /** Queries given any for reference interface type (interface_type)
- and sets it. An interface already set will be released.
-
- @param rAny
- an Any containing an interface
- @param dummy
- UNO_QUERY to force obvious distinction
- to set methods
- @return
- true, if non-null interface was set
- */
- inline bool set( Any const & rAny, UnoReference_Query dummy );
-
-#ifndef EXCEPTIONS_OFF
- /** Queries given interface for reference interface type (interface_type) and sets it.
- An interface already set will be released.
- Throws a RuntimeException if the demanded interface cannot be set.
-
- @param pInterface an interface pointer
- @param dummy UNO_QUERY_THROW to force obvious distinction
- to set methods
- */
- inline void SAL_CALL set( XInterface * pInterface, UnoReference_QueryThrow dummy ) SAL_THROW( (RuntimeException) );
- /** Queries given interface for reference interface type (interface_type) and sets it.
- An interface already set will be released.
- Throws a RuntimeException if the demanded interface cannot be set.
-
- @param rRef another reference
- @param dummy UNO_QUERY_THROW to force obvious distinction
- to set methods
- */
- inline void SAL_CALL set( const BaseReference & rRef, UnoReference_QueryThrow dummy ) SAL_THROW( (RuntimeException) );
-
- /** Queries given any for reference interface type (interface_type) and
- sets it. An interface already set will be released.
- Throws a RuntimeException if the demanded interface cannot be set.
-
- @param rAny
- an Any containing an interface
- @param dummy
- UNO_QUERY_THROW to force obvious distinction to set methods
- */
- inline void set( Any const & rAny, UnoReference_QueryThrow dummy);
- /** sets the given interface
- An interface already set will be released.
- Throws a RuntimeException if the source interface is @b NULL.
-
- @param pInterface an interface pointer
- @param dummy UNO_SET_THROW to force obvious distinction to other set methods
-
- @since UDK 3.2.8
- */
- inline void SAL_CALL set( interface_type * pInterface, UnoReference_SetThrow dummy) SAL_THROW( (RuntimeException) );
- /** sets the given interface
- An interface already set will be released.
- Throws a RuntimeException if the source interface is @b NULL.
-
- @param rRef an interface reference
- @param dummy UNO_SET_THROW to force obvious distinction to other set methods
-
- @since UDK 3.2.8
- */
- inline void SAL_CALL set( const Reference< interface_type > & rRef, UnoReference_SetThrow dummy) SAL_THROW( (RuntimeException) );
-
-#endif
-
- /** Assignment operator: Acquires given interface pointer and sets reference.
- An interface already set will be released.
-
- @param pInterface an interface pointer
- @return this reference
- */
- inline Reference< interface_type > & SAL_CALL operator = ( interface_type * pInterface ) SAL_THROW(());
- /** Assignment operator: Acquires given interface reference and sets reference.
- An interface already set will be released.
-
- @param rRef an interface reference
- @return this reference
- */
- inline Reference< interface_type > & SAL_CALL operator = ( const Reference< interface_type > & rRef ) SAL_THROW(());
-
- /** Queries given interface reference for type interface_type.
-
- @param rRef interface reference
- @return interface reference of demanded type (may be null)
- */
- inline static Reference< interface_type > SAL_CALL query( const BaseReference & rRef ) SAL_THROW( (RuntimeException) );
- /** Queries given interface for type interface_type.
-
- @param pInterface interface pointer
- @return interface reference of demanded type (may be null)
- */
- inline static Reference< interface_type > SAL_CALL query( XInterface * pInterface ) SAL_THROW( (RuntimeException) );
-};
-
-/// @cond INTERNAL
-/** Enables boost::mem_fn and boost::bind to recognize Reference.
-*/
-template <typename T>
-inline T * get_pointer( Reference<T> const& r )
-{
- return r.get();
-}
-/// @endcond
-
-}
-}
-}
-}
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */