diff options
Diffstat (limited to 'chart2/source/tools/CachedDataSequence.cxx')
-rw-r--r-- | chart2/source/tools/CachedDataSequence.cxx | 159 |
1 files changed, 35 insertions, 124 deletions
diff --git a/chart2/source/tools/CachedDataSequence.cxx b/chart2/source/tools/CachedDataSequence.cxx index 6c8826701779..13755af2c7b3 100644 --- a/chart2/source/tools/CachedDataSequence.cxx +++ b/chart2/source/tools/CachedDataSequence.cxx @@ -23,7 +23,6 @@ #include <comphelper/sequenceashashmap.hxx> #include <cppuhelper/supportsservice.hxx> -#include <tools/diagnose_ex.h> #include <algorithm> @@ -32,17 +31,13 @@ using namespace ::com::sun::star; using ::com::sun::star::uno::Sequence; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Any; -using ::osl::MutexGuard; // necessary for MS compiler -using ::comphelper::OPropertyContainer; -using ::comphelper::OMutexAndBroadcastHelper; -using ::comphelper::OPropertyArrayUsageHelper; using ::chart::impl::CachedDataSequence_Base; namespace { -constexpr OUStringLiteral lcl_aServiceName = u"com.sun.star.comp.chart.CachedDataSequence"; +constexpr OUString lcl_aServiceName = u"com.sun.star.comp.chart.CachedDataSequence"_ustr; enum { @@ -56,41 +51,31 @@ namespace chart { CachedDataSequence::CachedDataSequence() - : OPropertyContainer( GetBroadcastHelper()), - CachedDataSequence_Base( GetMutex()), - m_eCurrentDataType( NUMERICAL ), - m_xModifyEventForwarder( ModifyListenerHelper::createModifyEventForwarder()) + : m_eCurrentDataType( NUMERICAL ), + m_xModifyEventForwarder( new ModifyEventForwarder() ) { registerProperties(); } CachedDataSequence::CachedDataSequence( const Reference< uno::XComponentContext > & /*xContext*/ ) - : OPropertyContainer( GetBroadcastHelper()), - CachedDataSequence_Base( GetMutex()), - m_eCurrentDataType( MIXED ), - m_xModifyEventForwarder( ModifyListenerHelper::createModifyEventForwarder( )) + : m_eCurrentDataType( MIXED ), + m_xModifyEventForwarder( new ModifyEventForwarder() ) { registerProperties(); } CachedDataSequence::CachedDataSequence( const OUString & rSingleText ) - : OPropertyContainer( GetBroadcastHelper()), - CachedDataSequence_Base( GetMutex()), - m_eCurrentDataType( TEXTUAL ), + : m_eCurrentDataType( TEXTUAL ), m_aTextualSequence({rSingleText}), - m_xModifyEventForwarder( ModifyListenerHelper::createModifyEventForwarder()) + m_xModifyEventForwarder( new ModifyEventForwarder() ) { registerProperties(); } CachedDataSequence::CachedDataSequence( const CachedDataSequence & rSource ) - : OMutexAndBroadcastHelper(), - OPropertyContainer( GetBroadcastHelper()), - OPropertyArrayUsageHelper< CachedDataSequence >(), - CachedDataSequence_Base( GetMutex()), - m_nNumberFormatKey( rSource.m_nNumberFormatKey ), + : m_nNumberFormatKey( rSource.m_nNumberFormatKey ), m_sRole( rSource.m_sRole ), m_eCurrentDataType( rSource.m_eCurrentDataType ), - m_xModifyEventForwarder( ModifyListenerHelper::createModifyEventForwarder()) + m_xModifyEventForwarder( new ModifyEventForwarder() ) { switch( m_eCurrentDataType ) { @@ -113,13 +98,13 @@ CachedDataSequence::~CachedDataSequence() void CachedDataSequence::registerProperties() { - registerProperty( "NumberFormatKey", + registerProperty( u"NumberFormatKey"_ustr, PROP_NUMBERFORMAT_KEY, 0, // PropertyAttributes & m_nNumberFormatKey, cppu::UnoType<decltype(m_nNumberFormatKey)>::get() ); - registerProperty( "Role", + registerProperty( u"Role"_ustr, PROP_PROPOSED_ROLE, 0, // PropertyAttributes & m_sRole, @@ -131,29 +116,11 @@ Sequence< double > CachedDataSequence::Impl_getNumericalData() const if( m_eCurrentDataType == NUMERICAL ) return m_aNumericalSequence; - sal_Int32 nSize = ( m_eCurrentDataType == TEXTUAL ) - ? m_aTextualSequence.getLength() - : m_aMixedSequence.getLength(); - - Sequence< double > aResult( nSize ); - double * pResultArray = aResult.getArray(); - if( m_eCurrentDataType == TEXTUAL ) - { - const OUString * pTextArray = m_aTextualSequence.getConstArray(); - std::transform( pTextArray, pTextArray + nSize, - pResultArray, - CommonFunctors::OUStringToDouble() ); - } - else - { - OSL_ASSERT( m_eCurrentDataType == MIXED ); - const Any * pMixedArray = m_aMixedSequence.getConstArray(); - std::transform( pMixedArray, pMixedArray + nSize, - pResultArray, - CommonFunctors::AnyToDouble() ); - } - return aResult; + return CommonFunctors::convertToSequence(m_aTextualSequence, CommonFunctors::ToDouble()); + + OSL_ASSERT(m_eCurrentDataType == MIXED); + return CommonFunctors::convertToSequence(m_aMixedSequence, CommonFunctors::ToDouble()); } Sequence< OUString > CachedDataSequence::Impl_getTextualData() const @@ -161,30 +128,11 @@ Sequence< OUString > CachedDataSequence::Impl_getTextualData() const if( m_eCurrentDataType == TEXTUAL ) return m_aTextualSequence; - sal_Int32 nSize = ( m_eCurrentDataType == NUMERICAL ) - ? m_aNumericalSequence.getLength() - : m_aMixedSequence.getLength(); - - Sequence< OUString > aResult( nSize ); - OUString * pResultArray = aResult.getArray(); - if( m_eCurrentDataType == NUMERICAL ) - { - const double * pTextArray = m_aNumericalSequence.getConstArray(); - std::transform( pTextArray, pTextArray + nSize, - pResultArray, - CommonFunctors::DoubleToOUString() ); - } - else - { - OSL_ASSERT( m_eCurrentDataType == MIXED ); - const Any * pMixedArray = m_aMixedSequence.getConstArray(); - std::transform( pMixedArray, pMixedArray + nSize, - pResultArray, - CommonFunctors::AnyToString() ); - } + return CommonFunctors::convertToSequence(m_aNumericalSequence, CommonFunctors::ToString()); - return aResult; + OSL_ASSERT(m_eCurrentDataType == MIXED); + return CommonFunctors::convertToSequence(m_aMixedSequence, CommonFunctors::ToString()); } Sequence< Any > CachedDataSequence::Impl_getMixedData() const @@ -192,34 +140,15 @@ Sequence< Any > CachedDataSequence::Impl_getMixedData() const if( m_eCurrentDataType == MIXED ) return m_aMixedSequence; - sal_Int32 nSize = ( m_eCurrentDataType == NUMERICAL ) - ? m_aNumericalSequence.getLength() - : m_aTextualSequence.getLength(); - - Sequence< Any > aResult( nSize ); - Any * pResultArray = aResult.getArray(); - if( m_eCurrentDataType == NUMERICAL ) - { - const double * pTextArray = m_aNumericalSequence.getConstArray(); - std::transform( pTextArray, pTextArray + nSize, - pResultArray, - CommonFunctors::makeAny< double >() ); - } - else - { - OSL_ASSERT( m_eCurrentDataType == TEXTUAL ); - const OUString * pMixedArray = m_aTextualSequence.getConstArray(); - std::transform( pMixedArray, pMixedArray + nSize, - pResultArray, - CommonFunctors::makeAny< OUString >() ); - } + return CommonFunctors::convertToSequence(m_aNumericalSequence, CommonFunctors::makeAny()); - return aResult; + OSL_ASSERT(m_eCurrentDataType == TEXTUAL); + return CommonFunctors::convertToSequence(m_aTextualSequence, CommonFunctors::makeAny()); } -IMPLEMENT_FORWARD_XINTERFACE2( CachedDataSequence, CachedDataSequence_Base, OPropertyContainer ) -IMPLEMENT_FORWARD_XTYPEPROVIDER2( CachedDataSequence, CachedDataSequence_Base, OPropertyContainer ) +IMPLEMENT_FORWARD_XINTERFACE2( CachedDataSequence, CachedDataSequence_Base, comphelper::OPropertyContainer2 ) +IMPLEMENT_FORWARD_XTYPEPROVIDER2( CachedDataSequence, CachedDataSequence_Base, comphelper::OPropertyContainer2 ) // ____ XPropertySet ____ Reference< beans::XPropertySetInfo > SAL_CALL CachedDataSequence::getPropertySetInfo() @@ -257,16 +186,16 @@ css::uno::Sequence< OUString > SAL_CALL CachedDataSequence::getSupportedServiceN { return { lcl_aServiceName, - "com.sun.star.chart2.data.DataSequence", - "com.sun.star.chart2.data.NumericalDataSequence", - "com.sun.star.chart2.data.TextualDataSequence" + u"com.sun.star.chart2.data.DataSequence"_ustr, + u"com.sun.star.chart2.data.NumericalDataSequence"_ustr, + u"com.sun.star.chart2.data.TextualDataSequence"_ustr }; } // ________ XNumericalDataSequence ________ Sequence< double > SAL_CALL CachedDataSequence::getNumericalData() { - MutexGuard aGuard( GetMutex() ); + std::unique_lock aGuard( m_aMutex ); if( m_eCurrentDataType == NUMERICAL ) return m_aNumericalSequence; @@ -277,7 +206,7 @@ Sequence< double > SAL_CALL CachedDataSequence::getNumericalData() // ________ XTextualDataSequence ________ Sequence< OUString > SAL_CALL CachedDataSequence::getTextualData() { - MutexGuard aGuard( GetMutex() ); + std::unique_lock aGuard( m_aMutex ); if( m_eCurrentDataType == TEXTUAL ) return m_aTextualSequence; @@ -288,7 +217,7 @@ Sequence< OUString > SAL_CALL CachedDataSequence::getTextualData() // ________ XDataSequence ________ Sequence< Any > SAL_CALL CachedDataSequence::getData() { - MutexGuard aGuard( GetMutex() ); + std::unique_lock aGuard( m_aMutex ); return Impl_getMixedData(); } @@ -310,52 +239,34 @@ Sequence< OUString > SAL_CALL CachedDataSequence::generateLabel( chart2::data::L Reference< util::XCloneable > SAL_CALL CachedDataSequence::createClone() { - CachedDataSequence * pNewSeq = new CachedDataSequence( *this ); - - return Reference< util::XCloneable >( pNewSeq ); + return new CachedDataSequence( *this ); } void SAL_CALL CachedDataSequence::addModifyListener( const Reference< util::XModifyListener >& aListener ) { - try - { - Reference< util::XModifyBroadcaster > xBroadcaster( m_xModifyEventForwarder, uno::UNO_QUERY_THROW ); - xBroadcaster->addModifyListener( aListener ); - } - catch( const uno::Exception & ) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } + m_xModifyEventForwarder->addModifyListener( aListener ); } void SAL_CALL CachedDataSequence::removeModifyListener( const Reference< util::XModifyListener >& aListener ) { - try - { - Reference< util::XModifyBroadcaster > xBroadcaster( m_xModifyEventForwarder, uno::UNO_QUERY_THROW ); - xBroadcaster->removeModifyListener( aListener ); - } - catch( const uno::Exception & ) - { - DBG_UNHANDLED_EXCEPTION("chart2"); - } + m_xModifyEventForwarder->removeModifyListener( aListener ); } // lang::XInitialization: void SAL_CALL CachedDataSequence::initialize(const uno::Sequence< uno::Any > & _aArguments) { ::comphelper::SequenceAsHashMap aMap(_aArguments); - m_aNumericalSequence = aMap.getUnpackedValueOrDefault( "DataSequence" ,m_aNumericalSequence); + m_aNumericalSequence = aMap.getUnpackedValueOrDefault( u"DataSequence"_ustr ,m_aNumericalSequence); if ( m_aNumericalSequence.hasElements() ) m_eCurrentDataType = NUMERICAL; else { - m_aTextualSequence = aMap.getUnpackedValueOrDefault( "DataSequence" ,m_aTextualSequence); + m_aTextualSequence = aMap.getUnpackedValueOrDefault( u"DataSequence"_ustr ,m_aTextualSequence); if ( m_aTextualSequence.hasElements() ) m_eCurrentDataType = TEXTUAL; else { - m_aMixedSequence = aMap.getUnpackedValueOrDefault( "DataSequence" ,m_aMixedSequence); + m_aMixedSequence = aMap.getUnpackedValueOrDefault( u"DataSequence"_ustr ,m_aMixedSequence); if ( m_aMixedSequence.hasElements() ) m_eCurrentDataType = MIXED; } |