Kaydet (Commit) 90db24c3 authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in SvxAutoCorrectLanguageLists

and cleanup horrendous weirdity in the interaction between LoadXXX and
SetXXX methods

Change-Id: I1253579a27e835f6f79c39acf72eac85278275d6
Reviewed-on: https://gerrit.libreoffice.org/49184Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 7dcf9db7
...@@ -1920,9 +1920,6 @@ SvxAutoCorrectLanguageLists::SvxAutoCorrectLanguageLists( ...@@ -1920,9 +1920,6 @@ SvxAutoCorrectLanguageLists::SvxAutoCorrectLanguageLists(
SvxAutoCorrectLanguageLists::~SvxAutoCorrectLanguageLists() SvxAutoCorrectLanguageLists::~SvxAutoCorrectLanguageLists()
{ {
delete pCplStt_ExcptLst;
delete pWrdStt_ExcptLst;
delete pAutocorr_List;
} }
bool SvxAutoCorrectLanguageLists::IsFileChanged_Imp() bool SvxAutoCorrectLanguageLists::IsFileChanged_Imp()
...@@ -1944,18 +1941,15 @@ bool SvxAutoCorrectLanguageLists::IsFileChanged_Imp() ...@@ -1944,18 +1941,15 @@ bool SvxAutoCorrectLanguageLists::IsFileChanged_Imp()
// then remove all the lists fast! // then remove all the lists fast!
if( CplSttLstLoad & nFlags && pCplStt_ExcptLst ) if( CplSttLstLoad & nFlags && pCplStt_ExcptLst )
{ {
delete pCplStt_ExcptLst; pCplStt_ExcptLst.reset();
pCplStt_ExcptLst = nullptr;
} }
if( WrdSttLstLoad & nFlags && pWrdStt_ExcptLst ) if( WrdSttLstLoad & nFlags && pWrdStt_ExcptLst )
{ {
delete pWrdStt_ExcptLst; pWrdStt_ExcptLst.reset();
pWrdStt_ExcptLst = nullptr;
} }
if( ChgWordLstLoad & nFlags && pAutocorr_List ) if( ChgWordLstLoad & nFlags && pAutocorr_List )
{ {
delete pAutocorr_List; pAutocorr_List.reset();
pAutocorr_List = nullptr;
} }
nFlags &= ~(CplSttLstLoad | WrdSttLstLoad | ChgWordLstLoad ); nFlags &= ~(CplSttLstLoad | WrdSttLstLoad | ChgWordLstLoad );
} }
...@@ -1965,14 +1959,14 @@ bool SvxAutoCorrectLanguageLists::IsFileChanged_Imp() ...@@ -1965,14 +1959,14 @@ bool SvxAutoCorrectLanguageLists::IsFileChanged_Imp()
} }
void SvxAutoCorrectLanguageLists::LoadXMLExceptList_Imp( void SvxAutoCorrectLanguageLists::LoadXMLExceptList_Imp(
SvStringsISortDtor*& rpLst, std::unique_ptr<SvStringsISortDtor>& rpLst,
const sal_Char* pStrmName, const sal_Char* pStrmName,
tools::SvRef<SotStorage>& rStg) tools::SvRef<SotStorage>& rStg)
{ {
if( rpLst ) if( rpLst )
rpLst->clear(); rpLst->clear();
else else
rpLst = new SvStringsISortDtor; rpLst.reset( new SvStringsISortDtor );
{ {
const OUString sStrmName( pStrmName, strlen(pStrmName), RTL_TEXTENCODING_MS_1252 ); const OUString sStrmName( pStrmName, strlen(pStrmName), RTL_TEXTENCODING_MS_1252 );
...@@ -2098,7 +2092,7 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList() ...@@ -2098,7 +2092,7 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList()
if( pAutocorr_List ) if( pAutocorr_List )
pAutocorr_List->DeleteAndDestroyAll(); pAutocorr_List->DeleteAndDestroyAll();
else else
pAutocorr_List = new SvxAutocorrWordList(); pAutocorr_List.reset( new SvxAutocorrWordList() );
try try
{ {
...@@ -2113,7 +2107,7 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList() ...@@ -2113,7 +2107,7 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList()
// get parser // get parser
uno::Reference< xml::sax::XFastParser > xParser = xml::sax::FastParser::create(xContext); uno::Reference< xml::sax::XFastParser > xParser = xml::sax::FastParser::create(xContext);
SAL_INFO("editeng", "AutoCorrect Import" ); SAL_INFO("editeng", "AutoCorrect Import" );
uno::Reference< xml::sax::XFastDocumentHandler > xFilter = new SvXMLAutoCorrectImport( xContext, pAutocorr_List, rAutoCorrect, xStg ); uno::Reference< xml::sax::XFastDocumentHandler > xFilter = new SvXMLAutoCorrectImport( xContext, pAutocorr_List.get(), rAutoCorrect, xStg );
uno::Reference< xml::sax::XFastTokenHandler > xTokenHandler = static_cast< xml::sax::XFastTokenHandler* >( new SvXMLAutoCorrectTokenHandler ); uno::Reference< xml::sax::XFastTokenHandler > xTokenHandler = static_cast< xml::sax::XFastTokenHandler* >( new SvXMLAutoCorrectTokenHandler );
// connect parser and filter // connect parser and filter
...@@ -2133,34 +2127,37 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList() ...@@ -2133,34 +2127,37 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList()
&aModifiedDate, &aModifiedTime ); &aModifiedDate, &aModifiedTime );
aLastCheckTime = tools::Time( tools::Time::SYSTEM ); aLastCheckTime = tools::Time( tools::Time::SYSTEM );
return pAutocorr_List; return pAutocorr_List.get();
}
void SvxAutoCorrectLanguageLists::SetAutocorrWordList( SvxAutocorrWordList* pList )
{
if( pAutocorr_List && pList != pAutocorr_List )
delete pAutocorr_List;
pAutocorr_List = pList;
if( !pAutocorr_List )
{
OSL_ENSURE( false, "No valid list" );
pAutocorr_List = new SvxAutocorrWordList();
}
nFlags |= ChgWordLstLoad;
} }
const SvxAutocorrWordList* SvxAutoCorrectLanguageLists::GetAutocorrWordList() const SvxAutocorrWordList* SvxAutoCorrectLanguageLists::GetAutocorrWordList()
{ {
if( !( ChgWordLstLoad & nFlags ) || IsFileChanged_Imp() ) if( !( ChgWordLstLoad & nFlags ) || IsFileChanged_Imp() )
SetAutocorrWordList( LoadAutocorrWordList() ); {
return pAutocorr_List; LoadAutocorrWordList();
if( !pAutocorr_List )
{
OSL_ENSURE( false, "No valid list" );
pAutocorr_List.reset( new SvxAutocorrWordList() );
}
nFlags |= ChgWordLstLoad;
}
return pAutocorr_List.get();
} }
SvStringsISortDtor* SvxAutoCorrectLanguageLists::GetCplSttExceptList() SvStringsISortDtor* SvxAutoCorrectLanguageLists::GetCplSttExceptList()
{ {
if( !( CplSttLstLoad & nFlags ) || IsFileChanged_Imp() ) if( !( CplSttLstLoad & nFlags ) || IsFileChanged_Imp() )
SetCplSttExceptList( LoadCplSttExceptList() ); {
return pCplStt_ExcptLst; LoadCplSttExceptList();
if( !pCplStt_ExcptLst )
{
OSL_ENSURE( false, "No valid list" );
pCplStt_ExcptLst.reset( new SvStringsISortDtor );
}
nFlags |= CplSttLstLoad;
}
return pCplStt_ExcptLst.get();
} }
bool SvxAutoCorrectLanguageLists::AddToCplSttExceptList(const OUString& rNew) bool SvxAutoCorrectLanguageLists::AddToCplSttExceptList(const OUString& rNew)
...@@ -2216,7 +2213,7 @@ SvStringsISortDtor* SvxAutoCorrectLanguageLists::LoadCplSttExceptList() ...@@ -2216,7 +2213,7 @@ SvStringsISortDtor* SvxAutoCorrectLanguageLists::LoadCplSttExceptList()
catch (const css::ucb::ContentCreationException&) catch (const css::ucb::ContentCreationException&)
{ {
} }
return pCplStt_ExcptLst; return pCplStt_ExcptLst.get();
} }
void SvxAutoCorrectLanguageLists::SaveCplSttExceptList() void SvxAutoCorrectLanguageLists::SaveCplSttExceptList()
...@@ -2234,20 +2231,6 @@ void SvxAutoCorrectLanguageLists::SaveCplSttExceptList() ...@@ -2234,20 +2231,6 @@ void SvxAutoCorrectLanguageLists::SaveCplSttExceptList()
aLastCheckTime = tools::Time( tools::Time::SYSTEM ); aLastCheckTime = tools::Time( tools::Time::SYSTEM );
} }
void SvxAutoCorrectLanguageLists::SetCplSttExceptList( SvStringsISortDtor* pList )
{
if( pCplStt_ExcptLst && pList != pCplStt_ExcptLst )
delete pCplStt_ExcptLst;
pCplStt_ExcptLst = pList;
if( !pCplStt_ExcptLst )
{
OSL_ENSURE( false, "No valid list" );
pCplStt_ExcptLst = new SvStringsISortDtor;
}
nFlags |= CplSttLstLoad;
}
SvStringsISortDtor* SvxAutoCorrectLanguageLists::LoadWrdSttExceptList() SvStringsISortDtor* SvxAutoCorrectLanguageLists::LoadWrdSttExceptList()
{ {
try try
...@@ -2261,7 +2244,7 @@ SvStringsISortDtor* SvxAutoCorrectLanguageLists::LoadWrdSttExceptList() ...@@ -2261,7 +2244,7 @@ SvStringsISortDtor* SvxAutoCorrectLanguageLists::LoadWrdSttExceptList()
{ {
SAL_WARN("editeng", "SvxAutoCorrectLanguageLists::LoadWrdSttExceptList: Caught " << e); SAL_WARN("editeng", "SvxAutoCorrectLanguageLists::LoadWrdSttExceptList: Caught " << e);
} }
return pWrdStt_ExcptLst; return pWrdStt_ExcptLst.get();
} }
void SvxAutoCorrectLanguageLists::SaveWrdSttExceptList() void SvxAutoCorrectLanguageLists::SaveWrdSttExceptList()
...@@ -2278,24 +2261,19 @@ void SvxAutoCorrectLanguageLists::SaveWrdSttExceptList() ...@@ -2278,24 +2261,19 @@ void SvxAutoCorrectLanguageLists::SaveWrdSttExceptList()
aLastCheckTime = tools::Time( tools::Time::SYSTEM ); aLastCheckTime = tools::Time( tools::Time::SYSTEM );
} }
void SvxAutoCorrectLanguageLists::SetWrdSttExceptList( SvStringsISortDtor* pList )
{
if( pWrdStt_ExcptLst && pList != pWrdStt_ExcptLst )
delete pWrdStt_ExcptLst;
pWrdStt_ExcptLst = pList;
if( !pWrdStt_ExcptLst )
{
OSL_ENSURE( false, "No valid list" );
pWrdStt_ExcptLst = new SvStringsISortDtor;
}
nFlags |= WrdSttLstLoad;
}
SvStringsISortDtor* SvxAutoCorrectLanguageLists::GetWrdSttExceptList() SvStringsISortDtor* SvxAutoCorrectLanguageLists::GetWrdSttExceptList()
{ {
if( !( WrdSttLstLoad & nFlags ) || IsFileChanged_Imp() ) if( !( WrdSttLstLoad & nFlags ) || IsFileChanged_Imp() )
SetWrdSttExceptList( LoadWrdSttExceptList() ); {
return pWrdStt_ExcptLst; LoadWrdSttExceptList();
if( !pWrdStt_ExcptLst )
{
OSL_ENSURE( false, "No valid list" );
pWrdStt_ExcptLst.reset( new SvStringsISortDtor );
}
nFlags |= WrdSttLstLoad;
}
return pWrdStt_ExcptLst.get();
} }
void SvxAutoCorrectLanguageLists::RemoveStream_Imp( const OUString& rName ) void SvxAutoCorrectLanguageLists::RemoveStream_Imp( const OUString& rName )
...@@ -2371,7 +2349,7 @@ void SvxAutoCorrectLanguageLists::MakeUserStorage_Impl() ...@@ -2371,7 +2349,7 @@ void SvxAutoCorrectLanguageLists::MakeUserStorage_Impl()
{ {
OUString sXMLWord ( pXMLImplWrdStt_ExcptLstStr ); OUString sXMLWord ( pXMLImplWrdStt_ExcptLstStr );
OUString sXMLSentence ( pXMLImplCplStt_ExcptLstStr ); OUString sXMLSentence ( pXMLImplCplStt_ExcptLstStr );
SvStringsISortDtor *pTmpWordList = nullptr; std::unique_ptr<SvStringsISortDtor> pTmpWordList;
if (xSrcStg->IsContained( sXMLWord ) ) if (xSrcStg->IsContained( sXMLWord ) )
LoadXMLExceptList_Imp( pTmpWordList, pXMLImplWrdStt_ExcptLstStr, xSrcStg ); LoadXMLExceptList_Imp( pTmpWordList, pXMLImplWrdStt_ExcptLstStr, xSrcStg );
...@@ -2379,8 +2357,7 @@ void SvxAutoCorrectLanguageLists::MakeUserStorage_Impl() ...@@ -2379,8 +2357,7 @@ void SvxAutoCorrectLanguageLists::MakeUserStorage_Impl()
if (pTmpWordList) if (pTmpWordList)
{ {
SaveExceptList_Imp( *pTmpWordList, pXMLImplWrdStt_ExcptLstStr, xDstStg, true ); SaveExceptList_Imp( *pTmpWordList, pXMLImplWrdStt_ExcptLstStr, xDstStg, true );
pTmpWordList->clear(); pTmpWordList.reset();
pTmpWordList = nullptr;
} }
...@@ -2432,7 +2409,7 @@ bool SvxAutoCorrectLanguageLists::MakeBlocklist_Imp( SotStorage& rStg ) ...@@ -2432,7 +2409,7 @@ bool SvxAutoCorrectLanguageLists::MakeBlocklist_Imp( SotStorage& rStg )
xWriter->setOutputStream(xOut); xWriter->setOutputStream(xOut);
uno::Reference<xml::sax::XDocumentHandler> xHandler(xWriter, uno::UNO_QUERY); uno::Reference<xml::sax::XDocumentHandler> xHandler(xWriter, uno::UNO_QUERY);
rtl::Reference< SvXMLAutoCorrectExport > xExp( new SvXMLAutoCorrectExport( xContext, pAutocorr_List, pXMLImplAutocorr_ListStr, xHandler ) ); rtl::Reference< SvXMLAutoCorrectExport > xExp( new SvXMLAutoCorrectExport( xContext, pAutocorr_List.get(), pXMLImplAutocorr_ListStr, xHandler ) );
xExp->exportDoc( XML_BLOCK_LIST ); xExp->exportDoc( XML_BLOCK_LIST );
......
...@@ -165,15 +165,15 @@ class EDITENG_DLLPUBLIC SvxAutoCorrectLanguageLists ...@@ -165,15 +165,15 @@ class EDITENG_DLLPUBLIC SvxAutoCorrectLanguageLists
Date aModifiedDate; Date aModifiedDate;
tools::Time aModifiedTime, aLastCheckTime; tools::Time aModifiedTime, aLastCheckTime;
SvStringsISortDtor* pCplStt_ExcptLst; std::unique_ptr<SvStringsISortDtor> pCplStt_ExcptLst;
SvStringsISortDtor* pWrdStt_ExcptLst; std::unique_ptr<SvStringsISortDtor> pWrdStt_ExcptLst;
SvxAutocorrWordList* pAutocorr_List; std::unique_ptr<SvxAutocorrWordList> pAutocorr_List;
SvxAutoCorrect& rAutoCorrect; SvxAutoCorrect& rAutoCorrect;
long nFlags; long nFlags;
bool IsFileChanged_Imp(); bool IsFileChanged_Imp();
void LoadXMLExceptList_Imp( SvStringsISortDtor*& rpLst, void LoadXMLExceptList_Imp( std::unique_ptr<SvStringsISortDtor>& rpLst,
const sal_Char* pStrmName, const sal_Char* pStrmName,
tools::SvRef<SotStorage>& rStg); tools::SvRef<SotStorage>& rStg);
static void SaveExceptList_Imp( const SvStringsISortDtor& rLst, static void SaveExceptList_Imp( const SvStringsISortDtor& rLst,
...@@ -193,14 +193,12 @@ public: ...@@ -193,14 +193,12 @@ public:
// Load, Set, Get - the replacement list // Load, Set, Get - the replacement list
SvxAutocorrWordList* LoadAutocorrWordList(); SvxAutocorrWordList* LoadAutocorrWordList();
void SetAutocorrWordList( SvxAutocorrWordList* pList );
const SvxAutocorrWordList* GetAutocorrWordList(); const SvxAutocorrWordList* GetAutocorrWordList();
// Load, Set, Get - the exception list for Capital letter at the // Load, Set, Get - the exception list for Capital letter at the
// beginning of a sentence // beginning of a sentence
SvStringsISortDtor* LoadCplSttExceptList(); SvStringsISortDtor* LoadCplSttExceptList();
void SaveCplSttExceptList(); void SaveCplSttExceptList();
void SetCplSttExceptList( SvStringsISortDtor* pList );
SvStringsISortDtor* GetCplSttExceptList(); SvStringsISortDtor* GetCplSttExceptList();
bool AddToCplSttExceptList(const OUString& rNew); bool AddToCplSttExceptList(const OUString& rNew);
...@@ -208,7 +206,6 @@ public: ...@@ -208,7 +206,6 @@ public:
// beginning of a word. // beginning of a word.
SvStringsISortDtor* LoadWrdSttExceptList(); SvStringsISortDtor* LoadWrdSttExceptList();
void SaveWrdSttExceptList(); void SaveWrdSttExceptList();
void SetWrdSttExceptList( SvStringsISortDtor* pList );
SvStringsISortDtor* GetWrdSttExceptList(); SvStringsISortDtor* GetWrdSttExceptList();
bool AddToWrdSttExceptList(const OUString& rNew); bool AddToWrdSttExceptList(const OUString& rNew);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment