xref: /AOO41X/main/cppuhelper/inc/cppuhelper/component.hxx (revision 6da5f31158a7dd09f46f041b4f15bb7ae3eb92a4)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 #ifndef _CPPUHELPER_COMPONENT_HXX_
24 #define _CPPUHELPER_COMPONENT_HXX_
25 
26 #include <osl/mutex.hxx>
27 #include <cppuhelper/weakagg.hxx>
28 #include <cppuhelper/interfacecontainer.hxx>
29 
30 #ifndef _CPPUHELPER_IMPLBASE1_HXX
31 #include <cppuhelper/implbase1.hxx>
32 #endif
33 
34 #include <com/sun/star/lang/XComponent.hpp>
35 #include <com/sun/star/lang/XEventListener.hpp>
36 
37 
38 namespace cppu
39 {
40 
41 /** Deprecated.  Helper for implementing ::com::sun::star::lang::XComponent.
42     Upon disposing objects of this class, sub-classes receive a disposing() call.  Objects of
43     this class can be held weakly, i.e. by a ::com::sun::star::uno::WeakReference.  Object of
44     this class can be aggregated, i.e. incoming queryInterface() calls are delegated.
45 
46     @attention
47     The life-cycle of the passed mutex reference has to be longer than objects of this class.
48     @deprecated
49 */
50 class OComponentHelper
51     : public ::cppu::OWeakAggObject
52     , public ::com::sun::star::lang::XTypeProvider
53     , public ::com::sun::star::lang::XComponent
54 {
55 public:
56     /** Constructor.
57 
58         @param rMutex
59         the mutex used to protect multi-threaded access;
60         lifetime must be longer than the lifetime of this object.
61     */
62     OComponentHelper( ::osl::Mutex & rMutex ) SAL_THROW( () );
63     /** Dewstructor. If this object was not disposed previously, object will be disposed manually.
64     */
65     virtual ~OComponentHelper() SAL_THROW( (::com::sun::star::uno::RuntimeException) );
66 
67     // XAggregation
68     virtual ::com::sun::star::uno::Any SAL_CALL queryInterface(
69         ::com::sun::star::uno::Type const & rType )
70         throw (::com::sun::star::uno::RuntimeException);
71     virtual ::com::sun::star::uno::Any SAL_CALL queryAggregation(
72         ::com::sun::star::uno::Type const & rType )
73         throw (::com::sun::star::uno::RuntimeException);
74     virtual void SAL_CALL acquire()
75         throw ();
76     virtual void SAL_CALL release()
77         throw ();
78 
79     /** @attention
80         XTypeProvider::getImplementationId() has to be implemented separately!
81     */
82     virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId()
83         throw(::com::sun::star::uno::RuntimeException) = 0;
84     /** @attention
85         XTypeProvider::getTypes() has to be re-implemented!
86     */
87     virtual ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Type > SAL_CALL getTypes()
88         throw (::com::sun::star::uno::RuntimeException);
89 
90     // XComponent
91     virtual void SAL_CALL dispose()
92         throw(::com::sun::star::uno::RuntimeException);
93     virtual void SAL_CALL addEventListener(
94         const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener )
95         throw(::com::sun::star::uno::RuntimeException);
96     virtual void SAL_CALL removeEventListener(
97         const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XEventListener >& aListener )
98         throw(::com::sun::star::uno::RuntimeException);
99 
100 protected:
101     /** Called in dispose method after the listeners were notified.
102     */
103     virtual void SAL_CALL disposing();
104 
105     /** @internal */
106     OBroadcastHelper    rBHelper;
107 private:
108     /** @internal */
109     inline OComponentHelper( const OComponentHelper & ) SAL_THROW( () );
110     /** @internal */
111     inline OComponentHelper & operator = ( const OComponentHelper & ) SAL_THROW( () );
112 };
113 
114 }
115 
116 #endif
117