nss: upgrade to release 3.73
[LibreOffice.git] / include / cppuhelper / propshlp.hxx
blob5a9295a974c6a6846f67335278f978bd22c5c80b
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
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"
35 namespace cppu
39 /*************************************************************************
40 *************************************************************************/
43 /**
44 This interface is used by the OPropertyHelper, to access the property description.
46 class SAL_WARN_UNUSED CPPUHELPER_DLLPUBLIC IPropertyArrayHelper
48 public:
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 )
55 { return pMem; }
56 static void SAL_CALL operator delete( void *, void * )
59 /**
60 Following the rule, the first virtual method implies a virtual destructor.
62 virtual ~IPropertyArrayHelper();
64 /**
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;
77 /**
78 Return the sequence of properties. The sequence is sorted by name.
80 virtual css::uno::Sequence< css::beans::Property > SAL_CALL getProperties() = 0;
81 /**
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;
88 /**
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;
93 /**
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;
99 /**
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
114 public:
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.
122 *********/
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;
186 protected:
187 /** reserved for future use. do not use.
189 void * m_pReserved;
191 private:
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
210 { return i1 == i2; }
213 struct hashInt32_Impl
215 size_t operator()(const sal_Int32 & i) const
216 { return i; }
219 /** Specialized class for key type sal_Int32,
220 without explicit usage of STL symbols.
222 class SAL_WARN_UNUSED CPPUHELPER_DLLPUBLIC OMultiTypeInterfaceContainerHelperInt32
224 public:
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 )
231 { return 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
240 of this object.
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;
293 private:
294 void * m_pMap;
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
306 public:
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())
318 to listeners.
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,
328 sal_Int32 nCount,
329 sal_Bool bVetoable,
330 bool bIgnoreRuntimeExceptionsWhileFiring) = 0;
332 #if !defined _MSC_VER // public -> protected changes mangled names there
333 protected:
334 #elif defined __clang__
335 #pragma clang diagnostic push
336 #pragma clang diagnostic ignored "-Wnon-virtual-dtor"
337 #endif
338 ~IEventNotificationHook() {}
339 // avoid warnings about virtual members and non-virtual dtor
340 #if defined _MSC_VER && defined __clang__
341 #pragma clang diagnostic pop
342 #endif
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
363 public:
365 @param rBHelper this structure contains the basic members of
366 a broadcaster.
367 The lifetime must be longer than the lifetime
368 of this object. Stored in the variable rBHelper.
370 OPropertySetHelper( OBroadcastHelper & rBHelper );
372 /** Constructor.
374 @param rBHelper
375 this structure contains the basic members of
376 a broadcaster.
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())
384 to listeners.
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).
390 OPropertySetHelper(
391 OBroadcastHelper & rBHelper, bool bIgnoreRuntimeExceptionsWhileFiring );
393 /** Constructor.
395 @param rBHelper
396 this structure contains the basic members of
397 a broadcaster.
398 The lifetime must be longer than the lifetime
399 of this object. Stored in the variable rBHelper.
401 @param i_pFireEvents
402 additional event notifier
404 @param bIgnoreRuntimeExceptionsWhileFiring
405 indicates whether occurring RuntimeExceptions will be
406 ignored when firing notifications
407 (vetoableChange(), propertyChange())
408 to listeners.
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).
414 OPropertySetHelper(
415 OBroadcastHelper & rBHelper,
416 IEventNotificationHook *i_pFireEvents,
417 bool bIgnoreRuntimeExceptionsWhileFiring = false);
420 Only returns a reference to XMultiPropertySet, XFastPropertySet, XPropertySet and
421 XEventListener.
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
433 and aVetoableLC.
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
475 notified.
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;
485 // XMultiPropertySet
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 );
509 protected:
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.
519 void SAL_CALL fire(
520 sal_Int32 * pnHandles,
521 const css::uno::Any * pNewValues,
522 const css::uno::Any * pOldValues,
523 sal_Int32 nCount,
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(
536 sal_Int32 nSeqLen,
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,
565 sal_Int32 nHandle,
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.
572 @attention
573 Although you are permitted to throw any UNO exception, only the following
574 are valid for usage:
575 -- css::beans::UnknownPropertyException
576 -- css::beans::PropertyVetoException
577 -- css::lang::IllegalArgumentException
578 -- css::lang::WrappedTargetException
579 -- css::uno::RuntimeException
581 @param nHandle
582 handle
583 @param rValue
584 value
585 @throws css::uno::Exception
587 virtual void SAL_CALL setFastPropertyValue_NoBroadcast(
588 sal_Int32 nHandle,
589 const css::uno::Any& rValue ) = 0;
591 The same as getFastPropertyValue, but return the value through rValue and nHandle
592 is always valid.
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(
618 sal_Int32 i_handle,
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;
633 class Impl;
635 /** reserved for future use. finally, the future has arrived...
637 Impl * const m_pReserved;
639 private:
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.
647 void impl_fireAll(
648 sal_Int32* i_handles,
649 const css::uno::Any * i_newValues,
650 const css::uno::Any * i_oldValues,
651 sal_Int32 i_count
654 #if defined _MSC_VER // public -> protected changes mangled names there
655 public:
656 #else
657 protected:
658 #endif
659 // Suppress warning about virtual functions but non-virtual destructor:
660 #if defined _MSC_VER
661 #if defined __clang__
662 #pragma clang diagnostic push
663 #pragma clang diagnostic ignored "-Wnon-virtual-dtor"
664 #endif
665 #endif
667 You must call disposing before destruction.
669 ~OPropertySetHelper();
671 #if defined _MSC_VER
672 #if defined __clang__
673 #pragma clang diagnostic pop
674 #endif
675 #endif
678 OPropertySetHelper plus XPropertySetOption
680 @attention
681 The getTypes() inherited from OPropertysetHelper does not cover
682 XPropertySetOption.
684 class CPPUHELPER_DLLPUBLIC OPropertySetHelper2 : public OPropertySetHelper,
685 public css::beans::XPropertySetOption
687 public:
688 /** Constructor.
690 See OPropertySetHelper constructors documentation
692 explicit OPropertySetHelper2(
693 OBroadcastHelper & rBHelper,
694 IEventNotificationHook *i_pFireEvents = NULL,
695 bool bIgnoreRuntimeExceptionsWhileFiring = false);
697 // XInterface
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;
704 private:
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
710 public:
711 #else
712 protected:
713 #endif
714 // Suppress warning about virtual functions but non-virtual destructor:
716 You must call disposing before destruction.
718 virtual ~OPropertySetHelper2();
721 } // end namespace cppuhelper
722 #endif
725 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */