[PATCH] TMP: in-progress-ABI-breakage-fix
Lionel Elie Mamane
lionel at mamane.lu
Fri Sep 2 05:57:30 PDT 2011
---
comphelper/inc/comphelper/propstate.hxx | 4 +-
comphelper/source/property/propstate.cxx | 4 +-
cppuhelper/inc/cppuhelper/propshlp.hxx | 67 ++++++++++++++++++++++--------
cppuhelper/source/gcc3.map | 22 ++++++++-
cppuhelper/source/msvc_win32_intel.map | 5 +-
cppuhelper/source/propshlp.cxx | 42 +++++++++++++------
6 files changed, 105 insertions(+), 39 deletions(-)
diff --git a/comphelper/inc/comphelper/propstate.hxx b/comphelper/inc/comphelper/propstate.hxx
index 2c8f06f..b99f75f 100644
--- a/comphelper/inc/comphelper/propstate.hxx
+++ b/comphelper/inc/comphelper/propstate.hxx
@@ -54,11 +54,11 @@ namespace comphelper
//= OPropertyStateHelper
//==================================================================
/// helper class for implementing property states
- class COMPHELPER_DLLPUBLIC OPropertyStateHelper :public ::cppu::OPropertySetHelper
+ class COMPHELPER_DLLPUBLIC OPropertyStateHelper :public ::cppu::OPropertySetHelper2
,public ::com::sun::star::beans::XPropertyState
{
public:
- OPropertyStateHelper(::cppu::OBroadcastHelper& rBHlp):OPropertySetHelper(rBHlp) { }
+ OPropertyStateHelper(::cppu::OBroadcastHelper& rBHlp):OPropertySetHelper2(rBHlp) { }
OPropertyStateHelper(::cppu::OBroadcastHelper& rBHlp,
::cppu::IEventNotificationHook *i_pFireEvents);
diff --git a/comphelper/source/property/propstate.cxx b/comphelper/source/property/propstate.cxx
index ec621cb..3859f6a 100644
--- a/comphelper/source/property/propstate.cxx
+++ b/comphelper/source/property/propstate.cxx
@@ -57,7 +57,7 @@ namespace comphelper
//---------------------------------------------------------------------
::com::sun::star::uno::Any SAL_CALL OPropertyStateHelper::queryInterface(const ::com::sun::star::uno::Type& _rType) throw( ::com::sun::star::uno::RuntimeException)
{
- ::com::sun::star::uno::Any aReturn = OPropertySetHelper::queryInterface(_rType);
+ ::com::sun::star::uno::Any aReturn = OPropertySetHelper2::queryInterface(_rType);
// our own ifaces
if ( !aReturn.hasValue() )
aReturn = ::cppu::queryInterface(_rType, static_cast< ::com::sun::star::beans::XPropertyState*>(this));
@@ -82,7 +82,7 @@ namespace comphelper
OPropertyStateHelper::OPropertyStateHelper(
::cppu::OBroadcastHelper& rBHlp,
::cppu::IEventNotificationHook *i_pFireEvents)
- : ::cppu::OPropertySetHelper(rBHlp, i_pFireEvents) { }
+ : ::cppu::OPropertySetHelper2(rBHlp, i_pFireEvents) { }
OPropertyStateHelper::~OPropertyStateHelper() {}
diff --git a/cppuhelper/inc/cppuhelper/propshlp.hxx b/cppuhelper/inc/cppuhelper/propshlp.hxx
index 670ce03..f8237da 100644
--- a/cppuhelper/inc/cppuhelper/propshlp.hxx
+++ b/cppuhelper/inc/cppuhelper/propshlp.hxx
@@ -351,8 +351,7 @@ public:
*/
class OPropertySetHelper : public ::com::sun::star::beans::XMultiPropertySet,
public ::com::sun::star::beans::XFastPropertySet,
- public ::com::sun::star::beans::XPropertySet,
- public ::com::sun::star::beans::XPropertySetOption
+ public ::com::sun::star::beans::XPropertySet
{
public:
/**
@@ -372,11 +371,12 @@ public:
of this object. Stored in the variable rBHelper.
@param bIgnoreRuntimeExceptionsWhileFiring
- indicates whether occuring RuntimeExceptions will be
- ignored when firing notifications (vetoableChange((),
- propertyChange()) to listeners.
+ indicates whether occurring RuntimeExceptions will be
+ ignored when firing notifications
+ (vetoableChange(), propertyChange())
+ to listeners.
PropertyVetoExceptions may still be thrown.
- This flag is useful in a inter-process scenarios when
+ This flag is useful in an inter-process scenario when
remote bridges may break down
(firing DisposedExceptions).
*/
@@ -395,11 +395,12 @@ public:
additional event notifier
@param bIgnoreRuntimeExceptionsWhileFiring
- indicates whether occuring RuntimeExceptions will be
- ignored when firing notifications (vetoableChange((),
- propertyChange()) to listeners.
+ indicates whether occurring RuntimeExceptions will be
+ ignored when firing notifications
+ (vetoableChange(), propertyChange())
+ to listeners.
PropertyVetoExceptions may still be thrown.
- This flag is useful in a inter-process scenarios when
+ This flag is useful in an inter-process scenario when
remote bridges may break down
(firing DisposedExceptions).
*/
@@ -412,7 +413,7 @@ public:
Only returns a reference to XMultiPropertySet, XFastPropertySet, XPropertySet and
XEventListener.
*/
- ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType )
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType )
throw (::com::sun::star::uno::RuntimeException);
/** eases implementing XTypeProvider::getTypes, returns the types of XMultiPropertySet, XFastPropertySet, XPropertySet
@@ -506,10 +507,6 @@ public:
const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertiesChangeListener > & Listener )
throw(::com::sun::star::uno::RuntimeException);
- // XPropertySetOption
- virtual void SAL_CALL enableChangeListenerNotification( sal_Bool bEnable )
- throw(::com::sun::star::uno::RuntimeException);
-
/**
The property sequence is created in the call. The interface isn't used after the call.
*/
@@ -637,8 +634,6 @@ protected:
*/
OMultiTypeInterfaceContainerHelperInt32 aVetoableLC;
- bool m_bFireEvent;
-
class Impl;
/** reserved for future use. finally, the future has arrived...
@@ -676,6 +671,44 @@ public:
#pragma warning(pop)
#endif
+/**
+ OPropertySetHelper plus XPropertySetOption
+ */
+class OPropertySetHelper2 : public OPropertySetHelper,
+ public ::com::sun::star::beans::XPropertySetOption
+{
+public:
+ /** Constructor.
+
+ See OPropertySetHelper constructors documentation
+ */
+ explicit OPropertySetHelper2(
+ OBroadcastHelper & rBHelper,
+ IEventNotificationHook *i_pFireEvents = NULL,
+ bool bIgnoreRuntimeExceptionsWhileFiring = false);
+
+ // XInterface
+ virtual ::com::sun::star::uno::Any SAL_CALL queryInterface( const ::com::sun::star::uno::Type & rType )
+ throw (::com::sun::star::uno::RuntimeException);
+
+ // XPropertySetOption
+ virtual void SAL_CALL enableChangeListenerNotification( sal_Bool bEnable )
+ throw(::com::sun::star::uno::RuntimeException);
+
+
+
+private:
+ OPropertySetHelper2( const OPropertySetHelper & ) SAL_THROW( () );
+ OPropertySetHelper2 & operator = ( const OPropertySetHelper & ) SAL_THROW( () );
+
+public:
+// Suppress warning about virtual functions but non-virtual destructor:
+ /**
+ You must call disposing before destruction.
+ */
+ virtual ~OPropertySetHelper2() SAL_THROW( () );
+};
+
} // end namespace cppuhelper
#endif //
diff --git a/cppuhelper/source/gcc3.map b/cppuhelper/source/gcc3.map
index fd5877bf..9a0ae57 100644
--- a/cppuhelper/source/gcc3.map
+++ b/cppuhelper/source/gcc3.map
@@ -260,7 +260,6 @@ _ZThn*_N4cppu16OComponentHelper7releaseEv;
_ZThn*_N4cppu18OPropertySetHelper14queryInterfaceERKN3com3sun4star3uno4TypeE;
_ZThn*_N4cppu18OPropertySetHelper20getFastPropertyValueE?;
_ZThn*_N4cppu18OPropertySetHelper20setFastPropertyValueE?RKN3com3sun4star3uno3AnyE;
-_ZThn*_N4cppu18OPropertySetHelper14queryInterfaceERKN3com3sun4star3uno4TypeE;
_ZThn*_N4cppu18OPropertySetHelper16getPropertyValueERKN3rtl8OUStringE;
_ZThn*_N4cppu18OPropertySetHelper16setPropertyValueERKN3rtl8OUStringERKN3com3sun4star3uno3AnyE;
_ZThn*_N4cppu18OPropertySetHelper25addPropertyChangeListenerERKN3rtl8OUStringERKN3com3sun4star3uno9ReferenceINS7_5beans23XPropertyChangeListenerEEE;
@@ -392,6 +391,23 @@ UDK_3.7 { # OOo 3.4
UDK_3.8 { # LibO 3.5
global:
- _ZN4cppu18OPropertySetHelper32enableChangeListenerNotificationEh;
- _ZThn*_N4cppu18OPropertySetHelper32enableChangeListenerNotificationEh;
+ ## class OPropertySetHelper2
+ # vtable
+ _ZTVN4cppu19OPropertySetHelper2E;
+ # constructors
+ _ZN4cppu19OPropertySetHelper2C1ERNS_19OBroadcastHelperVarINS_34OMultiTypeInterfaceContainerHelperEN3com3sun4star3uno4TypeEEEPNS_22IEventNotificationHookEb;
+ _ZN4cppu19OPropertySetHelper2C2ERNS_19OBroadcastHelperVarINS_34OMultiTypeInterfaceContainerHelperEN3com3sun4star3uno4TypeEEEPNS_22IEventNotificationHookEb;
+ # destructors
+ _ZN4cppu19OPropertySetHelper2D0Ev;
+ _ZN4cppu19OPropertySetHelper2D1Ev;
+ _ZN4cppu19OPropertySetHelper2D2Ev;
+ # typeinfo & typeinfo name
+ _ZTIN4cppu19OPropertySetHelper2E;
+ _ZTSN4cppu19OPropertySetHelper2E;
+ # queryInterface: member function itself and thunks
+ _ZN4cppu19OPropertySetHelper214queryInterfaceERKN3com3sun4star3uno4TypeE;
+ _ZThn*_N4cppu19OPropertySetHelper214queryInterfaceERKN3com3sun4star3uno4TypeE;
+ # enableChangeListenerNotification: member function itself and thunks
+ _ZN4cppu19OPropertySetHelper232enableChangeListenerNotificationEh;
+ _ZThn*_N4cppu19OPropertySetHelper232enableChangeListenerNotificationEh;
} UDK_3.7;
diff --git a/cppuhelper/source/msvc_win32_intel.map b/cppuhelper/source/msvc_win32_intel.map
index bd30b1b..6409275 100644
--- a/cppuhelper/source/msvc_win32_intel.map
+++ b/cppuhelper/source/msvc_win32_intel.map
@@ -287,6 +287,7 @@ UDK_3.7 { # OOo 3.4
UDK_3.8 { # LibO 3.5
global:
- ?enableChangeListenerNotification at OPropertySetHelper@cppu@@UAAXE at Z;
- ??_7OPropertySetHelper at cppu@@6BXPropertySetOption at beans@star at sun@com@@@;
+ ?queryInterface at OPropertySetHelper@cppu@@UAA?AVAny at uno@star at sun@com@@ABVType at 4567@@Z;
+ ?enableChangeListenerNotification at OPropertySetHelper2@cppu@@UAAXE at Z;
+ ??_7OPropertySetHelper2 at cppu@@6BXPropertySetOption at beans@star at sun@com@@@;
} UDK_3.7;
diff --git a/cppuhelper/source/propshlp.cxx b/cppuhelper/source/propshlp.cxx
index 7878062..2a71f00 100644
--- a/cppuhelper/source/propshlp.cxx
+++ b/cppuhelper/source/propshlp.cxx
@@ -152,11 +152,13 @@ public:
IEventNotificationHook *i_pFireEvents
)
:m_bIgnoreRuntimeExceptionsWhileFiring( i_bIgnoreRuntimeExceptionsWhileFiring )
+ ,m_bFireEvents(true)
,m_pFireEvents( i_pFireEvents )
{
}
bool m_bIgnoreRuntimeExceptionsWhileFiring;
+ bool m_bFireEvents;
class IEventNotificationHook * const m_pFireEvents;
::std::vector< sal_Int32 > m_handles;
@@ -173,7 +175,6 @@ OPropertySetHelper::OPropertySetHelper(
: rBHelper( rBHelper_ ),
aBoundLC( rBHelper_.rMutex ),
aVetoableLC( rBHelper_.rMutex ),
- m_bFireEvent(true),
m_pReserved( new Impl(false, 0) )
{
}
@@ -183,7 +184,6 @@ OPropertySetHelper::OPropertySetHelper(
: rBHelper( rBHelper_ ),
aBoundLC( rBHelper_.rMutex ),
aVetoableLC( rBHelper_.rMutex ),
- m_bFireEvent(true),
m_pReserved( new Impl( bIgnoreRuntimeExceptionsWhileFiring, 0 ) )
{
}
@@ -194,35 +194,50 @@ OPropertySetHelper::OPropertySetHelper(
: rBHelper( rBHelper_ ),
aBoundLC( rBHelper_.rMutex ),
aVetoableLC( rBHelper_.rMutex ),
- m_bFireEvent(true),
m_pReserved(
new Impl( bIgnoreRuntimeExceptionsWhileFiring, i_pFireEvents) )
{
}
+OPropertySetHelper2::OPropertySetHelper2(
+ OBroadcastHelper & irBHelper,
+ IEventNotificationHook *i_pFireEvents,
+ bool bIgnoreRuntimeExceptionsWhileFiring)
+ :OPropertySetHelper( irBHelper, i_pFireEvents, bIgnoreRuntimeExceptionsWhileFiring )
+{
+}
+
/**
* You must call disposing before.
*/
OPropertySetHelper::~OPropertySetHelper() SAL_THROW( () )
{
}
+OPropertySetHelper2::~OPropertySetHelper2() SAL_THROW( () )
+{
+}
-/**
- * These method is called from queryInterface, if no delegator is set.
- * Otherwise this method is called from the delegator.
- */
-// XAggregation
+// XInterface
Any OPropertySetHelper::queryInterface( const ::com::sun::star::uno::Type & rType )
throw (RuntimeException)
{
return ::cppu::queryInterface(
rType,
static_cast< XPropertySet * >( this ),
- static_cast< XPropertySetOption * >( this ),
static_cast< XMultiPropertySet * >( this ),
static_cast< XFastPropertySet * >( this ) );
}
+Any OPropertySetHelper2::queryInterface( const ::com::sun::star::uno::Type & rType )
+ throw (RuntimeException)
+{
+ Any cnd(cppu::queryInterface(rType, static_cast< XPropertySetOption * >(this)));
+ if ( cnd.hasValue() )
+ return cnd;
+ else
+ return OPropertySetHelper::queryInterface(rType);
+}
+
/**
* called from the derivee's XTypeProvider::getTypes implementation
*/
@@ -631,10 +646,11 @@ void OPropertySetHelper::fire
sal_Bool bVetoable
)
{
- if (!m_bFireEvent)
+ OSL_ENSURE( m_pReserved.get(), "No OPropertySetHelper::Impl" );
+
+ if (! m_pReserved->m_bFireEvents)
return;
- OSL_ENSURE( m_pReserved.get(), "No OPropertySetHelper::Impl" );
if (m_pReserved->m_pFireEvents) {
m_pReserved->m_pFireEvents->fireEvents(
pnHandles, nHandles, bVetoable,
@@ -1037,10 +1053,10 @@ void OPropertySetHelper::firePropertiesChangeEvent(
delete [] pHandles;
}
-void OPropertySetHelper::enableChangeListenerNotification( sal_Bool bEnable )
+void OPropertySetHelper2::enableChangeListenerNotification( sal_Bool bEnable )
throw(::com::sun::star::uno::RuntimeException)
{
- m_bFireEvent = bEnable;
+ m_pReserved->m_bFireEvents = bEnable;
}
#ifdef xdvnsdfln
--
1.7.2.5
--ibTvN161/egqYuK8--
More information about the LibreOffice
mailing list