[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 | 111 +++++++++++++++++++++++++++---
cppuhelper/source/gcc3.map | 9 ++-
cppuhelper/source/msvc_win32_intel.map | 7 +-
cppuhelper/source/propshlp.cxx | 34 ++++++----
6 files changed, 136 insertions(+), 33 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..737aec9 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:
/**
@@ -412,7 +411,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 +505,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 +632,6 @@ protected:
*/
OMultiTypeInterfaceContainerHelperInt32 aVetoableLC;
- bool m_bFireEvent;
-
class Impl;
/** reserved for future use. finally, the future has arrived...
@@ -676,6 +669,106 @@ public:
#pragma warning(pop)
#endif
+/**
+ OPropertySetHelper plus XPropertySetOption
+ */
+class OPropertySetHelper2 : public OPropertySetHelper,
+ public ::com::sun::star::beans::XPropertySetOption
+{
+public:
+ /**
+ @param rBHelper this structure contains the basic members of
+ a broadcaster.
+ The lifetime must be longer than the lifetime
+ of this object. Stored in the variable rBHelper.
+ */
+ OPropertySetHelper2( OBroadcastHelper & rBHelper ) SAL_THROW( () )
+ :OPropertySetHelper( rBHelper )
+ {
+ };
+
+ /** Constructor.
+
+ @param rBHelper
+ this structure contains the basic members of
+ a broadcaster.
+ The lifetime must be longer than the lifetime
+ of this object. Stored in the variable rBHelper.
+
+ @param bIgnoreRuntimeExceptionsWhileFiring
+ indicates whether occuring 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
+ remote bridges may break down
+ (firing DisposedExceptions).
+ */
+ OPropertySetHelper2(
+ OBroadcastHelper & rBHelper, bool bIgnoreRuntimeExceptionsWhileFiring )
+ :OPropertySetHelper( rBHelper, bIgnoreRuntimeExceptionsWhileFiring )
+ {
+ };
+
+ /** Constructor.
+
+ @param rBHelper
+ this structure contains the basic members of
+ a broadcaster.
+ The lifetime must be longer than the lifetime
+ of this object. Stored in the variable rBHelper.
+
+ @param i_pFireEvents
+ additional event notifier
+
+ @param bIgnoreRuntimeExceptionsWhileFiring
+ indicates whether occuring 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
+ remote bridges may break down
+ (firing DisposedExceptions).
+ */
+ OPropertySetHelper2(
+ OBroadcastHelper & rBHelper,
+ IEventNotificationHook *i_pFireEvents,
+ bool bIgnoreRuntimeExceptionsWhileFiring = false)
+ :OPropertySetHelper( rBHelper, i_pFireEvents, bIgnoreRuntimeExceptionsWhileFiring )
+ {
+ };
+
+ // 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:
+#if defined __GNUC__
+#pragma GCC system_header
+#elif defined _MSC_VER
+#pragma warning(push)
+#pragma warning(disable: 4265)
+#endif
+ /**
+ You must call disposing before destruction.
+ */
+ ~OPropertySetHelper2() SAL_THROW( () );
+};
+#if defined _MSC_VER
+#pragma warning(pop)
+#endif
+
} // end namespace cppuhelper
#endif //
diff --git a/cppuhelper/source/gcc3.map b/cppuhelper/source/gcc3.map
index fd5877bf..d833357 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,10 @@ UDK_3.7 { # OOo 3.4
UDK_3.8 { # LibO 3.5
global:
- _ZN4cppu18OPropertySetHelper32enableChangeListenerNotificationEh;
- _ZThn*_N4cppu18OPropertySetHelper32enableChangeListenerNotificationEh;
+ _ZTVN4cppu19OPropertySetHelper2E;
+ _ZN4cppu19OPropertySetHelper2D2Ev;
+ _ZN4cppu19OPropertySetHelper214queryInterfaceERKN3com3sun4star3uno4TypeE;
+ _ZThn*_N4cppu19OPropertySetHelper214queryInterfaceERKN3com3sun4star3uno4TypeE;
+ _ZN4cppu19OPropertySetHelper232enableChangeListenerNotificationEh;
+ _ZThn*_N4cppu19OPropertySetHelper232enableChangeListenerNotificationEh;
} UDK_3.7;
diff --git a/cppuhelper/source/msvc_win32_intel.map b/cppuhelper/source/msvc_win32_intel.map
index bd30b1b..28e8afa 100644
--- a/cppuhelper/source/msvc_win32_intel.map
+++ b/cppuhelper/source/msvc_win32_intel.map
@@ -86,8 +86,6 @@ GetVersionInfo;
?hasPropertyByName at OPropertyArrayHelper@cppu@@UAAEABVOUString at rtl@@@Z;
?init at OPropertyArrayHelper@cppu@@AAEXE at Z;
?queryInterface at OPropertySetHelper@cppu@@UAA?AVAny at uno@star at sun@com@@ABVType at 4567@@Z;
-?queryInterface at OPropertySetHelper@cppu@@W3AA?AVAny at uno@star at sun@com@@ABVType at 4567@@Z;
-?queryInterface at OPropertySetHelper@cppu@@W7AA?AVAny at uno@star at sun@com@@ABVType at 4567@@Z;
?removePropertiesChangeListener at OPropertySetHelper@cppu@@UAAXABV?$Reference at VXPropertiesChangeListener@beans at star@sun at com@@@uno at star@sun at com@@@Z;
?removePropertyChangeListener at OPropertySetHelper@cppu@@UAAXABVOUString at rtl@@ABV?$Reference at VXPropertyChangeListener@beans at star@sun at com@@@uno at star@sun at com@@@Z;
?removeVetoableChangeListener at OPropertySetHelper@cppu@@UAAXABVOUString at rtl@@ABV?$Reference at VXVetoableChangeListener@beans at star@sun at com@@@uno at star@sun at com@@@Z;
@@ -287,6 +285,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..8cedaac 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,7 +194,6 @@ OPropertySetHelper::OPropertySetHelper(
: rBHelper( rBHelper_ ),
aBoundLC( rBHelper_.rMutex ),
aVetoableLC( rBHelper_.rMutex ),
- m_bFireEvent(true),
m_pReserved(
new Impl( bIgnoreRuntimeExceptionsWhileFiring, i_pFireEvents) )
{
@@ -206,23 +205,31 @@ OPropertySetHelper::OPropertySetHelper(
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 +638,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 +1045,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
--mxv5cy4qt+RJ9ypb--
More information about the LibreOffice
mailing list