summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2011-10-19 11:17:29 +0200
committerStephan Bergmann <sbergman@redhat.com>2011-10-19 11:17:47 +0200
commit322d455f9f87deb0551d7360ba10e4ae6e3021ab (patch)
tree5c68c94ef4279cdb8066428fd193e3e0d00b66d7
parentmake libxmlsec be built again with SYSTEM_MOZILLA=YES (diff)
downloadcore-322d455f9f87deb0551d7360ba10e4ae6e3021ab.tar.gz
core-322d455f9f87deb0551d7360ba10e4ae6e3021ab.zip
Simplified comphelper::OSequenceIterator and its uses.
-rw-r--r--comphelper/inc/comphelper/sequence.hxx14
-rw-r--r--dbaccess/source/filter/xml/xmlExport.cxx41
-rw-r--r--dbaccess/source/filter/xml/xmlExport.hxx2
-rw-r--r--xmloff/source/forms/propertyexport.cxx53
-rw-r--r--xmloff/source/forms/propertyexport.hxx6
5 files changed, 60 insertions, 56 deletions
diff --git a/comphelper/inc/comphelper/sequence.hxx b/comphelper/inc/comphelper/sequence.hxx
index 125668172fb1..46bffc5987d7 100644
--- a/comphelper/inc/comphelper/sequence.hxx
+++ b/comphelper/inc/comphelper/sequence.hxx
@@ -131,16 +131,10 @@ namespace comphelper
//=====================================================================
//= iterating through sequences
//=====================================================================
- class SAL_NO_VTABLE IIterator
- {
- public:
- virtual sal_Bool hasMoreElements() const = 0;
- virtual ::com::sun::star::uno::Any nextElement() = 0;
- };
/** a helper class for iterating through a sequence
*/
template <class TYPE>
- class OSequenceIterator : public IIterator
+ class OSequenceIterator
{
const TYPE* m_pElements;
sal_Int32 m_nLen;
@@ -154,10 +148,10 @@ namespace comphelper
*/
OSequenceIterator(const ::com::sun::star::uno::Any& _rSequenceAny);
- virtual sal_Bool hasMoreElements() const;
- virtual ::com::sun::star::uno::Any nextElement();
+ sal_Bool hasMoreElements() const;
+ ::com::sun::star::uno::Any nextElement();
- protected:
+ private:
void construct(const ::com::sun::star::uno::Sequence< TYPE >& _rSeq);
};
diff --git a/dbaccess/source/filter/xml/xmlExport.cxx b/dbaccess/source/filter/xml/xmlExport.cxx
index 661e237e0a95..9f6a89f3c757 100644
--- a/dbaccess/source/filter/xml/xmlExport.cxx
+++ b/dbaccess/source/filter/xml/xmlExport.cxx
@@ -672,6 +672,19 @@ void ODBExport::exportConnectionData()
exportLogin();
}
// -----------------------------------------------------------------------------
+template< typename T > void ODBExport::exportDataSourceSettingsSequence(
+ ::std::vector< TypedPropertyValue >::iterator const & in)
+{
+ OSequenceIterator< T > i( in->Value );
+ ::rtl::OUString sCurrent;
+ while (i.hasMoreElements())
+ {
+ SvXMLElementExport aDataValue(*this,XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING_VALUE, sal_True, sal_False);
+ // (no whitespace inside the tag)
+ Characters(implConvertAny(i.nextElement()));
+ }
+}
+
void ODBExport::exportDataSourceSettings()
{
if ( m_aDataSourceSettings.empty() )
@@ -715,46 +728,34 @@ void ODBExport::exportDataSourceSettings()
else
{
// the not-that-simple case, we need to iterate through the sequence elements
- SAL_WNODEPRECATED_DECLARATIONS_PUSH
- ::std::auto_ptr<IIterator> pSequenceIterator;
- SAL_WNODEPRECATED_DECLARATIONS_POP
switch (aSimpleType.getTypeClass())
{
case TypeClass_STRING:
- pSequenceIterator.reset( new OSequenceIterator< ::rtl::OUString >( aIter->Value ) );
+ exportDataSourceSettingsSequence< ::rtl::OUString >(
+ aIter );
break;
case TypeClass_DOUBLE:
- pSequenceIterator.reset( new OSequenceIterator< double >( aIter->Value ) );
+ exportDataSourceSettingsSequence< double >( aIter );
break;
case TypeClass_BOOLEAN:
- pSequenceIterator.reset( new OSequenceIterator< sal_Bool >( aIter->Value ) );
+ exportDataSourceSettingsSequence< sal_Bool >( aIter );
break;
case TypeClass_BYTE:
- pSequenceIterator.reset( new OSequenceIterator< sal_Int8 >( aIter->Value ) );
+ exportDataSourceSettingsSequence< sal_Int8 >( aIter );
break;
case TypeClass_SHORT:
- pSequenceIterator.reset( new OSequenceIterator< sal_Int16 >( aIter->Value ) );
+ exportDataSourceSettingsSequence< sal_Int16 >( aIter );
break;
case TypeClass_LONG:
- pSequenceIterator.reset( new OSequenceIterator< sal_Int32 >( aIter->Value ) );
+ exportDataSourceSettingsSequence< sal_Int32 >( aIter );
break;
case TypeClass_ANY:
- pSequenceIterator.reset( new OSequenceIterator< Any >( aIter->Value ) );
+ exportDataSourceSettingsSequence< Any >( aIter );
break;
default:
OSL_FAIL("unsupported sequence type !");
break;
}
- if ( pSequenceIterator.get() )
- {
- ::rtl::OUString sCurrent;
- while (pSequenceIterator->hasMoreElements())
- {
- SvXMLElementExport aDataValue(*this,XML_NAMESPACE_DB, XML_DATA_SOURCE_SETTING_VALUE, sal_True, sal_False);
- // (no whitespace inside the tag)
- Characters(implConvertAny(pSequenceIterator->nextElement()));
- }
- }
}
}
}
diff --git a/dbaccess/source/filter/xml/xmlExport.hxx b/dbaccess/source/filter/xml/xmlExport.hxx
index 8dc662f85705..2a4fe268cc33 100644
--- a/dbaccess/source/filter/xml/xmlExport.hxx
+++ b/dbaccess/source/filter/xml/xmlExport.hxx
@@ -137,6 +137,8 @@ class ODBExport : public SvXMLExport
void exportDelimiter();
void exportAutoIncrement();
void exportCharSet();
+ template< typename T > void exportDataSourceSettingsSequence(
+ ::std::vector< TypedPropertyValue >::iterator const & in);
void exportDataSourceSettings();
void exportForms();
void exportReports();
diff --git a/xmloff/source/forms/propertyexport.cxx b/xmloff/source/forms/propertyexport.cxx
index 13d770e7e2b3..050dd4bf0992 100644
--- a/xmloff/source/forms/propertyexport.cxx
+++ b/xmloff/source/forms/propertyexport.cxx
@@ -101,7 +101,21 @@ namespace xmloff
return ( !bIsDefaultValue || bIsDynamicProperty );
}
- //---------------------------------------------------------------------
+ template< typename T > void
+ OPropertyExport::exportRemainingPropertiesSequence(
+ Any const & value, token::XMLTokenEnum eValueAttName)
+ {
+ OSequenceIterator< T > i(value);
+ while (i.hasMoreElements())
+ {
+ ::rtl::OUString sValue(implConvertAny(i.nextElement()));
+ AddAttribute(XML_NAMESPACE_OFFICE, eValueAttName, sValue );
+ SvXMLElementExport aValueTag(
+ m_rContext.getGlobalContext(), XML_NAMESPACE_FORM,
+ token::XML_LIST_VALUE, sal_True, sal_False);
+ }
+ }
+
void OPropertyExport::exportRemainingProperties()
{
// the properties tag (will be created if we have at least one no-default property)
@@ -189,49 +203,40 @@ namespace xmloff
continue;
// the not-that-simple case, we need to iterate through the sequence elements
- IIterator* pSequenceIterator = NULL;
-
switch ( aExportType.getTypeClass() )
{
case TypeClass_STRING:
- pSequenceIterator = new OSequenceIterator< ::rtl::OUString >(aValue);
+ exportRemainingPropertiesSequence< ::rtl::OUString >(
+ aValue, eValueAttName);
break;
case TypeClass_DOUBLE:
- pSequenceIterator = new OSequenceIterator< double >(aValue);
+ exportRemainingPropertiesSequence< double >(
+ aValue, eValueAttName);
break;
case TypeClass_BOOLEAN:
- pSequenceIterator = new OSequenceIterator< sal_Bool >(aValue);
+ exportRemainingPropertiesSequence< sal_Bool >(
+ aValue, eValueAttName);
break;
case TypeClass_BYTE:
- pSequenceIterator = new OSequenceIterator< sal_Int8 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int8 >(
+ aValue, eValueAttName);
break;
case TypeClass_SHORT:
- pSequenceIterator = new OSequenceIterator< sal_Int16 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int16 >(
+ aValue, eValueAttName);
break;
case TypeClass_LONG:
- pSequenceIterator = new OSequenceIterator< sal_Int32 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int32 >(
+ aValue, eValueAttName);
break;
case TypeClass_HYPER:
- pSequenceIterator = new OSequenceIterator< sal_Int64 >(aValue);
+ exportRemainingPropertiesSequence< sal_Int64 >(
+ aValue, eValueAttName);
break;
default:
OSL_FAIL("OPropertyExport::exportRemainingProperties: unsupported sequence tyoe !");
break;
}
- if (pSequenceIterator)
- {
- while (pSequenceIterator->hasMoreElements())
- {
- sValue =
- implConvertAny(pSequenceIterator->nextElement());
- AddAttribute(XML_NAMESPACE_OFFICE, eValueAttName, sValue );
- SvXMLElementExport aValueTag(
- m_rContext.getGlobalContext(),
- XML_NAMESPACE_FORM, token::XML_LIST_VALUE,
- sal_True, sal_False);
- }
- }
- delete pSequenceIterator;
}
}
catch(...)
diff --git a/xmloff/source/forms/propertyexport.hxx b/xmloff/source/forms/propertyexport.hxx
index e31704c40530..1e3eaab55dd3 100644
--- a/xmloff/source/forms/propertyexport.hxx
+++ b/xmloff/source/forms/propertyexport.hxx
@@ -105,8 +105,10 @@ namespace xmloff
*/
void examinePersistence();
- /**
- */
+ template< typename T > void exportRemainingPropertiesSequence(
+ com::sun::star::uno::Any const & value,
+ token::XMLTokenEnum eValueAttName);
+
void exportRemainingProperties();
/** indicates that a property has been handled by a derived class, without using the helper methods of this