/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #include #include #include #include #include #include #include using namespace osl; using namespace com::sun::star::uno; using namespace com::sun::star::lang; namespace cppu { /** * Reallocate the sequence. */ static void realloc( Sequence< Reference< XInterface > > & rSeq, sal_Int32 nNewLen ) SAL_THROW(()) { rSeq.realloc( nNewLen ); } /** * Remove an element from an interface sequence. */ static void sequenceRemoveElementAt( Sequence< Reference< XInterface > > & rSeq, sal_Int32 index ) SAL_THROW(()) { sal_Int32 nNewLen = rSeq.getLength() - 1; Sequence< Reference< XInterface > > aDestSeq( rSeq.getLength() - 1 ); // getArray on a const sequence is faster const Reference< XInterface > * pSource = ((const Sequence< Reference< XInterface > > &)rSeq).getConstArray(); Reference< XInterface > * pDest = aDestSeq.getArray(); sal_Int32 i = 0; for( ; i < index; i++ ) pDest[i] = pSource[i]; for( sal_Int32 j = i ; j < nNewLen; j++ ) pDest[j] = pSource[j+1]; rSeq = aDestSeq; } #ifdef _MSC_VER #pragma warning( disable: 4786 ) #endif OInterfaceIteratorHelper::OInterfaceIteratorHelper( OInterfaceContainerHelper & rCont_ ) SAL_THROW(()) : rCont( rCont_ ) { MutexGuard aGuard( rCont.rMutex ); if( rCont.bInUse ) // worst case, two iterators at the same time rCont.copyAndResetInUse(); bIsList = rCont_.bIsList; aData = rCont_.aData; if( bIsList ) { rCont.bInUse = sal_True; nRemain = aData.pAsSequence->getLength(); } else if( aData.pAsInterface ) { aData.pAsInterface->acquire(); nRemain = 1; } else nRemain = 0; } OInterfaceIteratorHelper::~OInterfaceIteratorHelper() SAL_THROW(()) { bool bShared; { MutexGuard aGuard( rCont.rMutex ); // bResetInUse protect the iterator against recursion bShared = aData.pAsSequence == rCont.aData.pAsSequence && rCont.bIsList; if( bShared ) { OSL_ENSURE( rCont.bInUse, "OInterfaceContainerHelper must be in use" ); rCont.bInUse = sal_False; } } if( !bShared ) { if( bIsList ) // Sequence owned by the iterator delete aData.pAsSequence; else if( aData.pAsInterface ) // Interface is acquired by the iterator aData.pAsInterface->release(); } } XInterface * OInterfaceIteratorHelper::next() SAL_THROW(()) { if( nRemain ) { nRemain--; if( bIsList ) // typecase to const,so the getArray method is faster return aData.pAsSequence->getConstArray()[nRemain].get(); else if( aData.pAsInterface ) return aData.pAsInterface; } // exception return 0; } void OInterfaceIteratorHelper::remove() SAL_THROW(()) { if( bIsList ) { OSL_ASSERT( nRemain >= 0 && nRemain < aData.pAsSequence->getLength() ); XInterface * p = aData.pAsSequence->getConstArray()[nRemain].get(); rCont.removeInterface( * reinterpret_cast< const Reference< XInterface > * >( &p ) ); } else { OSL_ASSERT( 0 == nRemain ); rCont.removeInterface( * reinterpret_cast< const Reference< XInterface > * >(&aData.pAsInterface)); } } OInterfaceContainerHelper::OInterfaceContainerHelper( Mutex & rMutex_ ) SAL_THROW(()) : rMutex( rMutex_ ) , bInUse( sal_False ) , bIsList( sal_False ) { } OInterfaceContainerHelper::~OInterfaceContainerHelper() SAL_THROW(()) { OSL_ENSURE( !bInUse, "~OInterfaceContainerHelper but is in use" ); if( bIsList ) delete aData.pAsSequence; else if( aData.pAsInterface ) aData.pAsInterface->release(); } sal_Int32 OInterfaceContainerHelper::getLength() const SAL_THROW(()) { MutexGuard aGuard( rMutex ); if( bIsList ) return aData.pAsSequence->getLength(); else if( aData.pAsInterface ) return 1; return 0; } Sequence< Reference > OInterfaceContainerHelper::getElements() const SAL_THROW(()) { MutexGuard aGuard( rMutex ); if( bIsList ) return *aData.pAsSequence; else if( aData.pAsInterface ) { Reference x( aData.pAsInterface ); return Sequence< Reference< XInterface > >( &x, 1 ); } return Sequence< Reference< XInterface > >(); } void OInterfaceContainerHelper::copyAndResetInUse() SAL_THROW(()) { OSL_ENSURE( bInUse, "OInterfaceContainerHelper not in use" ); if( bInUse ) { // this should be the worst case. If a iterator is active // and a new Listener is added. if( bIsList ) aData.pAsSequence = new Sequence< Reference< XInterface > >( *aData.pAsSequence ); else if( aData.pAsInterface ) aData.pAsInterface->acquire(); bInUse = sal_False; } } sal_Int32 OInterfaceContainerHelper::addInterface( const Reference & rListener ) SAL_THROW(()) { OSL_ASSERT( rListener.is() ); MutexGuard aGuard( rMutex ); if( bInUse ) copyAndResetInUse(); if( bIsList ) { sal_Int32 nLen = aData.pAsSequence->getLength(); realloc( *aData.pAsSequence, nLen +1 ); aData.pAsSequence->getArray()[ nLen ] = rListener; return nLen +1; } else if( aData.pAsInterface ) { Sequence< Reference< XInterface > > * pSeq = new Sequence< Reference< XInterface > >( 2 ); Reference * pArray = pSeq->getArray(); pArray[0] = aData.pAsInterface; pArray[1] = rListener; aData.pAsInterface->release(); aData.pAsSequence = pSeq; bIsList = sal_True; return 2; } else { aData.pAsInterface = rListener.get(); if( rListener.is() ) rListener->acquire(); return 1; } } sal_Int32 OInterfaceContainerHelper::removeInterface( const Reference & rListener ) SAL_THROW(()) { OSL_ASSERT( rListener.is() ); MutexGuard aGuard( rMutex ); if( bInUse ) copyAndResetInUse(); if( bIsList ) { const Reference * pL = aData.pAsSequence->getConstArray(); sal_Int32 nLen = aData.pAsSequence->getLength(); sal_Int32 i; for( i = 0; i < nLen; i++ ) { // It is not valid to compare the Pointer direkt, but is is is much // more faster. if( pL[i].get() == rListener.get() ) { sequenceRemoveElementAt( *aData.pAsSequence, i ); break; } } if( i == nLen ) { // interface not found, use the correct compare method for( i = 0; i < nLen; i++ ) { if( pL[i] == rListener ) { sequenceRemoveElementAt(*aData.pAsSequence, i ); break; } } } if( aData.pAsSequence->getLength() == 1 ) { XInterface * p = aData.pAsSequence->getConstArray()[0].get(); p->acquire(); delete aData.pAsSequence; aData.pAsInterface = p; bIsList = sal_False; return 1; } else return aData.pAsSequence->getLength(); } else if( aData.pAsInterface && Reference( aData.pAsInterface ) == rListener ) { aData.pAsInterface->release(); aData.pAsInterface = 0; } return aData.pAsInterface ? 1 : 0; } void OInterfaceContainerHelper::disposeAndClear( const EventObject & rEvt ) SAL_THROW(()) { ClearableMutexGuard aGuard( rMutex ); OInterfaceIteratorHelper aIt( *this ); // Release container, in case new entries come while disposing OSL_ENSURE( !bIsList || bInUse, "OInterfaceContainerHelper not in use" ); if( !bIsList && aData.pAsInterface ) aData.pAsInterface->release(); // set the member to null, use the iterator to delete the values aData.pAsInterface = NULL; bIsList = sal_False; bInUse = sal_False; aGuard.clear(); while( aIt.hasMoreElements() ) { try { Reference xLst( aIt.next(), UNO_QUERY ); if( xLst.is() ) xLst->disposing( rEvt ); } catch ( RuntimeException & ) { // be robust, if e.g. a remote bridge has disposed already. // there is no way to delegate the error to the caller :o(. } } } void OInterfaceContainerHelper::clear() SAL_THROW(()) { ClearableMutexGuard aGuard( rMutex ); OInterfaceIteratorHelper aIt( *this ); // Release container, in case new entries come while disposing OSL_ENSURE( !bIsList || bInUse, "OInterfaceContainerHelper not in use" ); if( !bIsList && aData.pAsInterface ) aData.pAsInterface->release(); // set the member to null, use the iterator to delete the values aData.pAsInterface = 0; bIsList = sal_False; bInUse = sal_False; // release mutex before aIt destructor call aGuard.clear(); } // specialized class for type typedef ::std::vector< std::pair < Type , void* > > t_type2ptr; OMultiTypeInterfaceContainerHelper::OMultiTypeInterfaceContainerHelper( Mutex & rMutex_ ) SAL_THROW(()) : rMutex( rMutex_ ) { m_pMap = new t_type2ptr(); } OMultiTypeInterfaceContainerHelper::~OMultiTypeInterfaceContainerHelper() SAL_THROW(()) { t_type2ptr * pMap = (t_type2ptr *)m_pMap; t_type2ptr::iterator iter = pMap->begin(); t_type2ptr::iterator end = pMap->end(); while( iter != end ) { delete (OInterfaceContainerHelper*)(*iter).second; (*iter).second = 0; ++iter; } delete pMap; } Sequence< Type > OMultiTypeInterfaceContainerHelper::getContainedTypes() const SAL_THROW(()) { t_type2ptr * pMap = (t_type2ptr *)m_pMap; t_type2ptr::size_type nSize; ::osl::MutexGuard aGuard( rMutex ); nSize = pMap->size(); if( nSize ) { ::com::sun::star::uno::Sequence< Type > aInterfaceTypes( nSize ); Type * pArray = aInterfaceTypes.getArray(); t_type2ptr::iterator iter = pMap->begin(); t_type2ptr::iterator end = pMap->end(); sal_Int32 i = 0; while( iter != end ) { // are interfaces added to this container? if( ((OInterfaceContainerHelper*)(*iter).second)->getLength() ) // yes, put the type in the array pArray[i++] = (*iter).first; ++iter; } if( (t_type2ptr::size_type)i != nSize ) { // may be empty container, reduce the sequence to the right size aInterfaceTypes = ::com::sun::star::uno::Sequence< Type >( pArray, i ); } return aInterfaceTypes; } return ::com::sun::star::uno::Sequence< Type >(); } static t_type2ptr::iterator findType(t_type2ptr *pMap, const Type & rKey ) { t_type2ptr::iterator iter = pMap->begin(); t_type2ptr::iterator end = pMap->end(); while( iter != end ) { if (iter->first == rKey) break; ++iter; } return iter; } OInterfaceContainerHelper * OMultiTypeInterfaceContainerHelper::getContainer( const Type & rKey ) const SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); t_type2ptr * pMap = (t_type2ptr *)m_pMap; t_type2ptr::iterator iter = findType( pMap, rKey ); if( iter != pMap->end() ) return (OInterfaceContainerHelper*) (*iter).second; return 0; } sal_Int32 OMultiTypeInterfaceContainerHelper::addInterface( const Type & rKey, const Reference< XInterface > & rListener ) SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); t_type2ptr * pMap = (t_type2ptr *)m_pMap; t_type2ptr::iterator iter = findType( pMap, rKey ); if( iter == pMap->end() ) { OInterfaceContainerHelper * pLC = new OInterfaceContainerHelper( rMutex ); pMap->push_back(std::pair(rKey, pLC)); return pLC->addInterface( rListener ); } else return ((OInterfaceContainerHelper*)(*iter).second)->addInterface( rListener ); } sal_Int32 OMultiTypeInterfaceContainerHelper::removeInterface( const Type & rKey, const Reference< XInterface > & rListener ) SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); // search container with id nUik t_type2ptr * pMap = (t_type2ptr *)m_pMap; t_type2ptr::iterator iter = findType( pMap, rKey ); // container found? if( iter != pMap->end() ) return ((OInterfaceContainerHelper*)(*iter).second)->removeInterface( rListener ); // no container with this id. Always return 0 return 0; } void OMultiTypeInterfaceContainerHelper::disposeAndClear( const EventObject & rEvt ) SAL_THROW(()) { t_type2ptr::size_type nSize = 0; OInterfaceContainerHelper ** ppListenerContainers = NULL; { ::osl::MutexGuard aGuard( rMutex ); t_type2ptr * pMap = (t_type2ptr *)m_pMap; nSize = pMap->size(); if( nSize ) { typedef OInterfaceContainerHelper* ppp; ppListenerContainers = new ppp[nSize]; //ppListenerContainers = new (ListenerContainer*)[nSize]; t_type2ptr::iterator iter = pMap->begin(); t_type2ptr::iterator end = pMap->end(); t_type2ptr::size_type i = 0; while( iter != end ) { ppListenerContainers[i++] = (OInterfaceContainerHelper*)(*iter).second; ++iter; } } } // create a copy, because do not fire event in a guarded section for( t_type2ptr::size_type i = 0; i < nSize; i++ ) { if( ppListenerContainers[i] ) ppListenerContainers[i]->disposeAndClear( rEvt ); } delete [] ppListenerContainers; } void OMultiTypeInterfaceContainerHelper::clear() SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); t_type2ptr * pMap = (t_type2ptr *)m_pMap; t_type2ptr::iterator iter = pMap->begin(); t_type2ptr::iterator end = pMap->end(); while( iter != end ) { ((OInterfaceContainerHelper*)(*iter).second)->clear(); ++iter; } } // specialized class for long typedef ::std::vector< std::pair < sal_Int32 , void* > > t_long2ptr; static t_long2ptr::iterator findLong(t_long2ptr *pMap, sal_Int32 nKey ) { t_long2ptr::iterator iter = pMap->begin(); t_long2ptr::iterator end = pMap->end(); while( iter != end ) { if (iter->first == nKey) break; ++iter; } return iter; } OMultiTypeInterfaceContainerHelperInt32::OMultiTypeInterfaceContainerHelperInt32( Mutex & rMutex_ ) SAL_THROW(()) : m_pMap( NULL ) , rMutex( rMutex_ ) { // delay pMap allocation until necessary. } OMultiTypeInterfaceContainerHelperInt32::~OMultiTypeInterfaceContainerHelperInt32() SAL_THROW(()) { if (!m_pMap) return; t_long2ptr * pMap = (t_long2ptr *)m_pMap; t_long2ptr::iterator iter = pMap->begin(); t_long2ptr::iterator end = pMap->end(); while( iter != end ) { delete (OInterfaceContainerHelper*)(*iter).second; (*iter).second = 0; ++iter; } delete pMap; } Sequence< sal_Int32 > OMultiTypeInterfaceContainerHelperInt32::getContainedTypes() const SAL_THROW(()) { t_long2ptr * pMap = (t_long2ptr *)m_pMap; t_long2ptr::size_type nSize; ::osl::MutexGuard aGuard( rMutex ); nSize = pMap ? pMap->size() : 0; if( nSize ) { ::com::sun::star::uno::Sequence< sal_Int32 > aInterfaceTypes( nSize ); sal_Int32 * pArray = aInterfaceTypes.getArray(); t_long2ptr::iterator iter = pMap->begin(); t_long2ptr::iterator end = pMap->end(); sal_Int32 i = 0; while( iter != end ) { // are interfaces added to this container? if( ((OInterfaceContainerHelper*)(*iter).second)->getLength() ) // yes, put the type in the array pArray[i++] = (*iter).first; ++iter; } if( (t_long2ptr::size_type)i != nSize ) { // may be empty container, reduce the sequence to the right size aInterfaceTypes = ::com::sun::star::uno::Sequence< sal_Int32 >( pArray, i ); } return aInterfaceTypes; } return ::com::sun::star::uno::Sequence< sal_Int32 >(); } OInterfaceContainerHelper * OMultiTypeInterfaceContainerHelperInt32::getContainer( const sal_Int32 & rKey ) const SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); if (!m_pMap) return 0; t_long2ptr * pMap = (t_long2ptr *)m_pMap; t_long2ptr::iterator iter = findLong( pMap, rKey ); if( iter != pMap->end() ) return (OInterfaceContainerHelper*) (*iter).second; return 0; } sal_Int32 OMultiTypeInterfaceContainerHelperInt32::addInterface( const sal_Int32 & rKey, const Reference< XInterface > & rListener ) SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); if (!m_pMap) m_pMap = new t_long2ptr(); t_long2ptr * pMap = (t_long2ptr *)m_pMap; t_long2ptr::iterator iter = findLong( pMap, rKey ); if( iter == pMap->end() ) { OInterfaceContainerHelper * pLC = new OInterfaceContainerHelper( rMutex ); pMap->push_back(std::pair< sal_Int32, void* >(rKey, pLC)); return pLC->addInterface( rListener ); } else return ((OInterfaceContainerHelper*)(*iter).second)->addInterface( rListener ); } sal_Int32 OMultiTypeInterfaceContainerHelperInt32::removeInterface( const sal_Int32 & rKey, const Reference< XInterface > & rListener ) SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); if (!m_pMap) return 0; // search container with id nUik t_long2ptr * pMap = (t_long2ptr *)m_pMap; t_long2ptr::iterator iter = findLong( pMap, rKey ); // container found? if( iter != pMap->end() ) return ((OInterfaceContainerHelper*)(*iter).second)->removeInterface( rListener ); // no container with this id. Always return 0 return 0; } void OMultiTypeInterfaceContainerHelperInt32::disposeAndClear( const EventObject & rEvt ) SAL_THROW(()) { t_long2ptr::size_type nSize = 0; OInterfaceContainerHelper ** ppListenerContainers = NULL; { ::osl::MutexGuard aGuard( rMutex ); if (!m_pMap) return; t_long2ptr * pMap = (t_long2ptr *)m_pMap; nSize = pMap->size(); if( nSize ) { typedef OInterfaceContainerHelper* ppp; ppListenerContainers = new ppp[nSize]; t_long2ptr::iterator iter = pMap->begin(); t_long2ptr::iterator end = pMap->end(); t_long2ptr::size_type i = 0; while( iter != end ) { ppListenerContainers[i++] = (OInterfaceContainerHelper*)(*iter).second; ++iter; } } } // create a copy, because do not fire event in a guarded section for( t_long2ptr::size_type i = 0; i < nSize; i++ ) { if( ppListenerContainers[i] ) ppListenerContainers[i]->disposeAndClear( rEvt ); } delete [] ppListenerContainers; } void OMultiTypeInterfaceContainerHelperInt32::clear() SAL_THROW(()) { ::osl::MutexGuard aGuard( rMutex ); if (!m_pMap) return; t_long2ptr * pMap = (t_long2ptr *)m_pMap; t_long2ptr::iterator iter = pMap->begin(); t_long2ptr::iterator end = pMap->end(); while( iter != end ) { ((OInterfaceContainerHelper*)(*iter).second)->clear(); ++iter; } } } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ lok_sofficemain LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2024-11-11clang-tidy: performance-unnecessary-copy-initialization in chart2Noel Grandin
Change-Id: I6f84cfea6390d6a263e5e43ec5a638260c10c00d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176374 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-06-13clang-tidy modernize-pass-by-value in chart2Noel Grandin
Change-Id: I73ae444487571fb61a02a2c813c060d269d52a02 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/135723 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-04-25Recheck module chart2 with IWYUGabor Kelemen
See tdf#42949 for motivation This time using the new --noexclude switch to recheck validity of the excludelist; these were the obsolete exclusions Change-Id: Ifdf79b30ebaf198082c2194611a2ed2b664e6f1f Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133309 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2022-04-23Recheck module chart2 with IWYUGabor Kelemen
See tdf#42949 for motivation Change-Id: Id4cdca3eed8618c289f30913d506f8f2bd46f0bb Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133112 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
2022-02-09use more concrete types in chart2, DataSourceNoel Grandin
Change-Id: I513491e8d39ee79edf8521d279bd32031cf22a93 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129687 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-01-30use more concrete types in chart2, DiagramNoel Grandin
Change-Id: Ieaee7c8381c19e3bfd3560d2f674bebf49afac56 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129156 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2022-01-19use more concrete types in chart2, ChartModelNoel Grandin
Change-Id: I36b6ac63ce62e0eb0e9bec951d582f39aed3be25 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/128592 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-12-18sal_Char->char in canvas..codemakerNoel Grandin
Change-Id: Iaf46b42a17bc00da0f86daeafea7b5346c4a6360 Reviewed-on: https://gerrit.libreoffice.org/85372 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2019-06-10Use hasElements to check Sequence emptiness in chart2..connectivityArkadiy Illarionov
Similar to clang-tidy readability-container-size-empty Change-Id: I41824e8a4ef38d6a35a0ac4421cffcbcd17308e1 Reviewed-on: https://gerrit.libreoffice.org/71802 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2018-12-14tdf#42949 Fix IWYU warnings in chart2/source/controller/*/cxx (1)Gabor Kelemen
Found with bin/find-unneeded-includes Only removal proposals are dealt with here. Cleaned directories are: accessibility, drawinglayer, itemsetwrapper, main, sidebar Change-Id: I612eae9dec636d57a3a3a00102d74b964da5b54c Reviewed-on: https://gerrit.libreoffice.org/64307 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
2018-12-05loplugin:unnecessaryparen include more assignmentsNoel Grandin
Change-Id: I9fb8366634b31230b732dd38a98f800075529714 Reviewed-on: https://gerrit.libreoffice.org/64510 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-10-23loplugin:includeform: chart2Stephan Bergmann
Change-Id: I5b455c684e7cd689d5160135246f3400363c7d40
2017-09-11clang-tidy modernize-use-emplace in c*Noel Grandin
Change-Id: I419d1f67ba301050d05981db2a3d6178878684a9 Reviewed-on: https://gerrit.libreoffice.org/42110 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-06-20loplugin:oncevar chart2Noel Grandin
Change-Id: I2dd0939db440b5357225395e88680dd0b0fdbf43 Reviewed-on: https://gerrit.libreoffice.org/38970 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2017-02-15Drop :: prefix from std in c*/Tor Lillqvist
Change-Id: If078cda95fa6ccd37270a5e9d81cfa0b84e71155 Reviewed-on: https://gerrit.libreoffice.org/34324 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Tor Lillqvist <tml@collabora.com>
2015-11-10loplugin:nullptr (automatic rewrite)Stephan Bergmann
Change-Id: I71de514405bb9bcc746c1ab9633e7fe659888943
2015-09-30Fix typosAndrea Gelmini
Change-Id: Icf15b5ea2e5b9cd62645bab2f9ccaada948322a7 Reviewed-on: https://gerrit.libreoffice.org/18940 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2015-03-18create new 'enum class' SotClipboardFormatId to unify typesNoel Grandin
of which there are several. There are some issues here I am unsure of - the SW and SC and CHART2 modules essentially ignore the enum values and assign their own ids Perhaps I should change them to use the common values and create new enum values where necessary? - the sc/qa/ and sq/qa/ and starmath/qa/ code was doing some dodgy stuff. I translated the code to pass down the stuff numeric values to the underlying code, but perhaps further fixing is necessary? Change-Id: Ic06d723e404481e3f1bca67c43b70321b764d923
2014-06-19fdo#71076, fdo#71767: Preserve number formats when charts are copied.Kohei Yoshida
Change-Id: If5ae8852152012483237e7602e56a0c46ea8748a
2013-07-29fdo#62475 removed pointless commentsJelle van der Waa
Change-Id: I3f5e86dba2df950aeb12c895f52d99274c0959aa Reviewed-on: https://gerrit.libreoffice.org/5148 Reviewed-by: Luboš Luňák <l.lunak@suse.cz> Tested-by: Luboš Luňák <l.lunak@suse.cz>
2013-06-29String to OUString and cleanupThomas Arnhold
Change-Id: Idc18c1a6a64edea3399c8747ec0f096a2f964b68
2013-04-07mass removal of rtl:: prefixes for O(U)String*Luboš Luňák
Modules sal, salhelper, cppu, cppuhelper, codemaker (selectively) and odk have kept them, in order not to break external API (the automatic using declaration is LO-internal). Change-Id: I588fc9e0c45b914f824f91c0376980621d730f09
2013-03-06fdo#60148 Clean up warnings from the Clang compiler pluginnccuong
Change-Id: I08d755677c46c476710ecbd067ed9f7e2f54a671 loplugin: clean warnings: unused variables, incorrect indentation and log area. Reviewed-on: https://gerrit.libreoffice.org/2544 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
2012-07-18re-base on ALv2 code. Includes:Michael Meeks
118568: switch to using ucpp Patch contributed by Juergen Schmidt http://svn.apache.org/viewvc?view=revision&revision=1209396
2012-04-06Replaced equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(...)) with == operatorSzabolcs Dezsi
2012-04-06Replaced equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(...)) with == operatorSzabolcs Dezsi
Pattern used: find . -name "*.cxx" -exec sed -i 's/\( *\)\(else if\|if\) *( *\([^!()|&]*\)\.equalsAsciiL( *RTL_CONSTASCII_STRINGPARAM *( *\([^)]*\)) *) *)$/\1\2 ( \3 == \4 )/' \{\} \;
2011-11-27remove include of pch header in chart2Norbert Thiebaud
2011-03-10Merge commit 'ooo/DEV300_m101' into integration/dev300_m101Kohei Yoshida
2010-12-10chart46: #i25706# implement date axis - cleanupIngrid Halama [iha]
2010-10-13Add vim/emacs modelines to all source filesSebastian Spaeth
Fixes #fdo30794 Based on bin/add-modelines script (originally posted in mail 1286706307.1871.1399280959@webmail.messagingengine.com) Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
2010-02-12changefileheader2: #i109125#: change source file copyright notice from Sun ↵Jens-Heiner Rechtien
Microsystems to Oracle; remove CVS style keywords (RCSfile, Revision)
2008-04-10INTEGRATION: CWS changefileheader (1.2.126); FILE MERGEDRüdiger Timm
2008/03/28 16:43:49 rt 1.2.126.1: #i87441# Change license header to LPGL v3.
2007-05-22INTEGRATION: CWS chart2mst3 (1.1.2); FILE ADDEDVladimir Glazounov
2007/02/08 21:25:36 iha 1.1.2.3: resync m195 -> m202 2006/07/03 12:17:26 bm 1.1.2.2: DND_ACTION_NONE is a define not a member of an event 2006/06/29 13:53:54 bm 1.1.2.1: dropping dragged cell-ranges from calc here. Missing: determine if the originating document is the container