> Attached are 2 patches to covert come SvStrings to std::vector. Hi again,
I realised I missed some size_t conversions and attached is an updated version of the second patch (the first patch is fine). Any comments on the size_t changes/best practice welcomed. Thanks, Brad
From b33943df72286ffa9445bc525ec7ca8094d5256b Mon Sep 17 00:00:00 2001 From: Brad Sowden <c...@sowden.org> Date: Tue, 27 Dec 2011 23:18:50 +1300 Subject: [PATCH] fdo#38831 Convert some SvStrings to std::vector (part 2) --- sw/source/ui/dochdl/gloshdl.cxx | 8 ++--- sw/source/ui/inc/glosbib.hxx | 3 +- sw/source/ui/inc/glosdoc.hxx | 6 ++-- sw/source/ui/misc/glosbib.cxx | 10 ++--- sw/source/ui/misc/glosdoc.cxx | 66 +++++++++++++++------------------------ sw/source/ui/misc/glossary.cxx | 5 +-- sw/source/ui/utlui/gloslst.cxx | 10 +++--- 7 files changed, 43 insertions(+), 65 deletions(-) diff --git a/sw/source/ui/dochdl/gloshdl.cxx b/sw/source/ui/dochdl/gloshdl.cxx index efd545f..2fa3c32 100644 --- a/sw/source/ui/dochdl/gloshdl.cxx +++ b/sw/source/ui/dochdl/gloshdl.cxx @@ -38,8 +38,6 @@ #include <svl/macitem.hxx> #include <sfx2/fcontnr.hxx> #include <sfx2/docfile.hxx> -#define _SVSTDARR_STRINGS -#include <svl/svstdarr.hxx> #include <svl/urihelper.hxx> #include <unotools/transliterationwrapper.hxx> #include <poolfmt.hxx> @@ -138,13 +136,13 @@ void SwGlossaryHdl::SetCurGroup(const String &rGrp, sal_Bool bApi, sal_Bool bAlw String sCurBase = aTemp.getBase(); aTemp.removeSegment(); const String sCurEntryPath = aTemp.GetMainURL(INetURLObject::NO_DECODE); - const SvStrings* pPathArr = rStatGlossaries.GetPathArray(); + const std::vector<String*> *pPathArr = rStatGlossaries.GetPathArray(); sal_uInt16 nCurrentPath = USHRT_MAX; - for(sal_uInt16 nPath = 0; nPath < pPathArr->Count(); nPath++) + for( size_t nPath = 0; nPath < pPathArr->size(); nPath++ ) { if(sCurEntryPath == *(*pPathArr)[nPath]) { - nCurrentPath = nPath; + nCurrentPath = static_cast<sal_uInt16>(nPath); break; } } diff --git a/sw/source/ui/inc/glosbib.hxx b/sw/source/ui/inc/glosbib.hxx index a7f9c49..83c2706 100644 --- a/sw/source/ui/inc/glosbib.hxx +++ b/sw/source/ui/inc/glosbib.hxx @@ -41,7 +41,6 @@ #include <vector> class SwGlossaryHdl; -class SvStrings; class FEdit : public Edit { @@ -104,7 +103,7 @@ protected: public: SwGlossaryGroupDlg(Window * pParent, - const SvStrings* pPathArr, + const std::vector<String*> *pPathArr, SwGlossaryHdl *pGlosHdl); ~SwGlossaryGroupDlg(); diff --git a/sw/source/ui/inc/glosdoc.hxx b/sw/source/ui/inc/glosdoc.hxx index b85e6fa..2cea838 100644 --- a/sw/source/ui/inc/glosdoc.hxx +++ b/sw/source/ui/inc/glosdoc.hxx @@ -66,7 +66,7 @@ class SW_DLLPUBLIC SwGlossaries String m_aPath; String m_sOldErrPath; String m_sErrPath; - SvStrings *m_pPathArr; + std::vector<String*> m_vPathArr; SvStrings *m_pGlosArr; sal_Bool m_bError; @@ -141,8 +141,8 @@ public: void SaveGroupDoc(const String &rGrpName, const String& rLongName ); void UpdateGlosPath(sal_Bool bFull); void ShowError(); - inline sal_uLong IsGlosPathErr() { return m_bError; } - const SvStrings* GetPathArray() const {return m_pPathArr;} + inline sal_uLong IsGlosPathErr() { return m_bError; } + const std::vector<String*>* GetPathArray() const { return &m_vPathArr; } }; diff --git a/sw/source/ui/misc/glosbib.cxx b/sw/source/ui/misc/glosbib.cxx index 18f10d2..fff2a2c 100644 --- a/sw/source/ui/misc/glosbib.cxx +++ b/sw/source/ui/misc/glosbib.cxx @@ -30,7 +30,6 @@ #undef SW_DLLIMPLEMENTATION #endif -#define _SVSTDARR_STRINGS #include <tools/urlobj.hxx> #include <tools/stream.hxx> #include <vcl/msgbox.hxx> @@ -59,7 +58,7 @@ #define RENAME_TOKEN_DELIM (sal_Unicode)1 SwGlossaryGroupDlg::SwGlossaryGroupDlg(Window * pParent, - const SvStrings* pPathArr, + const std::vector<String*> *pPathArr, SwGlossaryHdl *pHdl) : SvxStandardDialog(pParent, SW_RES(DLG_BIB_BASE)), aBibFT( this, SW_RES(FT_BIB)), @@ -81,8 +80,6 @@ SwGlossaryGroupDlg::SwGlossaryGroupDlg(Window * pParent, pRenamedArr(0), pGlosHdl(pHdl) { - sal_uInt16 i; - FreeResource(); long nTabs[] = @@ -100,7 +97,8 @@ SwGlossaryGroupDlg::SwGlossaryGroupDlg(Window * pParent, aNameED.SetModifyHdl(LINK(this, SwGlossaryGroupDlg, ModifyHdl)); aPathLB.SetSelectHdl(LINK(this, SwGlossaryGroupDlg, ModifyHdl)); aRenamePB.SetClickHdl(LINK(this, SwGlossaryGroupDlg, RenameHdl)); - for( i = 0; i < pPathArr->Count(); i++) + + for( size_t i = 0; i < pPathArr->size(); i++ ) { String sPath(*(*pPathArr)[i]); INetURLObject aTempURL(sPath); @@ -119,7 +117,7 @@ SwGlossaryGroupDlg::SwGlossaryGroupDlg(Window * pParent, aPathLB.Enable(sal_True); const sal_uInt16 nCount = pHdl->GetGroupCnt(); - for(i = 0; i < nCount; ++i) + for( sal_uInt16 i = 0; i < nCount; ++i) { String sTitle; String sGroup = pHdl->GetGroupName(i, &sTitle); diff --git a/sw/source/ui/misc/glosdoc.cxx b/sw/source/ui/misc/glosdoc.cxx index 661ddc1..1e35c49 100644 --- a/sw/source/ui/misc/glosdoc.cxx +++ b/sw/source/ui/misc/glosdoc.cxx @@ -144,7 +144,7 @@ sal_Bool SwGlossaries::FindGroupName(String & rGroup) String sTemp( GetGroupName( i )); sal_uInt16 nPath = (sal_uInt16)sTemp.GetToken(1, GLOS_DELIM).ToInt32(); - if( !SWUnoHelper::UCB_IsCaseSensitiveFileName( *(*m_pPathArr)[nPath] ) + if( !SWUnoHelper::UCB_IsCaseSensitiveFileName( *m_vPathArr[nPath] ) && rSCmp.isEqual( rGroup, sTemp.GetToken( 0, GLOS_DELIM) ) ) { rGroup = sTemp; @@ -218,9 +218,9 @@ void SwGlossaries::PutGroupDoc(SwTextBlocks *pBlock) { sal_Bool SwGlossaries::NewGroupDoc(String& rGroupName, const String& rTitle) { sal_uInt16 nNewPath = (sal_uInt16)rGroupName.GetToken(1, GLOS_DELIM).ToInt32(); - if(nNewPath >= m_pPathArr->Count()) + if( static_cast<size_t>(nNewPath) >= m_vPathArr.size() ) return sal_False; - String sNewFilePath(*(*m_pPathArr)[nNewPath]); + String sNewFilePath(*m_vPathArr[nNewPath]); String sNewGroup = lcl_CheckFileName(sNewFilePath, rGroupName.GetToken(0, GLOS_DELIM)); sNewGroup += GLOS_DELIM; sNewGroup += rGroupName.GetToken(1, GLOS_DELIM); @@ -244,9 +244,9 @@ sal_Bool SwGlossaries::RenameGroupDoc( { sal_Bool bRet = sal_False; sal_uInt16 nOldPath = (sal_uInt16)rOldGroup.GetToken(1, GLOS_DELIM).ToInt32(); - if(nOldPath < m_pPathArr->Count()) + if( static_cast<size_t>(nOldPath) < m_vPathArr.size() ) { - String sOldFileURL(*(*m_pPathArr)[nOldPath]); + String sOldFileURL(*m_vPathArr[nOldPath]); sOldFileURL += INET_PATH_TOKEN; sOldFileURL += rOldGroup.GetToken(0, GLOS_DELIM); sOldFileURL += SwGlossaries::GetExtension(); @@ -255,9 +255,9 @@ sal_Bool SwGlossaries::RenameGroupDoc( if(bExist) { sal_uInt16 nNewPath = (sal_uInt16)rNewGroup.GetToken(1, GLOS_DELIM).ToInt32(); - if( nNewPath < m_pPathArr->Count()) + if( static_cast<size_t>(nNewPath) < m_vPathArr.size() ) { - String sNewFilePath(*(*m_pPathArr)[nNewPath]); + String sNewFilePath(*m_vPathArr[nNewPath]); String sNewFileName = lcl_CheckFileName( sNewFilePath, rNewGroup.GetToken(0, GLOS_DELIM)); const sal_uInt16 nFileNameLen = sNewFileName.Len(); @@ -304,9 +304,9 @@ sal_Bool SwGlossaries::RenameGroupDoc( sal_Bool SwGlossaries::DelGroupDoc(const String &rName) { sal_uInt16 nPath = (sal_uInt16)rName.GetToken(1, GLOS_DELIM).ToInt32(); - if(nPath >= m_pPathArr->Count()) + if( static_cast<size_t>(nPath) >= m_vPathArr.size() ) return sal_False; - String sFileURL(*(*m_pPathArr)[nPath]); + String sFileURL(*m_vPathArr[nPath]); String aTmp( rName.GetToken(0, GLOS_DELIM)); String aName(aTmp); aName += GLOS_DELIM; @@ -324,9 +324,6 @@ sal_Bool SwGlossaries::DelGroupDoc(const String &rName) return bRemoved; } -/*------------------------------------------------------------------------ - Description: DTOR -------------------------------------------------------------------------*/ SwGlossaries::~SwGlossaries() { sal_uInt16 nCount = m_pGlosArr? m_pGlosArr->Count() : 0; @@ -337,14 +334,11 @@ SwGlossaries::~SwGlossaries() String *pTmp = (*m_pGlosArr)[i]; delete pTmp; } - nCount = m_pPathArr? m_pPathArr->Count() : 0; - for(i = 0; i < nCount; ++i) - { - String *pTmp = (*m_pPathArr)[i]; - delete pTmp; - } + + for(std::vector<String*>::const_iterator it(m_vPathArr.begin()); it != m_vPathArr.end(); ++it) + delete *it; + delete m_pGlosArr; - delete m_pPathArr; InvalidateUNOOjects(); } @@ -356,9 +350,9 @@ SwTextBlocks* SwGlossaries::GetGlosDoc( const String &rName, sal_Bool bCreate ) { sal_uInt16 nPath = (sal_uInt16)rName.GetToken(1, GLOS_DELIM).ToInt32(); SwTextBlocks *pTmp = 0; - if(nPath < m_pPathArr->Count()) + if( static_cast<size_t>(nPath) < m_vPathArr.size() ) { - String sFileURL(*(*m_pPathArr)[nPath]); + String sFileURL(*m_vPathArr[nPath]); String aTmp( rName.GetToken(0, GLOS_DELIM)); aTmp += SwGlossaries::GetExtension(); sFileURL += INET_PATH_TOKEN; @@ -395,19 +389,18 @@ SvStrings* SwGlossaries::GetNameList() { m_pGlosArr = new SvStrings; String sExt( SwGlossaries::GetExtension() ); - for( sal_uInt16 i = 0; i < m_pPathArr->Count(); i++ ) + for( size_t i = 0; i < m_vPathArr.size(); i++ ) { SvStrings aFiles( 16, 16 ); - SWUnoHelper::UCB_GetFileListOfFolder( *(*m_pPathArr)[i], aFiles, - &sExt ); + SWUnoHelper::UCB_GetFileListOfFolder( *m_vPathArr[i], aFiles, &sExt ); for( sal_uInt16 nFiles = 0, nFEnd = aFiles.Count(); nFiles < nFEnd; ++nFiles ) { String* pTitle = aFiles[ nFiles ]; String sName( pTitle->Copy( 0, pTitle->Len() - sExt.Len() )); sName += GLOS_DELIM; - sName += String::CreateFromInt32( i ); + sName += String::CreateFromInt32( static_cast<sal_Int16>(i) ); m_pGlosArr->Insert( new String(sName), m_pGlosArr->Count() ); // don't need any more these pointers @@ -426,14 +419,9 @@ SvStrings* SwGlossaries::GetNameList() return m_pGlosArr; } -/*------------------------------------------------------------------------ - Description: CTOR -------------------------------------------------------------------------*/ SwGlossaries::SwGlossaries() : - m_pPathArr(0), m_pGlosArr(0) { - m_pPathArr = new SvStrings; UpdateGlosPath(sal_True); } @@ -460,18 +448,14 @@ void SwGlossaries::UpdateGlosPath(sal_Bool bFull) if (bFull || bPathChanged) { m_aPath = aNewPath; - sal_uInt16 nCount = m_pPathArr? m_pPathArr->Count() : 0; - sal_uInt16 i; - for( i = nCount; i; --i) - { - String *pTmp = (*m_pPathArr)[i - 1]; - m_pPathArr->Remove(i - 1); - delete pTmp; - } + for(std::vector<String*>::const_iterator it(m_vPathArr.begin()); it != m_vPathArr.end(); ++it) + delete *it; + m_vPathArr.clear(); + sal_uInt16 nTokenCount = m_aPath.GetTokenCount(SVT_SEARCHPATH_DELIMITER); SvStrings aDirArr; - for( i = 0; i < nTokenCount; i++ ) + for( sal_uInt16 i = 0; i < nTokenCount; i++ ) { String sPth(m_aPath.GetToken(i, SVT_SEARCHPATH_DELIMITER)); sPth = URIHelper::SmartRel2Abs( @@ -490,7 +474,7 @@ void SwGlossaries::UpdateGlosPath(sal_Bool bFull) m_sErrPath += String(aTemp.GetFull()); } else - m_pPathArr->Insert(new String(sPth), m_pPathArr->Count()); + m_vPathArr.push_back(new String(sPth)); } aDirArr.DeleteAndDestroy(0, aDirArr.Count()); @@ -510,7 +494,7 @@ void SwGlossaries::UpdateGlosPath(sal_Bool bFull) if(m_pGlosArr) { - for(i = 0; i < m_pGlosArr->Count(); ++i) + for(sal_uInt16 i = 0; i < m_pGlosArr->Count(); ++i) { delete (String *)(*m_pGlosArr)[i]; } diff --git a/sw/source/ui/misc/glossary.cxx b/sw/source/ui/misc/glossary.cxx index fe61a0b..66c5bea 100644 --- a/sw/source/ui/misc/glossary.cxx +++ b/sw/source/ui/misc/glossary.cxx @@ -32,7 +32,6 @@ #endif #define _SVSTDARR_STRINGSDTOR -#define _SVSTDARR_STRINGS #include <hintids.hxx> #include <vcl/menu.hxx> @@ -941,8 +940,8 @@ void SwGlTreeListBox::RequestHelp( const HelpEvent& rHEvt ) if(!GetParent(pEntry)) { GroupUserData* pData = (GroupUserData*)pEntry->GetUserData(); - const SvStrings* pPathArr = ::GetGlossaries()->GetPathArray(); - if(pPathArr->Count()) + const std::vector<String*>* pPathArr = ::GetGlossaries()->GetPathArray(); + if( !pPathArr->empty() ) { sMsg = (*(*pPathArr)[pData->nPathIdx]); sMsg += INET_PATH_TOKEN; diff --git a/sw/source/ui/utlui/gloslst.cxx b/sw/source/ui/utlui/gloslst.cxx index 1d1720f..860b5d1 100644 --- a/sw/source/ui/utlui/gloslst.cxx +++ b/sw/source/ui/utlui/gloslst.cxx @@ -291,7 +291,7 @@ void SwGlossaryList::Update() ClearGroups(); } SwGlossaries* pGlossaries = ::GetGlossaries(); - const SvStrings* pPathArr = pGlossaries->GetPathArray(); + const std::vector<String*>* pPathArr = pGlossaries->GetPathArray(); String sExt( SwGlossaries::GetExtension() ); if(!bFilled) { @@ -300,7 +300,7 @@ void SwGlossaryList::Update() { String sGrpName = pGlossaries->GetGroupName(i); sal_uInt16 nPath = (sal_uInt16)sGrpName.GetToken(1, GLOS_DELIM).ToInt32(); - if(nPath < pPathArr->Count()) + if( static_cast<size_t>(nPath) < pPathArr->size() ) { AutoTextGroup* pGroup = new AutoTextGroup; pGroup->sName = sGrpName; @@ -322,7 +322,7 @@ void SwGlossaryList::Update() } else { - for(sal_uInt16 nPath = 0; nPath < pPathArr->Count(); nPath++) + for( size_t nPath = 0; nPath < pPathArr->size(); nPath++ ) { SvStringsDtor aFoundGroupNames; SvStrings aFiles( 16, 16 ); @@ -341,7 +341,7 @@ void SwGlossaryList::Update() aFoundGroupNames.Insert( new String(sName), aFoundGroupNames.Count()); sName += GLOS_DELIM; - sName += String::CreateFromInt32( nPath ); + sName += String::CreateFromInt32( static_cast<sal_uInt16>(nPath) ); AutoTextGroup* pFound = FindGroup( sName ); if( !pFound ) { @@ -372,7 +372,7 @@ void SwGlossaryList::Update() GLOS_DELIM).ToInt32(); // nur die Gruppen werden geprueft, die fuer den // aktuellen Teilpfad registriert sind - if(nGroupPath == nPath) + if( nGroupPath == static_cast<sal_uInt16>(nPath) ) { sal_Bool bFound = sal_False; String sCompareGroup = pGroup->sName.GetToken(0, GLOS_DELIM); -- 1.7.7.4
_______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice