summaryrefslogtreecommitdiff
path: root/xmloff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2011-09-12 11:11:41 +0200
committerStephan Bergmann <sbergman@redhat.com>2011-09-12 22:47:47 +0200
commit27b9f9f348b720e08f37db829533372dc4b73248 (patch)
tree8e70c504b059226a9006c9f6007d33451cae7aad /xmloff
parent63fd3f18ac597f58622a3730d0860534c77c52b5 (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.mk1
-rwxr-xr-x[-rw-r--r--]xmloff/inc/xmloff/PropertySetInfoHash.hxx47
-rw-r--r--xmloff/inc/xmloff/SinglePropertySetInfoCache.hxx3
-rw-r--r--xmloff/inc/xmloff/txtparae.hxx3
-rw-r--r--xmloff/source/style/SinglePropertySetInfoCache.cxx52
-rw-r--r--xmloff/source/style/xmlexppr.cxx58
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() )