diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2011-09-12 11:11:41 +0200 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2011-09-12 22:47:47 +0200 |
commit | 27b9f9f348b720e08f37db829533372dc4b73248 (patch) | |
tree | 8e70c504b059226a9006c9f6007d33451cae7aad /xmloff | |
parent | 63fd3f18ac597f58622a3730d0860534c77c52b5 (diff) |
sb140: #i117310# remove unnecessary dependency on XTypeProvider::getImplementationId
plus
sb140: #i117310# missing include
sb140: #i117310# support EXCEPTIONS_OFF (no UNO_QUERY_THROW)
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/Package_inc.mk | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | xmloff/inc/xmloff/PropertySetInfoHash.hxx | 47 | ||||
-rw-r--r-- | xmloff/inc/xmloff/SinglePropertySetInfoCache.hxx | 3 | ||||
-rw-r--r-- | xmloff/inc/xmloff/txtparae.hxx | 3 | ||||
-rw-r--r-- | xmloff/source/style/SinglePropertySetInfoCache.cxx | 52 | ||||
-rw-r--r-- | xmloff/source/style/xmlexppr.cxx | 58 |
6 files changed, 61 insertions, 103 deletions
diff --git a/xmloff/Package_inc.mk b/xmloff/Package_inc.mk index 4c62e7e65a63..892ecddd4937 100644 --- a/xmloff/Package_inc.mk +++ b/xmloff/Package_inc.mk @@ -38,7 +38,6 @@ $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/NamedBoolPropertyHdl.hxx $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/PageMasterStyleMap.hxx,xmloff/PageMasterStyleMap.hxx)) $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/ProgressBarHelper.hxx,xmloff/ProgressBarHelper.hxx)) $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/PropertySetInfoHash.hxx,xmloff/PropertySetInfoHash.hxx)) -$(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/PropertySetInfoKey.hxx,xmloff/PropertySetInfoKey.hxx)) $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/SchXMLExportHelper.hxx,xmloff/SchXMLExportHelper.hxx)) $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/SchXMLImportHelper.hxx,xmloff/SchXMLImportHelper.hxx)) $(eval $(call gb_Package_add_file,xmloff_inc,inc/xmloff/SettingsExportHelper.hxx,xmloff/SettingsExportHelper.hxx)) diff --git a/xmloff/inc/xmloff/PropertySetInfoHash.hxx b/xmloff/inc/xmloff/PropertySetInfoHash.hxx index 802f2445c770..300efae90310 100644..100755 --- a/xmloff/inc/xmloff/PropertySetInfoHash.hxx +++ b/xmloff/inc/xmloff/PropertySetInfoHash.hxx @@ -28,40 +28,41 @@ #ifndef _XMLOFF_PROPERTYSETINFOHASH_HXX #define _XMLOFF_PROPERTYSETINFOHASH_HXX -#include <xmloff/PropertySetInfoKey.hxx> +#include "sal/config.h" -#include <string.h> -#include <memory> +#include <cstddef> + +#include "com/sun/star/beans/XPropertySetInfo.hpp" +#include "com/sun/star/uno/Reference.hxx" +#include "com/sun/star/uno/XInterface.hpp" +#include "osl/diagnose.h" +#include "sal/types.h" struct PropertySetInfoHash { - inline size_t operator()( const PropertySetInfoKey& r ) const; - inline bool operator()( const PropertySetInfoKey& r1, - const PropertySetInfoKey& r2 ) const; + inline std::size_t operator()( const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >& r ) const; + inline bool operator()( const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >& r1, + const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >& r2 ) const; }; -inline size_t PropertySetInfoHash::operator()( - const PropertySetInfoKey& r ) const +inline std::size_t PropertySetInfoHash::operator()( + const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >& r ) const { - const sal_Int32* pBytesAsInt32Array = - (const sal_Int32*)r.aImplementationId.getConstArray(); - sal_Int32 nId32 = pBytesAsInt32Array[0] ^ - pBytesAsInt32Array[1] ^ - pBytesAsInt32Array[2] ^ - pBytesAsInt32Array[3]; - return (size_t)nId32 ^ (size_t)r.xPropInfo.get(); + OSL_ASSERT(r.is()); + return static_cast< std::size_t >( + reinterpret_cast< sal_uIntPtr >( + com::sun::star::uno::Reference< com::sun::star::uno::XInterface >( + r, com::sun::star::uno::UNO_QUERY) + .get())); + // should be UNO_QUERY_THROW, but some clients are compiled with + // EXCEPTIONS_OFF } inline bool PropertySetInfoHash::operator()( - const PropertySetInfoKey& r1, - const PropertySetInfoKey& r2 ) const + const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >& r1, + const com::sun::star::uno::Reference< com::sun::star::beans::XPropertySetInfo >& r2 ) const { - if( r1.xPropInfo != r2.xPropInfo ) - return sal_False; - - const sal_Int8* pId1 = r1.aImplementationId.getConstArray(); - const sal_Int8* pId2 = r2.aImplementationId.getConstArray(); - return memcmp( pId1, pId2, 16 * sizeof( sal_Int8 ) ) == 0; + return r1 == r2; } #endif diff --git a/xmloff/inc/xmloff/SinglePropertySetInfoCache.hxx b/xmloff/inc/xmloff/SinglePropertySetInfoCache.hxx index 4458417a125b..a0d4e9ac162d 100644 --- a/xmloff/inc/xmloff/SinglePropertySetInfoCache.hxx +++ b/xmloff/inc/xmloff/SinglePropertySetInfoCache.hxx @@ -36,7 +36,8 @@ typedef boost::unordered_map < - PropertySetInfoKey, + ::com::sun::star::uno::Reference< + ::com::sun::star::beans::XPropertySetInfo >, sal_Bool, PropertySetInfoHash, PropertySetInfoHash diff --git a/xmloff/inc/xmloff/txtparae.hxx b/xmloff/inc/xmloff/txtparae.hxx index 53e11180fd06..17b0b3d65dae 100644 --- a/xmloff/inc/xmloff/txtparae.hxx +++ b/xmloff/inc/xmloff/txtparae.hxx @@ -29,6 +29,9 @@ #define _XMLOFF_TEXTPARAE_HXX_ #include "sal/config.h" + +#include <memory> + #include "xmloff/dllapi.h" #include <rtl/ustring.hxx> #include <com/sun/star/uno/Reference.h> diff --git a/xmloff/source/style/SinglePropertySetInfoCache.cxx b/xmloff/source/style/SinglePropertySetInfoCache.cxx index 6282828e162f..14d8dddd46c4 100644 --- a/xmloff/source/style/SinglePropertySetInfoCache.cxx +++ b/xmloff/source/style/SinglePropertySetInfoCache.cxx @@ -28,13 +28,11 @@ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_xmloff.hxx" -#include <com/sun/star/lang/XTypeProvider.hpp> #include <cppuhelper/weakref.hxx> #include <xmloff/SinglePropertySetInfoCache.hxx> using namespace ::com::sun::star::uno; -using ::com::sun::star::lang::XTypeProvider; using ::com::sun::star::beans::XPropertySet; using ::com::sun::star::beans::XPropertySetInfo; @@ -44,46 +42,24 @@ sal_Bool SinglePropertySetInfoCache::hasProperty( { if( !rPropSetInfo.is() ) rPropSetInfo = rPropSet->getPropertySetInfo(); - sal_Bool bRet = sal_False, bValid = sal_False; - Reference < XTypeProvider > xTypeProv( rPropSet, UNO_QUERY ); - Sequence< sal_Int8 > aImplId; - if( xTypeProv.is() ) + iterator aIter = find( rPropSetInfo ); + if( aIter != end() ) { - aImplId = xTypeProv->getImplementationId(); - if( aImplId.getLength() == 16 ) - { - // The key must not be created outside this block, because it - // keeps a reference to the property set info. - PropertySetInfoKey aKey( rPropSetInfo, aImplId ); - iterator aIter = find( aKey ); - if( aIter != end() ) - { - bRet = (*aIter).second; - bValid = sal_True; - } - } + return aIter->second; } - if( !bValid ) + bool bRet = rPropSetInfo->hasPropertyByName( sName ); + // Check whether the property set info is destroyed if it is + // assigned to a weak reference only. If it is destroyed, then + // every instance of getPropertySetInfo returns a new object. + // Such property set infos must not be cached. + WeakReference < XPropertySetInfo > xWeakInfo( rPropSetInfo ); + rPropSetInfo = 0; + rPropSetInfo = xWeakInfo; + if( rPropSetInfo.is() ) { - bRet = rPropSetInfo->hasPropertyByName( sName ); - if( xTypeProv.is() && aImplId.getLength() == 16 ) - { - // Check whether the property set info is destroyed if it is - // assigned to a weak reference only. If it is destroyed, then - // every instance of getPropertySetInfo returns a new object. - // Such property set infos must not be cached. - WeakReference < XPropertySetInfo > xWeakInfo( rPropSetInfo ); - rPropSetInfo = 0; - rPropSetInfo = xWeakInfo; - if( rPropSetInfo.is() ) - { - PropertySetInfoKey aKey( rPropSetInfo, aImplId ); - value_type aValue( aKey, bRet ); - insert( aValue ); - } - } + value_type aValue( rPropSetInfo, bRet ); + insert( aValue ); } - return bRet; } diff --git a/xmloff/source/style/xmlexppr.cxx b/xmloff/source/style/xmlexppr.cxx index 48f383a9a376..2b83ec2c6b48 100644 --- a/xmloff/source/style/xmlexppr.cxx +++ b/xmloff/source/style/xmlexppr.cxx @@ -32,7 +32,6 @@ #include <com/sun/star/xml/AttributeData.hpp> #include <com/sun/star/beans/XPropertySet.hpp> #include <com/sun/star/beans/XPropertyState.hpp> -#include <com/sun/star/lang/XTypeProvider.hpp> #include <com/sun/star/beans/XMultiPropertySet.hpp> #include <com/sun/star/beans/XTolerantMultiPropertySet.hpp> #include <com/sun/star/beans/TolerantPropertySetResultType.hpp> @@ -236,7 +235,7 @@ public: typedef boost::unordered_map < - PropertySetInfoKey, + Reference< XPropertySetInfo >, FilterPropertiesInfo_Impl *, PropertySetInfoHash, PropertySetInfoHash @@ -636,24 +635,12 @@ vector< XMLPropertyState > SvXMLExportPropertyMapper::_Filter( FilterPropertiesInfo_Impl *pFilterInfo = 0; - Reference < XTypeProvider > xTypeProv( xPropSet, UNO_QUERY ); - Sequence< sal_Int8 > aImplId; - if( xTypeProv.is() ) + if( pCache ) { - aImplId = xTypeProv->getImplementationId(); - if( aImplId.getLength() == 16 ) - { - if( pCache ) - { - // The key must not be created outside this block, because it - // keeps a reference to the property set info. - PropertySetInfoKey aKey( xInfo, aImplId ); - FilterPropertiesInfos_Impl::iterator aIter = - pCache->find( aKey ); - if( aIter != pCache->end() ) - pFilterInfo = (*aIter).second; - } - } + FilterPropertiesInfos_Impl::iterator aIter = + pCache->find( xInfo ); + if( aIter != pCache->end() ) + pFilterInfo = (*aIter).second; } sal_Bool bDelInfo = sal_False; @@ -680,31 +667,22 @@ vector< XMLPropertyState > SvXMLExportPropertyMapper::_Filter( } } - if( xTypeProv.is() && aImplId.getLength() == 16 ) + // Check whether the property set info is destroyed if it is + // assigned to a weak reference only. If it is destroyed, then + // every instance of getPropertySetInfo returns a new object. + // Such property set infos must not be cached. + WeakReference < XPropertySetInfo > xWeakInfo( xInfo ); + xInfo = 0; + xInfo = xWeakInfo; + if( xInfo.is() ) { - // Check whether the property set info is destroyed if it is - // assigned to a weak reference only. If it is destroyed, then - // every instance of getPropertySetInfo returns a new object. - // Such property set infos must not be cached. - WeakReference < XPropertySetInfo > xWeakInfo( xInfo ); - xInfo = 0; - xInfo = xWeakInfo; - if( xInfo.is() ) - { - if( !pCache ) - ((SvXMLExportPropertyMapper *)this)->pCache = - new FilterPropertiesInfos_Impl; - PropertySetInfoKey aKey( xInfo, aImplId ); - (*pCache)[aKey] = pFilterInfo; - } - else - bDelInfo = sal_True; + if( !pCache ) + ((SvXMLExportPropertyMapper *)this)->pCache = + new FilterPropertiesInfos_Impl; + (*pCache)[xInfo] = pFilterInfo; } else - { - OSL_FAIL("here is no TypeProvider or the ImplId is wrong"); bDelInfo = sal_True; - } } if( pFilterInfo->GetPropertyCount() ) |