1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_CPPUHELPER_PROPSHLP_HXX
21 #define INCLUDED_CPPUHELPER_PROPSHLP_HXX
23 #include "rtl/alloc.h"
25 #include "cppuhelper/interfacecontainer.h"
27 #include "com/sun/star/beans/XPropertySet.hpp"
28 #include "com/sun/star/beans/XPropertySetOption.hpp"
29 #include "com/sun/star/beans/XMultiPropertySet.hpp"
30 #include "com/sun/star/beans/XFastPropertySet.hpp"
32 #include "cppuhelper/cppuhelperdllapi.h"
39 /*************************************************************************
40 *************************************************************************/
44 This interface is used by the OPropertyHelper, to access the property description.
46 class SAL_WARN_UNUSED CPPUHELPER_DLLPUBLIC IPropertyArrayHelper
49 // these are here to force memory de/allocation to sal lib.
50 static void * SAL_CALL
operator new( size_t nSize
)
51 { return ::rtl_allocateMemory( nSize
); }
52 static void SAL_CALL
operator delete( void * pMem
)
53 { ::rtl_freeMemory( pMem
); }
54 static void * SAL_CALL
operator new( size_t, void * pMem
)
56 static void SAL_CALL
operator delete( void *, void * )
60 Following the rule, the first virtual method implies a virtual destructor.
62 virtual ~IPropertyArrayHelper();
65 Return the property members Name and Attribute from the handle nHandle.
66 @param nHandle the handle of a property. If the values of the handles
67 are sorted in the same way as the names and the highest handle value
68 is getCount() -1, then it must be an indexed access to the property array.
69 @param pPropName is an out parameter filled with property name of the property with the
70 handle nHandle. May be NULL.
71 @param pAttributes is an out parameter filled with attributes of the property with the
72 handle nHandle. May be NULL.
73 @return True, if the handle exist, otherwise false.
75 virtual sal_Bool SAL_CALL
fillPropertyMembersByHandle(
76 ::rtl::OUString
* pPropName
, sal_Int16
* pAttributes
, sal_Int32 nHandle
) = 0;
78 Return the sequence of properties. The sequence is sorted by name.
80 virtual css::uno::Sequence
< css::beans::Property
> SAL_CALL
getProperties() = 0;
82 Return the property with the name rPropertyName.
83 @param rPropertyName the name of the property.
84 @exception UnknownPropertyException thrown if the property name is unknown.
86 virtual css::beans::Property SAL_CALL
getPropertyByName(
87 const ::rtl::OUString
& rPropertyName
) = 0;
89 Return true if the property with the name rPropertyName exist, otherwise false.
90 @param rPropertyName the name of the property.
92 virtual sal_Bool SAL_CALL
hasPropertyByName(const ::rtl::OUString
& rPropertyName
) = 0;
94 Return the handle of the property with the name rPropertyName.
95 If the property does not exist -1 is returned.
96 @param rPropertyName the name of the property.
98 virtual sal_Int32 SAL_CALL
getHandleByName( const ::rtl::OUString
& rPropertyName
) = 0;
100 Fill the array with the handles of the properties.
101 @return the handles of the names from the pHandles array. -1
102 indicates an unknown property name.
104 virtual sal_Int32 SAL_CALL
fillHandles(
105 /*out*/ sal_Int32
* pHandles
, const css::uno::Sequence
< ::rtl::OUString
> & rPropNames
) = 0;
109 You can use this helper class to map a XPropertySet-Interface to a XFast-
110 or a XMultiPropertySet interface.
112 class SAL_WARN_UNUSED CPPUHELPER_DLLPUBLIC OPropertyArrayHelper
: public IPropertyArrayHelper
116 Create an object which supports the common property interfaces.
118 @param pProps array of properties
119 The array pProps should be sorted.
120 @param nElements is the number of properties in the pProps structure.
121 @param bSorted indicates that the elements are sorted.
123 OPropertyArrayHelper(
124 css::beans::Property
*pProps
,
125 sal_Int32 nElements
,
126 sal_Bool bSorted
= true );
129 Create an object which supports the common property interfaces.
130 @param aProps sequence of properties which are supported by this helper.
131 The sequence aProps should be sorted.
132 @param bSorted indicates that the elements are sorted.
134 OPropertyArrayHelper(
135 const css::uno::Sequence
< css::beans::Property
> & aProps
,
136 sal_Bool bSorted
= true );
139 Return the number of properties.
141 sal_Int32 SAL_CALL
getCount() const;
143 Return the property members Name and Attribute from the handle nHandle.
144 @param nHandle the handle of a property. If the values of the handles
145 are sorted in the same way as the names and the highest handle value
146 is getCount() -1, then it is only an indexed access to the property array.
147 Otherwise it is a linear search through the array.
148 @param pPropName is an out parameter filled with property name of the property with the
149 handle nHandle. May be NULL.
150 @param pAttributes is an out parameter filled with attributes of the property with the
151 handle nHandle. May be NULL.
152 @return True, if the handle exist, otherwise false.
154 virtual sal_Bool SAL_CALL
fillPropertyMembersByHandle(
155 ::rtl::OUString
* pPropName
, sal_Int16
* pAttributes
, sal_Int32 nHandle
) SAL_OVERRIDE
;
157 Return the sequence of properties. The sequence is sorted by name.
159 virtual css::uno::Sequence
< css::beans::Property
> SAL_CALL
getProperties() SAL_OVERRIDE
;
161 Return the property with the name rPropertyName.
162 @param rPropertyName the name of the property.
163 @exception UnknownPropertyException thrown if the property name is unknown.
165 virtual css::beans::Property SAL_CALL
getPropertyByName(
166 const ::rtl::OUString
& rPropertyName
) SAL_OVERRIDE
;
168 Return true if the property with the name rPropertyName exist, otherwise false.
169 @param rPropertyName the name of the property.
171 virtual sal_Bool SAL_CALL
hasPropertyByName(const ::rtl::OUString
& rPropertyName
) SAL_OVERRIDE
;
173 Return the handle of the property with the name rPropertyName.
174 If the property does not exist -1 is returned.
175 @param rPropertyName the name of the property.
177 virtual sal_Int32 SAL_CALL
getHandleByName( const ::rtl::OUString
& rPropertyName
) SAL_OVERRIDE
;
179 Fill the array with the handles of the properties.
180 @return the handles of the names from the pHandles array. -1
181 indicates an unknown property name.
183 virtual sal_Int32 SAL_CALL
fillHandles(
184 /*out*/sal_Int32
* pHandles
, const css::uno::Sequence
< ::rtl::OUString
> & rPropNames
) SAL_OVERRIDE
;
187 /** reserved for future use. do not use.
192 void init( sal_Bool bSorted
);
194 /** The sequence generated from the pProperties array. */
195 css::uno::Sequence
< css::beans::Property
> aInfos
;
198 True, If the values of the handles are sorted in the same way as the names
199 and the highest handle value is getCount() -1, otherwise false.
201 sal_Bool bRightOrdered
;
205 // helper defines needed for an interface container with a 32 bit key values
207 struct equalInt32_Impl
209 bool operator()(const sal_Int32
& i1
, const sal_Int32
& i2
) const
213 struct hashInt32_Impl
215 size_t operator()(const sal_Int32
& i
) const
219 /** Specialized class for key type sal_Int32,
220 without explicit usage of STL symbols.
222 class SAL_WARN_UNUSED CPPUHELPER_DLLPUBLIC OMultiTypeInterfaceContainerHelperInt32
225 // these are here to force memory de/allocation to sal lib.
226 static void * SAL_CALL
operator new( size_t nSize
)
227 { return ::rtl_allocateMemory( nSize
); }
228 static void SAL_CALL
operator delete( void * pMem
)
229 { ::rtl_freeMemory( pMem
); }
230 static void * SAL_CALL
operator new( size_t, void * pMem
)
232 static void SAL_CALL
operator delete( void *, void * )
236 Create a container of interface containers.
238 @param rMutex the mutex to protect multi thread access.
239 The lifetime must be longer than the lifetime
242 OMultiTypeInterfaceContainerHelperInt32( ::osl::Mutex
& rMutex
);
244 Delete all containers.
246 ~OMultiTypeInterfaceContainerHelperInt32();
249 Return all id's under which at least one interface is added.
251 css::uno::Sequence
< sal_Int32
> SAL_CALL
getContainedTypes() const;
254 Return the container created under this key.
255 @return the container created under this key. If the container
256 was not created, null was returned.
258 OInterfaceContainerHelper
* SAL_CALL
getContainer( const sal_Int32
& rKey
) const;
261 Insert an element in the container specified with the key. The position is not specified.
262 @param rKey the id of the container.
263 @param r the added interface. It is allowed to insert null or
264 the same pointer more than once.
265 @return the new count of elements in the container.
267 sal_Int32 SAL_CALL
addInterface(
268 const sal_Int32
& rKey
,
269 const css::uno::Reference
< css::uno::XInterface
> & r
);
272 Remove an element from the container specified with the key.
273 It uses the equal definition of uno objects to remove the interfaces.
274 @param rKey the id of the container.
275 @param rxIFace the removed interface.
276 @return the new count of elements in the container.
278 sal_Int32 SAL_CALL
removeInterface(
279 const sal_Int32
& rKey
,
280 const css::uno::Reference
< css::uno::XInterface
> & rxIFace
);
283 Call disposing on all objects in the container that
284 support XEventListener. Then clear the container.
286 void SAL_CALL
disposeAndClear( const css::lang::EventObject
& rEvt
);
288 Remove all elements of all containers. Does not delete the container.
290 void SAL_CALL
clear();
292 typedef sal_Int32 keyType
;
295 ::osl::Mutex
& rMutex
;
297 OMultiTypeInterfaceContainerHelperInt32( const OMultiTypeInterfaceContainerHelperInt32
& ) SAL_DELETED_FUNCTION
;
298 OMultiTypeInterfaceContainerHelperInt32
& operator = ( const OMultiTypeInterfaceContainerHelperInt32
& )SAL_DELETED_FUNCTION
;
302 /** An interface to extend event notification actions.
304 class IEventNotificationHook
308 Method to be called by OPropertySetHelper::fire.
310 @param pnHandles the id's of the properties that changed.
311 @param nCount the number of elements in the arrays pnHandles, pNewValues and pOldValues.
312 @param bVetoable true means fire to VetoableChangeListener, false means fire to
313 XPropertyChangedListener and XMultiPropertyChangedListener.
314 @param bIgnoreRuntimeExceptionsWhileFiring
315 indicates whether occurring RuntimeExceptions will be
316 ignored when firing notifications
317 (vetoableChange(), propertyChange())
319 PropertyVetoExceptions may still be thrown.
320 This flag is useful in an inter-process scenario when
321 remote bridges may break down
322 (firing DisposedExceptions).
324 @see OPropertySetHelper::fire
326 virtual void fireEvents(
327 sal_Int32
* pnHandles
,
330 bool bIgnoreRuntimeExceptionsWhileFiring
) = 0;
332 #if !defined _MSC_VER // public -> protected changes mangled names there
334 #elif defined __clang__
335 #pragma clang diagnostic push
336 #pragma clang diagnostic ignored "-Wnon-virtual-dtor"
338 ~IEventNotificationHook() {}
339 // avoid warnings about virtual members and non-virtual dtor
340 #if defined _MSC_VER && defined __clang__
341 #pragma clang diagnostic pop
347 This abstract class maps the methods of the interfaces XMultiPropertySet, XFastPropertySet
348 and XPropertySet to the methods getInfoHelper, convertFastPropertyValue,
349 setFastPropertyValue_NoBroadcast and getFastPropertyValue. You must derive from
350 this class and override the methods.
351 It provides a standard implementation of the XPropertySetInfo.
352 The XPropertiesChangeListener are inserted in the rBHelper.aLC structure.
353 The XPropertyChangeListener and XVetoableChangeListener with no names are inserted
354 in the rBHelper.aLC structure. So it is possible to advise property listeners with
355 the connection point interfaces. But only listeners that listen to all property changes.
358 class CPPUHELPER_DLLPUBLIC OPropertySetHelper
:
359 public css::beans::XMultiPropertySet
,
360 public css::beans::XFastPropertySet
,
361 public css::beans::XPropertySet
365 @param rBHelper this structure contains the basic members of
367 The lifetime must be longer than the lifetime
368 of this object. Stored in the variable rBHelper.
370 OPropertySetHelper( OBroadcastHelper
& rBHelper
);
375 this structure contains the basic members of
377 The lifetime must be longer than the lifetime
378 of this object. Stored in the variable rBHelper.
380 @param bIgnoreRuntimeExceptionsWhileFiring
381 indicates whether occurring RuntimeExceptions will be
382 ignored when firing notifications
383 (vetoableChange(), propertyChange())
385 PropertyVetoExceptions may still be thrown.
386 This flag is useful in an inter-process scenario when
387 remote bridges may break down
388 (firing DisposedExceptions).
391 OBroadcastHelper
& rBHelper
, bool bIgnoreRuntimeExceptionsWhileFiring
);
396 this structure contains the basic members of
398 The lifetime must be longer than the lifetime
399 of this object. Stored in the variable rBHelper.
402 additional event notifier
404 @param bIgnoreRuntimeExceptionsWhileFiring
405 indicates whether occurring RuntimeExceptions will be
406 ignored when firing notifications
407 (vetoableChange(), propertyChange())
409 PropertyVetoExceptions may still be thrown.
410 This flag is useful in an inter-process scenario when
411 remote bridges may break down
412 (firing DisposedExceptions).
415 OBroadcastHelper
& rBHelper
,
416 IEventNotificationHook
*i_pFireEvents
,
417 bool bIgnoreRuntimeExceptionsWhileFiring
= false);
420 Only returns a reference to XMultiPropertySet, XFastPropertySet, XPropertySet and
423 virtual css::uno::Any SAL_CALL
queryInterface( const css::uno::Type
& rType
) SAL_OVERRIDE
;
425 /** eases implementing XTypeProvider::getTypes, returns the types of XMultiPropertySet, XFastPropertySet, XPropertySet
427 @throws css::uno::RuntimeException
429 css::uno::Sequence
< css::uno::Type
> getTypes();
432 Send a disposing notification to the listeners in the containers aBoundLC
435 @see OComponentHelper
437 void SAL_CALL
disposing();
440 Throw UnknownPropertyException or PropertyVetoException if the property with the name
441 rPropertyName does not exist or is readonly. Otherwise rPropertyName is changed to its handle
442 value and setFastPropertyValue is called.
444 virtual void SAL_CALL
setPropertyValue( const ::rtl::OUString
& rPropertyName
, const css::uno::Any
& aValue
) SAL_OVERRIDE
;
446 Throw UnknownPropertyException if the property with the name
447 rPropertyName does not exist.
449 virtual css::uno::Any SAL_CALL
getPropertyValue(const ::rtl::OUString
& aPropertyName
) SAL_OVERRIDE
;
450 /** Ignored if the property is not bound. */
451 virtual void SAL_CALL
addPropertyChangeListener(
452 const ::rtl::OUString
& aPropertyName
,
453 const css::uno::Reference
< css::beans::XPropertyChangeListener
>& aListener
) SAL_OVERRIDE
;
455 /** Ignored if the property is not bound. */
456 virtual void SAL_CALL
removePropertyChangeListener(
457 const ::rtl::OUString
& aPropertyName
,
458 const css::uno::Reference
< css::beans::XPropertyChangeListener
>& aListener
) SAL_OVERRIDE
;
460 /** Ignored if the property is not constrained. */
461 virtual void SAL_CALL
addVetoableChangeListener(
462 const ::rtl::OUString
& aPropertyName
,
463 const css::uno::Reference
< css::beans::XVetoableChangeListener
>& aListener
) SAL_OVERRIDE
;
465 /** Ignored if the property is not constrained. */
466 virtual void SAL_CALL
removeVetoableChangeListener(
467 const ::rtl::OUString
& aPropertyName
,
468 const css::uno::Reference
< css::beans::XVetoableChangeListener
> & aListener
) SAL_OVERRIDE
;
471 Throw UnknownPropertyException or PropertyVetoException if the property with the name
472 rPropertyName does not exist or is readonly. Otherwise the method convertFastPropertyValue
473 is called, then the vetoable listeners are notified. After this the value of the property
474 is changed with the setFastPropertyValue_NoBroadcast method and the bound listeners are
477 virtual void SAL_CALL
setFastPropertyValue( sal_Int32 nHandle
, const css::uno::Any
& rValue
) SAL_OVERRIDE
;
480 @exception css::beans::UnknownPropertyException
481 if the property with the handle nHandle does not exist.
483 virtual css::uno::Any SAL_CALL
getFastPropertyValue( sal_Int32 nHandle
) SAL_OVERRIDE
;
486 virtual void SAL_CALL
setPropertyValues(
487 const css::uno::Sequence
< ::rtl::OUString
>& PropertyNames
,
488 const css::uno::Sequence
< css::uno::Any
>& Values
) SAL_OVERRIDE
;
490 virtual css::uno::Sequence
< css::uno::Any
> SAL_CALL
getPropertyValues(
491 const css::uno::Sequence
< ::rtl::OUString
>& PropertyNames
) SAL_OVERRIDE
;
493 virtual void SAL_CALL
addPropertiesChangeListener(
494 const css::uno::Sequence
< ::rtl::OUString
>& PropertyNames
,
495 const css::uno::Reference
< css::beans::XPropertiesChangeListener
>& Listener
) SAL_OVERRIDE
;
497 virtual void SAL_CALL
removePropertiesChangeListener(
498 const css::uno::Reference
< css::beans::XPropertiesChangeListener
>& Listener
) SAL_OVERRIDE
;
500 virtual void SAL_CALL
firePropertiesChangeEvent(
501 const css::uno::Sequence
< ::rtl::OUString
>& PropertyNames
,
502 const css::uno::Reference
< css::beans::XPropertiesChangeListener
> & Listener
) SAL_OVERRIDE
;
505 The property sequence is created in the call. The interface isn't used after the call.
507 static css::uno::Reference
< css::beans::XPropertySetInfo
> SAL_CALL
508 createPropertySetInfo( IPropertyArrayHelper
& rProperties
);
511 This method fire events to all registered property listeners.
512 @param pnHandles the id's of the properties that changed.
513 @param pNewValues the new values of the properties.
514 @param pOldValues the old values of the properties.
515 @param nCount the number of elements in the arrays pnHandles, pNewValues and pOldValues.
516 @param bVetoable true means fire to VetoableChangeListener, false means fire to
517 XPropertyChangedListener and XMultiPropertyChangedListener.
520 sal_Int32
* pnHandles
,
521 const css::uno::Any
* pNewValues
,
522 const css::uno::Any
* pOldValues
,
524 sal_Bool bVetoable
);
527 Set multiple properties with the handles.
528 @param nSeqLen the length of the arrays pHandles and Values.
529 @param pHandles the handles of the properties. The number of elements
530 in the Values sequence is the length of the handle array. A value of -1
531 of a handle means invalid property. These are ignored.
532 @param pValues the values of the properties.
533 @param nHitCount the number of valid entries in the handle array.
535 void SAL_CALL
setFastPropertyValues(
537 sal_Int32
* pHandles
,
538 const css::uno::Any
* pValues
,
539 sal_Int32 nHitCount
);
542 This abstract method must return the name to index table. This table contains all property
543 names and types of this object. The method is not implemented in this class.
545 virtual IPropertyArrayHelper
& SAL_CALL
getInfoHelper() = 0;
548 Converted the value rValue and return the result in rConvertedValue and the
549 old value in rOldValue. An IllegalArgumentException is thrown.
550 The method is not implemented in this class. After this call the vetoable
551 listeners are notified.
553 @param rConvertedValue the converted value. Only set if return is true.
554 @param rOldValue the old value. Only set if return is true.
555 @param nHandle the handle of the property.
556 @param rValue the value to be converted
557 @return true if the value converted.
558 @throws css::lang::IllegalArgumentException
559 @throws css::beans::UnknownPropertyException
560 @throws css::uno::RuntimeException
562 virtual sal_Bool SAL_CALL
convertFastPropertyValue(
563 css::uno::Any
& rConvertedValue
,
564 css::uno::Any
& rOldValue
,
566 const css::uno::Any
& rValue
) = 0;
568 /** The same as setFastPropertyValue; nHandle is always valid.
569 The changes must not be broadcasted in this method.
570 The method is implemented in a derived class.
573 Although you are permitted to throw any UNO exception, only the following
575 -- css::beans::UnknownPropertyException
576 -- css::beans::PropertyVetoException
577 -- css::lang::IllegalArgumentException
578 -- css::lang::WrappedTargetException
579 -- css::uno::RuntimeException
585 @throws css::uno::Exception
587 virtual void SAL_CALL
setFastPropertyValue_NoBroadcast(
589 const css::uno::Any
& rValue
) = 0;
591 The same as getFastPropertyValue, but return the value through rValue and nHandle
593 The method is not implemented in this class.
595 virtual void SAL_CALL
getFastPropertyValue(
596 css::uno::Any
& rValue
,
597 sal_Int32 nHandle
) const = 0;
599 /** sets an dependent property's value
601 <p>Sometimes setting a given property needs to implicitly modify another property's value. Calling |setPropertyValue|
602 from within |setFastPropertyValue_NoBroadcast| is not an option here, as it would notify the property listeners
603 while our mutex is still locked. Setting the dependent property's value directly (e.g. by calling |setFastPropertyValue_NoBroadcast|
604 recursively) is not an option, too, since it would miss firing the property change event.</p>
606 <p>So, in such cases, you use |setDependentFastPropertyValue| from within |setFastPropertyValue_NoBroadcast|.
607 It will convert and actually set the property value (invoking |convertFastPropertyValue| and |setFastPropertyValue_NoBroadcast|
608 for the given handle and value), and add the property change event to the list of events to be notified
609 when the bottom-most |setFastPropertyValue_NoBroadcast| on the stack returns.</p>
611 <p><strong>Note</strong>: The method will <em>not</em> invoke veto listeners for the property.</p>
613 <p><strong>Note</strong>: It's the caller's responsibility to ensure that our mutex is locked. This is
614 canonically given when the method is invoked from within |setFastPropertyValue_NoBroadcast|, in other
615 contexts, you might need to take own measures.</p>
617 void setDependentFastPropertyValue(
619 const css::uno::Any
& i_value
622 /** The common data of a broadcaster. Use the mutex, disposing state and the listener container. */
623 OBroadcastHelper
&rBHelper
;
625 Container for the XPropertyChangedListener. The listeners are inserted by handle.
627 OMultiTypeInterfaceContainerHelperInt32 aBoundLC
;
629 Container for the XPropertyVetoableListener. The listeners are inserted by handle.
631 OMultiTypeInterfaceContainerHelperInt32 aVetoableLC
;
635 /** reserved for future use. finally, the future has arrived...
637 Impl
* const m_pReserved
;
640 OPropertySetHelper( const OPropertySetHelper
& ) SAL_DELETED_FUNCTION
;
641 OPropertySetHelper
& operator = ( const OPropertySetHelper
& )
642 SAL_DELETED_FUNCTION
;
644 /** notifies the given changes in property's values, <em>plus</em> all property changes collected during recent
645 |setDependentFastPropertyValue| calls.
648 sal_Int32
* i_handles
,
649 const css::uno::Any
* i_newValues
,
650 const css::uno::Any
* i_oldValues
,
654 #if defined _MSC_VER // public -> protected changes mangled names there
659 // Suppress warning about virtual functions but non-virtual destructor:
661 #if defined __clang__
662 #pragma clang diagnostic push
663 #pragma clang diagnostic ignored "-Wnon-virtual-dtor"
667 You must call disposing before destruction.
669 ~OPropertySetHelper();
672 #if defined __clang__
673 #pragma clang diagnostic pop
678 OPropertySetHelper plus XPropertySetOption
681 The getTypes() inherited from OPropertysetHelper does not cover
684 class CPPUHELPER_DLLPUBLIC OPropertySetHelper2
: public OPropertySetHelper
,
685 public css::beans::XPropertySetOption
690 See OPropertySetHelper constructors documentation
692 explicit OPropertySetHelper2(
693 OBroadcastHelper
& rBHelper
,
694 IEventNotificationHook
*i_pFireEvents
= NULL
,
695 bool bIgnoreRuntimeExceptionsWhileFiring
= false);
698 virtual css::uno::Any SAL_CALL
queryInterface( const css::uno::Type
& rType
) SAL_OVERRIDE
;
700 // XPropertySetOption
701 virtual void SAL_CALL
enableChangeListenerNotification( sal_Bool bEnable
) SAL_OVERRIDE
;
705 OPropertySetHelper2( const OPropertySetHelper2
& ) SAL_DELETED_FUNCTION
;
706 OPropertySetHelper2
& operator = ( const OPropertySetHelper2
& )
707 SAL_DELETED_FUNCTION
;
709 #if defined _MSC_VER // public -> protected changes mangled names there
714 // Suppress warning about virtual functions but non-virtual destructor:
716 You must call disposing before destruction.
718 virtual ~OPropertySetHelper2();
721 } // end namespace cppuhelper
725 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */