include/xmloff/xmltkmap.hxx | 6 - svtools/inc/pch/precompiled_svt.hxx | 1 svtools/source/contnr/fileview.cxx | 115 +++++------------------------------- xmloff/inc/pch/precompiled_xo.hxx | 1 xmloff/source/core/xmltkmap.cxx | 26 ++++---- xmloff/source/style/impastpl.cxx | 103 ++++++++++++++++---------------- xmloff/source/style/impastpl.hxx | 83 +++++++++++++++---------- xmloff/source/style/xmlnumfi.cxx | 62 ++++++------------- 8 files changed, 154 insertions(+), 243 deletions(-)
New commits: commit febd02b705c06929810835c5e2f677bfc91fb52c Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 7 15:35:01 2015 +0200 xmloff: replace boost::ptr_set with std::set<std::unique_ptr> boost::ptr_set was actually quite nice here, pity about the obnoxious warnings... Change-Id: I46973635fd26e4f1db96f2806c211b83436bef5e diff --git a/xmloff/inc/pch/precompiled_xo.hxx b/xmloff/inc/pch/precompiled_xo.hxx index 685fa2b..49a133d 100644 --- a/xmloff/inc/pch/precompiled_xo.hxx +++ b/xmloff/inc/pch/precompiled_xo.hxx @@ -34,7 +34,6 @@ #include <boost/bind.hpp> #include <boost/iterator_adaptors.hpp> #include <boost/noncopyable.hpp> -#include <boost/ptr_container/ptr_set.hpp> #include <boost/ptr_container/ptr_vector.hpp> #include <memory> #include <boost/scoped_ptr.hpp> diff --git a/xmloff/source/style/impastpl.cxx b/xmloff/source/style/impastpl.cxx index c0054f0..7c98e3e 100644 --- a/xmloff/source/style/impastpl.cxx +++ b/xmloff/source/style/impastpl.cxx @@ -60,7 +60,7 @@ XMLAutoStyleFamily::~XMLAutoStyleFamily() {} void XMLAutoStyleFamily::ClearEntries() { - maParentSet.clear(); + m_ParentSet.clear(); } static OUString @@ -506,16 +506,17 @@ bool SvXMLAutoStylePoolP_Impl::Add( XMLAutoStyleFamily &rFamily = **iter; - XMLAutoStylePoolParent aTmp(rParentName); - XMLAutoStyleFamily::ParentSetType::iterator it2 = rFamily.maParentSet.find(aTmp); - if (it2 == rFamily.maParentSet.end()) + std::unique_ptr<XMLAutoStylePoolParent> pTmp(new XMLAutoStylePoolParent(rParentName)); + auto it2 = rFamily.m_ParentSet.find(pTmp); + if (it2 == rFamily.m_ParentSet.end()) { std::pair<XMLAutoStyleFamily::ParentSetType::iterator,bool> r = - rFamily.maParentSet.insert(new XMLAutoStylePoolParent(rParentName)); + rFamily.m_ParentSet.insert(std::unique_ptr<XMLAutoStylePoolParent>( + new XMLAutoStylePoolParent(rParentName))); it2 = r.first; } - XMLAutoStylePoolParent& rParent = *it2; + XMLAutoStylePoolParent& rParent = **it2; bool bRet = false; if (rParent.Add(rFamily, rProperties, rName, bDontSeek)) @@ -539,16 +540,17 @@ bool SvXMLAutoStylePoolP_Impl::AddNamed( XMLAutoStyleFamily &rFamily = **iter; - XMLAutoStylePoolParent aTmp(rParentName); - XMLAutoStyleFamily::ParentSetType::iterator it2 = rFamily.maParentSet.find(aTmp); - if (it2 == rFamily.maParentSet.end()) + std::unique_ptr<XMLAutoStylePoolParent> pTmp(new XMLAutoStylePoolParent(rParentName)); + auto it2 = rFamily.m_ParentSet.find(pTmp); + if (it2 == rFamily.m_ParentSet.end()) { std::pair<XMLAutoStyleFamily::ParentSetType::iterator,bool> r = - rFamily.maParentSet.insert(new XMLAutoStylePoolParent(rParentName)); + rFamily.m_ParentSet.insert(std::unique_ptr<XMLAutoStylePoolParent>( + new XMLAutoStylePoolParent(rParentName))); it2 = r.first; } - XMLAutoStylePoolParent& rParent = *it2; + XMLAutoStylePoolParent& rParent = **it2; bool bRet = false; if (rParent.AddNamed(rFamily, rProperties, rName)) @@ -575,11 +577,11 @@ OUString SvXMLAutoStylePoolP_Impl::Find( sal_Int32 nFamily, assert(iter != m_FamilySet.end()); // family must be known XMLAutoStyleFamily const& rFamily = **iter; - XMLAutoStylePoolParent aTmp( rParent ); - XMLAutoStyleFamily::ParentSetType::const_iterator it2 = rFamily.maParentSet.find(aTmp); - if (it2 != rFamily.maParentSet.end()) + std::unique_ptr<XMLAutoStylePoolParent> pTmp(new XMLAutoStylePoolParent(rParent)); + auto const it2 = rFamily.m_ParentSet.find(pTmp); + if (it2 != rFamily.m_ParentSet.end()) { - sName = it2->Find(rFamily, rProperties); + sName = (*it2)->Find(rFamily, rProperties); } return sName; @@ -628,8 +630,7 @@ void SvXMLAutoStylePoolP_Impl::exportXML( // which contains a parent-name and a SvXMLAutoStylePoolProperties_Impl std::vector<AutoStylePoolExport> aExpStyles(nCount); - XMLAutoStyleFamily::ParentSetType::iterator it = rFamily.maParentSet.begin(), itEnd = rFamily.maParentSet.end(); - for (; it != itEnd; ++it) + for (auto const& it : rFamily.m_ParentSet) { XMLAutoStylePoolParent& rParent = *it; size_t nProperties = rParent.GetPropertiesList().size(); diff --git a/xmloff/source/style/impastpl.hxx b/xmloff/source/style/impastpl.hxx index 5093281..0989389 100644 --- a/xmloff/source/style/impastpl.hxx +++ b/xmloff/source/style/impastpl.hxx @@ -20,7 +20,6 @@ #ifndef INCLUDED_XMLOFF_SOURCE_STYLE_IMPASTPL_HXX #define INCLUDED_XMLOFF_SOURCE_STYLE_IMPASTPL_HXX -#include <boost/ptr_container/ptr_set.hpp> #include <sal/types.h> #include <rtl/ustring.hxx> #include <set> @@ -37,39 +36,10 @@ class SvXMLAutoStylePoolP; class XMLAutoStylePoolParent; +class XMLAutoStyleFamily; class SvXMLExportPropertyMapper; class SvXMLExport; -// Implementationclass for stylefamily-information - -struct XMLAutoStyleFamily : boost::noncopyable -{ - typedef boost::ptr_set<XMLAutoStylePoolParent> ParentSetType; - typedef std::set<OUString> NameSetType; - - sal_uInt32 mnFamily; - OUString maStrFamilyName; - rtl::Reference < SvXMLExportPropertyMapper > mxMapper; - - ParentSetType maParentSet; - NameSetType maNameSet; - sal_uInt32 mnCount; - sal_uInt32 mnName; - OUString maStrPrefix; - bool mbAsFamily; - - XMLAutoStyleFamily( sal_Int32 nFamily, const OUString& rStrName, - const rtl::Reference<SvXMLExportPropertyMapper>& rMapper, - const OUString& rStrPrefix, bool bAsFamily = true ); - - explicit XMLAutoStyleFamily( sal_Int32 nFamily ); - ~XMLAutoStyleFamily(); - - friend bool operator<(const XMLAutoStyleFamily& r1, const XMLAutoStyleFamily& r2); - - void ClearEntries(); -}; - // Properties of a pool class XMLAutoStylePoolProperties @@ -128,6 +98,44 @@ public: bool operator< (const XMLAutoStylePoolParent& rOther) const; }; +// Implementationclass for stylefamily-information + +struct XMLAutoStyleFamily : boost::noncopyable +{ + struct XMLAutoStylePoolParent_Less + { + bool operator()(std::unique_ptr<XMLAutoStylePoolParent> const& lhs, + std::unique_ptr<XMLAutoStylePoolParent> const& rhs) const + { + return (*lhs) < (*rhs); + } + }; + typedef std::set<std::unique_ptr<XMLAutoStylePoolParent>, XMLAutoStylePoolParent_Less> ParentSetType; + typedef std::set<OUString> NameSetType; + + sal_uInt32 mnFamily; + OUString maStrFamilyName; + rtl::Reference<SvXMLExportPropertyMapper> mxMapper; + + ParentSetType m_ParentSet; + NameSetType maNameSet; + sal_uInt32 mnCount; + sal_uInt32 mnName; + OUString maStrPrefix; + bool mbAsFamily; + + XMLAutoStyleFamily( sal_Int32 nFamily, const OUString& rStrName, + const rtl::Reference<SvXMLExportPropertyMapper>& rMapper, + const OUString& rStrPrefix, bool bAsFamily = true ); + + explicit XMLAutoStyleFamily( sal_Int32 nFamily ); + ~XMLAutoStyleFamily(); + + friend bool operator<(const XMLAutoStyleFamily& r1, const XMLAutoStyleFamily& r2); + + void ClearEntries(); +}; + // Implementationclass of SvXMLAutoStylePool class SvXMLAutoStylePoolP_Impl commit 18c502b0049a5330f870ad43e1c49b46cbae81fc Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 7 15:19:39 2015 +0200 xmloff: replace boost::ptr_set with std::set<std::unqiue_ptr> Change-Id: Iaacebe5d88ad8b124f0891f5a7763b9868a6022a diff --git a/xmloff/source/style/impastpl.cxx b/xmloff/source/style/impastpl.cxx index 0bc2d51..c0054f0 100644 --- a/xmloff/source/style/impastpl.cxx +++ b/xmloff/source/style/impastpl.cxx @@ -419,43 +419,43 @@ void SvXMLAutoStylePoolP_Impl::AddFamily( } #if OSL_DEBUG_LEVEL > 0 - XMLAutoStyleFamily aTemporary( nFamily ); - FamilySetType::iterator aFind = maFamilySet.find(aTemporary); - if( aFind != maFamilySet.end() ) + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + if (iter != m_FamilySet.end()) { // FIXME: do we really intend to replace the previous nFamily // entry in this case ? - SAL_WARN_IF( aFind->mxMapper != rMapper, "xmloff", + SAL_WARN_IF( (*iter)->mxMapper != rMapper, "xmloff", "Adding duplicate family " << rStrName << " with mismatching mapper ! " << - typeid(*aFind->mxMapper.get()).name() << " " << + typeid((*iter)->mxMapper.get()).name() << " " << typeid(*rMapper.get()).name() ); } #endif - XMLAutoStyleFamily *pFamily = new XMLAutoStyleFamily( nFamily, rStrName, rMapper, aPrefix, bAsFamily ); - maFamilySet.insert(pFamily); + std::unique_ptr<XMLAutoStyleFamily> pFamily( + new XMLAutoStyleFamily(nFamily, rStrName, rMapper, aPrefix, bAsFamily)); + m_FamilySet.insert(std::move(pFamily)); } void SvXMLAutoStylePoolP_Impl::SetFamilyPropSetMapper( sal_Int32 nFamily, const rtl::Reference < SvXMLExportPropertyMapper > & rMapper ) { - - XMLAutoStyleFamily aTemporary( nFamily ); - FamilySetType::iterator aFind = maFamilySet.find(aTemporary); - if (aFind != maFamilySet.end()) - aFind->mxMapper = rMapper; + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + if (iter != m_FamilySet.end()) + (*iter)->mxMapper = rMapper; } // Adds a name to list void SvXMLAutoStylePoolP_Impl::RegisterName( sal_Int32 nFamily, const OUString& rName ) { - XMLAutoStyleFamily aTmp( nFamily ); - FamilySetType::iterator aFind = maFamilySet.find(aTmp); - assert(aFind != maFamilySet.end()); // family must be known + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + assert(iter != m_FamilySet.end()); // family must be known // SAL_DEBUG("SvXMLAutoStylePoolP_Impl::RegisterName: " << nFamily << ", '" << rName << "'"); - aFind->maNameSet.insert(rName); + (*iter)->maNameSet.insert(rName); } @@ -471,7 +471,7 @@ void SvXMLAutoStylePoolP_Impl::GetRegisteredNames( vector<OUString> aNames; // iterate over families - for (FamilySetType::iterator aJ = maFamilySet.begin(); aJ != maFamilySet.end(); ++aJ) + for (auto const& aJ : m_FamilySet) { XMLAutoStyleFamily &rFamily = *aJ; @@ -500,11 +500,11 @@ bool SvXMLAutoStylePoolP_Impl::Add( OUString& rName, sal_Int32 nFamily, const OUString& rParentName, const ::std::vector< XMLPropertyState >& rProperties, bool bDontSeek ) { - XMLAutoStyleFamily aTemporary( nFamily ); - FamilySetType::iterator aFind = maFamilySet.find(aTemporary); - assert(aFind != maFamilySet.end()); // family must be known + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + assert(iter != m_FamilySet.end()); // family must be known - XMLAutoStyleFamily &rFamily = *aFind; + XMLAutoStyleFamily &rFamily = **iter; XMLAutoStylePoolParent aTmp(rParentName); XMLAutoStyleFamily::ParentSetType::iterator it2 = rFamily.maParentSet.find(aTmp); @@ -533,11 +533,11 @@ bool SvXMLAutoStylePoolP_Impl::AddNamed( { // get family and parent the same way as in Add() - XMLAutoStyleFamily aTemporary( nFamily ); - FamilySetType::iterator aFind = maFamilySet.find(aTemporary); - assert(aFind != maFamilySet.end()); // family must be known + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + assert(iter != m_FamilySet.end()); // family must be known - XMLAutoStyleFamily &rFamily = *aFind; + XMLAutoStyleFamily &rFamily = **iter; XMLAutoStylePoolParent aTmp(rParentName); XMLAutoStyleFamily::ParentSetType::iterator it2 = rFamily.maParentSet.find(aTmp); @@ -570,11 +570,11 @@ OUString SvXMLAutoStylePoolP_Impl::Find( sal_Int32 nFamily, { OUString sName; - XMLAutoStyleFamily aTemporary( nFamily ); - FamilySetType::const_iterator const iter = maFamilySet.find(aTemporary); - assert(iter != maFamilySet.end()); // family must be known + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + assert(iter != m_FamilySet.end()); // family must be known - XMLAutoStyleFamily const& rFamily = *iter; + XMLAutoStyleFamily const& rFamily = **iter; XMLAutoStylePoolParent aTmp( rParent ); XMLAutoStyleFamily::ParentSetType::const_iterator it2 = rFamily.maParentSet.find(aTmp); if (it2 != rFamily.maParentSet.end()) @@ -614,11 +614,11 @@ void SvXMLAutoStylePoolP_Impl::exportXML( const SvXMLAutoStylePoolP *pAntiImpl) const { // Get list of parents for current family (nFamily) - XMLAutoStyleFamily aTmp( nFamily ); - FamilySetType::const_iterator aFind = maFamilySet.find(aTmp); - assert(aFind != maFamilySet.end()); // family must be known + std::unique_ptr<XMLAutoStyleFamily> pTemp(new XMLAutoStyleFamily(nFamily)); + auto const iter = m_FamilySet.find(pTemp); + assert(iter != m_FamilySet.end()); // family must be known - const XMLAutoStyleFamily &rFamily = *aFind; + const XMLAutoStyleFamily &rFamily = **iter; sal_uInt32 nCount = rFamily.mnCount; if (!nCount) @@ -754,7 +754,7 @@ void SvXMLAutoStylePoolP_Impl::exportXML( void SvXMLAutoStylePoolP_Impl::ClearEntries() { - for (FamilySetType::iterator aI = maFamilySet.begin(); aI != maFamilySet.end(); ++aI) + for (auto & aI : m_FamilySet) aI->ClearEntries(); } diff --git a/xmloff/source/style/impastpl.hxx b/xmloff/source/style/impastpl.hxx index 3e5670c..5093281 100644 --- a/xmloff/source/style/impastpl.hxx +++ b/xmloff/source/style/impastpl.hxx @@ -24,6 +24,7 @@ #include <sal/types.h> #include <rtl/ustring.hxx> #include <set> +#include <memory> #include <vector> #include <com/sun/star/uno/Reference.h> #include <com/sun/star/xml/sax/XAttributeList.hpp> @@ -131,11 +132,19 @@ public: class SvXMLAutoStylePoolP_Impl { + struct XMLAutoStyleFamily_Less + { + bool operator()(std::unique_ptr<XMLAutoStyleFamily> const& lhs, + std::unique_ptr<XMLAutoStyleFamily> const& rhs) const + { + return (*lhs) < (*rhs); + } + }; // A set that finds and sorts based only on mnFamily - typedef boost::ptr_set<XMLAutoStyleFamily> FamilySetType; + typedef std::set<std::unique_ptr<XMLAutoStyleFamily>, XMLAutoStyleFamily_Less> FamilySetType; SvXMLExport& rExport; - FamilySetType maFamilySet; + FamilySetType m_FamilySet; public: commit 1fa505d8f11ab97cd9cdcf5c6cd11ae357c29408 Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 7 14:45:01 2015 +0200 xmloff: replace boost::ptr_set with std::map Change-Id: Ib4effa78cba72954c21ebadf0c5286b2d5207b4f diff --git a/xmloff/source/style/xmlnumfi.cxx b/xmloff/source/style/xmlnumfi.cxx index 6a80964..49ad1aa 100644 --- a/xmloff/source/style/xmlnumfi.cxx +++ b/xmloff/source/style/xmlnumfi.cxx @@ -45,7 +45,6 @@ #include <xmloff/languagetagodf.hxx> #include <boost/ptr_container/ptr_vector.hpp> -#include <boost/ptr_container/ptr_set.hpp> using namespace ::com::sun::star; using namespace ::xmloff::token; @@ -60,18 +59,7 @@ struct SvXMLNumFmtEntry aName(rN), nKey(nK), bRemoveAfterUse(bR) {} }; -struct SvXMLEmbeddedElement -{ - sal_Int32 nFormatPos; - OUString aText; - - SvXMLEmbeddedElement( sal_Int32 nFP, const OUString& rT ) : - nFormatPos(nFP), aText(rT) {} - - bool operator < ( const SvXMLEmbeddedElement& r ) const { return nFormatPos < r.nFormatPos; } -}; - -typedef boost::ptr_set<SvXMLEmbeddedElement> SvXMLEmbeddedElementArr; +typedef std::map<sal_Int32, OUString> SvXMLEmbeddedElementArr; class SvXMLNumImpData { @@ -117,7 +105,7 @@ struct SvXMLNumberInfo bool bDecReplace; bool bExpSign; double fDisplayFactor; - SvXMLEmbeddedElementArr aEmbeddedElements; + SvXMLEmbeddedElementArr m_EmbeddedElements; SvXMLNumberInfo() { @@ -1059,25 +1047,18 @@ void SvXMLNumFmtElementContext::Characters( const OUString& rChars ) void SvXMLNumFmtElementContext::AddEmbeddedElement( sal_Int32 nFormatPos, const OUString& rContent ) { - if ( !rContent.isEmpty() ) - { - SvXMLEmbeddedElement* pObj = new SvXMLEmbeddedElement( nFormatPos, rContent ); - if ( !aNumInfo.aEmbeddedElements.insert( pObj ).second ) - { - // there's already an element at this position - append text to existing element + if (rContent.isEmpty()) + return; - delete pObj; - for (SvXMLEmbeddedElementArr::iterator it = aNumInfo.aEmbeddedElements.begin(); - it != aNumInfo.aEmbeddedElements.end(); ++it) - { - pObj = &*it; - if ( pObj->nFormatPos == nFormatPos ) - { - pObj->aText += rContent; - break; - } - } - } + auto const iter(aNumInfo.m_EmbeddedElements.find(nFormatPos)); + if (iter == aNumInfo.m_EmbeddedElements.end()) + { + aNumInfo.m_EmbeddedElements.insert(std::make_pair(nFormatPos, rContent)); + } + else + { + // there's already an element at this position - append text to existing element + iter->second += rContent; } } @@ -1818,7 +1799,7 @@ void SvXMLNumFormatContext::AddNumber( const SvXMLNumberInfo& rInfo ) nGenPrec = 0; // generate format without decimals... bool bGrouping = rInfo.bGrouping; - sal_uInt16 nEmbeddedCount = rInfo.aEmbeddedElements.size(); + size_t const nEmbeddedCount = rInfo.m_EmbeddedElements.size(); if ( nEmbeddedCount ) bGrouping = false; // grouping and embedded characters can't be used together @@ -1870,9 +1851,8 @@ void SvXMLNumFormatContext::AddNumber( const SvXMLNumberInfo& rInfo ) nZeroPos = aNumStr.getLength(); } - // aEmbeddedElements is sorted - last entry has the largest position (leftmost) - const SvXMLEmbeddedElement* pLastObj = &*rInfo.aEmbeddedElements.rbegin(); - sal_Int32 nLastFormatPos = pLastObj->nFormatPos; + // m_EmbeddedElements is sorted - last entry has the largest position (leftmost) + sal_Int32 const nLastFormatPos = rInfo.m_EmbeddedElements.rbegin()->first; if ( nLastFormatPos >= nZeroPos ) { // add '#' characters so all embedded texts are really embedded in digits @@ -1886,12 +1866,10 @@ void SvXMLNumFormatContext::AddNumber( const SvXMLNumberInfo& rInfo ) nZeroPos = nZeroPos + nAddCount; } - // aEmbeddedElements is sorted with ascending positions - loop is from right to left - for (SvXMLEmbeddedElementArr::const_iterator it = rInfo.aEmbeddedElements.begin(); - it != rInfo.aEmbeddedElements.end(); ++it) + // m_EmbeddedElements is sorted with ascending positions - loop is from right to left + for (auto const& it : rInfo.m_EmbeddedElements) { - const SvXMLEmbeddedElement* pObj = &*it; - sal_Int32 nFormatPos = pObj->nFormatPos; + sal_Int32 const nFormatPos = it.first; sal_Int32 nInsertPos = nZeroPos - nFormatPos; if ( nFormatPos >= 0 && nInsertPos >= 0 ) { @@ -1899,7 +1877,7 @@ void SvXMLNumFormatContext::AddNumber( const SvXMLNumberInfo& rInfo ) // be recognized as thousands separator in French. aNumStr.insert(nInsertPos, '"'); - aNumStr.insert(nInsertPos, pObj->aText); + aNumStr.insert(nInsertPos, it.second); aNumStr.insert(nInsertPos, '"'); } } commit 3de4481f654e5158870aa97c9faea66db6d972bb Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 7 14:25:16 2015 +0200 xmloff: replace boost::ptr_set with std::set Change-Id: Idc03bf695d94f47f2057629b4175c2bdf3a83f22 diff --git a/include/xmloff/xmltkmap.hxx b/include/xmloff/xmltkmap.hxx index 70d2918..d0f2288 100644 --- a/include/xmloff/xmltkmap.hxx +++ b/include/xmloff/xmltkmap.hxx @@ -27,7 +27,6 @@ class SvXMLTokenMap_Impl; -class SvXMLTokenMapEntry_Impl; #define XML_TOK_UNKNOWN 0xffffU #define XML_TOKEN_MAP_END { 0xffffU, ::xmloff::token::XML_TOKEN_INVALID, 0U } @@ -41,10 +40,7 @@ struct SvXMLTokenMapEntry class XMLOFF_DLLPUBLIC SvXMLTokenMap { - SvXMLTokenMap_Impl *pImpl; - - SAL_DLLPRIVATE SvXMLTokenMapEntry_Impl *_Find( - sal_uInt16 nKind, const OUString& rName ) const; + SvXMLTokenMap_Impl *m_pImpl; public: diff --git a/xmloff/source/core/xmltkmap.cxx b/xmloff/source/core/xmltkmap.cxx index da04fd2..361cbf6 100644 --- a/xmloff/source/core/xmltkmap.cxx +++ b/xmloff/source/core/xmltkmap.cxx @@ -20,7 +20,8 @@ #include <rtl/ustring.hxx> #include <xmloff/xmltkmap.hxx> #include <xmloff/xmltoken.hxx> -#include <boost/ptr_container/ptr_set.hpp> + +#include <set> using namespace ::xmloff::token; @@ -55,16 +56,18 @@ public: } }; -class SvXMLTokenMap_Impl : public boost::ptr_set<SvXMLTokenMapEntry_Impl> {}; +class SvXMLTokenMap_Impl : public std::set<SvXMLTokenMapEntry_Impl> {}; -SvXMLTokenMapEntry_Impl *SvXMLTokenMap::_Find( sal_uInt16 nKeyPrefix, - const OUString& rLName ) const +SvXMLTokenMapEntry_Impl const* lcl_Find( + SvXMLTokenMap_Impl const* pImpl, + sal_uInt16 nKeyPrefix, + const OUString& rLName ) { - SvXMLTokenMapEntry_Impl *pRet = 0; + SvXMLTokenMapEntry_Impl const* pRet = nullptr; SvXMLTokenMapEntry_Impl aTst( nKeyPrefix, rLName ); SvXMLTokenMap_Impl::iterator it = pImpl->find( aTst ); - if( it != pImpl->end() ) + if (it != pImpl->end()) { pRet = &*it; } @@ -72,25 +75,26 @@ SvXMLTokenMapEntry_Impl *SvXMLTokenMap::_Find( sal_uInt16 nKeyPrefix, return pRet; } -SvXMLTokenMap::SvXMLTokenMap( const SvXMLTokenMapEntry *pMap ) : - pImpl( new SvXMLTokenMap_Impl ) +SvXMLTokenMap::SvXMLTokenMap( const SvXMLTokenMapEntry *pMap ) + : m_pImpl( new SvXMLTokenMap_Impl ) { while( pMap->eLocalName != XML_TOKEN_INVALID ) { - pImpl->insert( new SvXMLTokenMapEntry_Impl( *pMap ) ); + m_pImpl->insert(SvXMLTokenMapEntry_Impl( *pMap )); pMap++; } } SvXMLTokenMap::~SvXMLTokenMap() { - delete pImpl; + delete m_pImpl; } sal_uInt16 SvXMLTokenMap::Get( sal_uInt16 nKeyPrefix, const OUString& rLName ) const { - SvXMLTokenMapEntry_Impl *pEntry = _Find( nKeyPrefix, rLName ); + SvXMLTokenMapEntry_Impl const*const pEntry( + lcl_Find(m_pImpl, nKeyPrefix, rLName)); if( pEntry ) return pEntry->GetToken(); else commit d7b4e6b434885c630ee94e8233fb142cbf0a0107 Author: Michael Stahl <mst...@redhat.com> Date: Fri Aug 7 13:56:14 2015 +0200 svtools: convert boost::ptr_set to std::unordered_map Change-Id: I2b5a57978e693f3b08726a09a0d1f6cc32d9f593 diff --git a/svtools/inc/pch/precompiled_svt.hxx b/svtools/inc/pch/precompiled_svt.hxx index 023fb2c..851c041 100644 --- a/svtools/inc/pch/precompiled_svt.hxx +++ b/svtools/inc/pch/precompiled_svt.hxx @@ -22,7 +22,6 @@ #include <basegfx/range/b2drange.hxx> #include <boost/noncopyable.hpp> #include <boost/optional.hpp> -#include <boost/ptr_container/ptr_set.hpp> #include <boost/ptr_container/ptr_vector.hpp> #include <memory> #include <boost/scoped_ptr.hpp> diff --git a/svtools/source/contnr/fileview.cxx b/svtools/source/contnr/fileview.cxx index c85b1dd..38fa3c4 100644 --- a/svtools/source/contnr/fileview.cxx +++ b/svtools/source/contnr/fileview.cxx @@ -53,6 +53,7 @@ #include <algorithm> #include <vector> +#include <unordered_map> #include <tools/urlobj.hxx> #include <comphelper/processfactory.hxx> #include <comphelper/string.hxx> @@ -71,7 +72,6 @@ #include <unotools/intlwrapper.hxx> #include <unotools/syslocale.hxx> #include <svl/urlfilter.hxx> -#include <boost/ptr_container/ptr_set.hpp> #include <boost/scoped_ptr.hpp> #include <o3tl/typed_flags_set.hxx> @@ -228,88 +228,17 @@ public: virtual void ExcecuteContextMenuAction( sal_uInt16 nSelectedPopentry ) SAL_OVERRIDE; }; -// class HashedEntry -------------------------------------------------- - -class HashedEntry -{ // just a special String which can be compared on equality much faster -protected: - OUString maName; - sal_Int32 mnHashCode; -public: - inline HashedEntry( const OUString& rName ); - inline HashedEntry( const INetURLObject& rURL ); - virtual ~HashedEntry(); - - inline bool operator ==( const HashedEntry& rRef ) const; - inline bool operator !=( const HashedEntry& rRef ) const; - inline bool operator <( const HashedEntry& rRef ) const; -}; - -inline HashedEntry::HashedEntry( const OUString& rName ): maName( rName ), mnHashCode( rName.hashCode() ) -{ -} - -inline HashedEntry::HashedEntry( const INetURLObject& rURL ): - maName( rURL.GetMainURL( INetURLObject::NO_DECODE ) ), - mnHashCode( maName.hashCode() ) -{ -} - -HashedEntry::~HashedEntry() -{ -} - -inline bool HashedEntry::operator ==( const HashedEntry& rRef ) const -{ - return mnHashCode == rRef.mnHashCode && maName == rRef.maName; -} - -inline bool HashedEntry::operator !=( const HashedEntry& rRef ) const -{ - return mnHashCode != rRef.mnHashCode || maName != rRef.maName; -} - -inline bool HashedEntry::operator <( const HashedEntry& rRef ) const -{ - if( mnHashCode == rRef.mnHashCode ) - return maName.reverseCompareTo( rRef.maName ) < 0; - else - return mnHashCode < rRef.mnHashCode; -} - -// class NameTranslationEntry ----------------------------------------- - -class NameTranslationEntry : public HashedEntry -{// a fast comparable String and another String, which is used to get a substitution for a given String -protected: - OUString maTranslatedName; -public: - inline NameTranslationEntry( const OString& rOriginalName, const OString& rTranslatedName ); - - inline const OUString& GetTranslation() const; -}; - -inline NameTranslationEntry::NameTranslationEntry( const OString& rOrg, const OString& rTrans ) - : HashedEntry(OStringToOUString(rOrg, RTL_TEXTENCODING_ASCII_US)) - , maTranslatedName(OStringToOUString(rTrans, RTL_TEXTENCODING_UTF8)) -{ -} - -inline const OUString& NameTranslationEntry::GetTranslation() const -{ - return maTranslatedName; -} - // class NameTranslationList ----------------------------------------- // provides a list of _unique_ Entries -class NameTranslationList : protected boost::ptr_set<HashedEntry> +class NameTranslationList { // contains a list of substitutes of strings for a given folder (as URL) // explanation of the circumstances see in remarks for Init(); protected: INetURLObject maTransFile; // URL of file with translation entries - HashedEntry maHashedURL; // for future purposes when dealing with a set of cached - // NameTranslationLists + /// for future purposes when dealing with a set of cached NameTranslationLists + OUString m_HashedURL; private: + std::unordered_map<OUString, OUString, OUStringHash> m_Translation; const OUString maTransFileName; void Init(); // reads the translation file and fills the (internal) list @@ -318,14 +247,11 @@ public: // rBaseURL: path to folder for which the translation of the entries // should be done - using boost::ptr_set<HashedEntry>::operator==; - using boost::ptr_set<HashedEntry>::operator!=; - inline bool operator !=( const HashedEntry& rRef ) const; - const OUString* Translate( const OUString& rName ) const; // returns NULL, if rName can't be found inline const OUString& GetTransTableFileName() const; + OUString const& GetHashedURL() { return m_HashedURL; } // returns the name for the file, which contains the translation strings }; @@ -356,7 +282,12 @@ void NameTranslationList::Init() sal_uInt16 nKeyCnt = aConfig.GetKeyCount(); for( sal_uInt16 nCnt = 0 ; nCnt < nKeyCnt ; ++nCnt ) - insert( new NameTranslationEntry( aConfig.GetKeyName( nCnt ), aConfig.ReadKey( nCnt ) ) ); + { + m_Translation.insert(std::make_pair( + OStringToOUString(aConfig.GetKeyName(nCnt), RTL_TEXTENCODING_ASCII_US), + OStringToOUString(aConfig.ReadKey(nCnt), RTL_TEXTENCODING_UTF8) + )); + } } } catch( Exception const & ) {} @@ -364,29 +295,17 @@ void NameTranslationList::Init() NameTranslationList::NameTranslationList( const INetURLObject& rBaseURL ): maTransFile( rBaseURL ), - maHashedURL( rBaseURL ), + m_HashedURL(rBaseURL.GetMainURL(INetURLObject::NO_DECODE)), maTransFileName( OUString(".nametranslation.table") ) { maTransFile.insertName( maTransFileName ); Init(); } -inline bool NameTranslationList::operator !=( const HashedEntry& rRef ) const -{ - return maHashedURL != rRef; -} - const OUString* NameTranslationList::Translate( const OUString& rName ) const { - HashedEntry aRef( rName ); - const NameTranslationEntry* pSearch = NULL; - for( const_iterator it = begin(); it != end(); ++it ) - if( (*it) == aRef ) - { - pSearch = static_cast<const NameTranslationEntry*>(&*it); - } - - return pSearch ? &pSearch->GetTranslation() : NULL; + auto const iter(m_Translation.find(rName)); + return (iter != m_Translation.end()) ? &iter->second : nullptr; } // class NameTranslator_Impl ------------------------------------------ @@ -1525,11 +1444,9 @@ NameTranslator_Impl::~NameTranslator_Impl() void NameTranslator_Impl::SetActualFolder( const INetURLObject& rActualFolder ) { - HashedEntry aActFolder( rActualFolder ); - if( mpActFolder ) { - if( *mpActFolder != aActFolder ) + if (mpActFolder->GetHashedURL() != rActualFolder.GetMainURL(INetURLObject::NO_DECODE)) { delete mpActFolder; mpActFolder = new NameTranslationList( rActualFolder ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits