Kaydet (Commit) 4b5699bf authored tarafından Noel Grandin's avatar Noel Grandin

loplugin:useuniqueptr in BreakPointList

and simplify the surrounding code

Change-Id: Ie4b24008a1c7d30d43ba562d14ddc14d1a4569b6
Reviewed-on: https://gerrit.libreoffice.org/54845Tested-by: 's avatarJenkins <ci@libreoffice.org>
Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst 0f30c9a1
...@@ -510,13 +510,13 @@ void ModulWindow::ToggleBreakPoint( sal_uLong nLine ) ...@@ -510,13 +510,13 @@ void ModulWindow::ToggleBreakPoint( sal_uLong nLine )
if ( pBrk ) // remove if ( pBrk ) // remove
{ {
m_xModule->ClearBP( static_cast<sal_uInt16>(nLine) ); m_xModule->ClearBP( static_cast<sal_uInt16>(nLine) );
delete GetBreakPoints().remove( pBrk ); GetBreakPoints().remove( pBrk );
} }
else // create one else // create one
{ {
if ( m_xModule->SetBP( static_cast<sal_uInt16>(nLine)) ) if ( m_xModule->SetBP( static_cast<sal_uInt16>(nLine)) )
{ {
GetBreakPoints().InsertSorted( new BreakPoint( nLine ) ); GetBreakPoints().InsertSorted( BreakPoint( nLine ) );
if ( StarBASIC::IsRunning() ) if ( StarBASIC::IsRunning() )
{ {
for ( sal_uInt16 nMethod = 0; nMethod < m_xModule->GetMethods()->Count(); nMethod++ ) for ( sal_uInt16 nMethod = 0; nMethod < m_xModule->GetMethods()->Count(); nMethod++ )
......
...@@ -1358,8 +1358,8 @@ void BreakPointWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Re ...@@ -1358,8 +1358,8 @@ void BreakPointWindow::Paint(vcl::RenderContext& rRenderContext, const tools::Re
for (size_t i = 0, n = GetBreakPoints().size(); i < n; ++i) for (size_t i = 0, n = GetBreakPoints().size(); i < n; ++i)
{ {
BreakPoint& rBrk = *GetBreakPoints().at(i); BreakPoint& rBrk = GetBreakPoints().at(i);
size_t const nLine = rBrk.nLine - 1; sal_uInt16 const nLine = rBrk.nLine - 1;
size_t const nY = nLine*nLineHeight - nCurYOffset; size_t const nY = nLine*nLineHeight - nCurYOffset;
rRenderContext.DrawImage(Point(0, nY) + aBmpOff, aBrk[rBrk.bEnabled]); rRenderContext.DrawImage(Point(0, nY) + aBmpOff, aBrk[rBrk.bEnabled]);
} }
...@@ -1419,11 +1419,11 @@ BreakPoint* BreakPointWindow::FindBreakPoint( const Point& rMousePos ) ...@@ -1419,11 +1419,11 @@ BreakPoint* BreakPointWindow::FindBreakPoint( const Point& rMousePos )
for ( size_t i = 0, n = GetBreakPoints().size(); i < n ; ++i ) for ( size_t i = 0, n = GetBreakPoints().size(); i < n ; ++i )
{ {
BreakPoint* pBrk = GetBreakPoints().at( i ); BreakPoint& rBrk = GetBreakPoints().at( i );
size_t nLine = pBrk->nLine-1; sal_uInt16 nLine = rBrk.nLine-1;
size_t nY = nLine*nLineHeight; size_t nY = nLine*nLineHeight;
if ( ( nYPos > nY ) && ( nYPos < ( nY + nLineHeight ) ) ) if ( ( nYPos > nY ) && ( nYPos < ( nY + nLineHeight ) ) )
return pBrk; return &rBrk;
} }
return nullptr; return nullptr;
} }
...@@ -1469,7 +1469,7 @@ void BreakPointWindow::Command( const CommandEvent& rCEvt ) ...@@ -1469,7 +1469,7 @@ void BreakPointWindow::Command( const CommandEvent& rCEvt )
else if (sCommand == "properties") else if (sCommand == "properties")
{ {
ScopedVclPtrInstance<BreakPointDialog> aBrkDlg(this, GetBreakPoints()); ScopedVclPtrInstance<BreakPointDialog> aBrkDlg(this, GetBreakPoints());
aBrkDlg->SetCurrentBreakPoint( pBrk ); aBrkDlg->SetCurrentBreakPoint( *pBrk );
aBrkDlg->Execute(); aBrkDlg->Execute();
Invalidate(); Invalidate();
} }
......
...@@ -32,87 +32,83 @@ BreakPointList::BreakPointList() ...@@ -32,87 +32,83 @@ BreakPointList::BreakPointList()
BreakPointList::BreakPointList(BreakPointList const & rList) BreakPointList::BreakPointList(BreakPointList const & rList)
{ {
for (size_t i = 0; i < rList.size(); ++i) for (size_t i = 0; i < rList.size(); ++i)
maBreakPoints.push_back( new BreakPoint(*rList.at( i ) ) ); maBreakPoints.push_back( BreakPoint(rList.at( i )) );
} }
BreakPointList::~BreakPointList() BreakPointList::~BreakPointList()
{ {
reset();
} }
void BreakPointList::reset() void BreakPointList::reset()
{ {
for (BreakPoint* pBreakPoint : maBreakPoints)
delete pBreakPoint;
maBreakPoints.clear(); maBreakPoints.clear();
} }
void BreakPointList::transfer(BreakPointList & rList) void BreakPointList::transfer(BreakPointList & rList)
{ {
maBreakPoints.swap(rList.maBreakPoints); maBreakPoints = std::move(rList.maBreakPoints);
rList.reset();
} }
void BreakPointList::InsertSorted(BreakPoint* pNewBrk) void BreakPointList::InsertSorted(BreakPoint aNewBrk)
{ {
for ( std::vector< BreakPoint* >::iterator i = maBreakPoints.begin(); i != maBreakPoints.end(); ++i ) for ( auto it = maBreakPoints.begin(); it != maBreakPoints.end(); ++it )
{ {
if ( pNewBrk->nLine <= (*i)->nLine ) if ( aNewBrk.nLine <= it->nLine )
{ {
DBG_ASSERT( (*i)->nLine != pNewBrk->nLine, "BreakPoint exists already!" ); DBG_ASSERT( it->nLine != aNewBrk.nLine, "BreakPoint exists already!" );
maBreakPoints.insert( i, pNewBrk ); maBreakPoints.insert( it, aNewBrk );
return; return;
} }
} }
// no insert position found => LIST_APPEND // no insert position found => LIST_APPEND
maBreakPoints.push_back( pNewBrk ); maBreakPoints.push_back( aNewBrk );
} }
void BreakPointList::SetBreakPointsInBasic(SbModule* pModule) void BreakPointList::SetBreakPointsInBasic(SbModule* pModule)
{ {
pModule->ClearAllBP(); pModule->ClearAllBP();
for (BreakPoint* pBrk : maBreakPoints) for (BreakPoint& rBrk : maBreakPoints)
{ {
if ( pBrk->bEnabled ) if ( rBrk.bEnabled )
pModule->SetBP( static_cast<sal_uInt16>(pBrk->nLine) ); pModule->SetBP( rBrk.nLine );
} }
} }
BreakPoint* BreakPointList::FindBreakPoint(size_t nLine) BreakPoint* BreakPointList::FindBreakPoint(sal_uInt16 nLine)
{ {
for (BreakPoint* pBrk : maBreakPoints) for (BreakPoint& rBrk : maBreakPoints)
{ {
if ( pBrk->nLine == nLine ) if ( rBrk.nLine == nLine )
return pBrk; return &rBrk;
} }
return nullptr; return nullptr;
} }
void BreakPointList::AdjustBreakPoints(size_t nLine, bool bInserted) void BreakPointList::AdjustBreakPoints(sal_uInt16 nLine, bool bInserted)
{ {
for ( size_t i = 0; i < maBreakPoints.size(); ) for ( size_t i = 0; i < maBreakPoints.size(); )
{ {
BreakPoint* pBrk = maBreakPoints[ i ]; BreakPoint& rBrk = maBreakPoints[ i ];
bool bDelBrk = false; bool bDelBrk = false;
if ( pBrk->nLine == nLine ) if ( rBrk.nLine == nLine )
{ {
if ( bInserted ) if ( bInserted )
pBrk->nLine++; rBrk.nLine++;
else else
bDelBrk = true; bDelBrk = true;
} }
else if ( pBrk->nLine > nLine ) else if ( rBrk.nLine > nLine )
{ {
if ( bInserted ) if ( bInserted )
pBrk->nLine++; rBrk.nLine++;
else else
pBrk->nLine--; rBrk.nLine--;
} }
if ( bDelBrk ) if ( bDelBrk )
{ {
delete remove( pBrk ); maBreakPoints.erase(maBreakPoints.begin() + i);
} }
else else
{ {
...@@ -123,23 +119,28 @@ void BreakPointList::AdjustBreakPoints(size_t nLine, bool bInserted) ...@@ -123,23 +119,28 @@ void BreakPointList::AdjustBreakPoints(size_t nLine, bool bInserted)
void BreakPointList::ResetHitCount() void BreakPointList::ResetHitCount()
{ {
for (BreakPoint* pBrk : maBreakPoints) for (BreakPoint& rBrk : maBreakPoints)
{ {
pBrk->nHitCount = 0; rBrk.nHitCount = 0;
} }
} }
BreakPoint* BreakPointList::remove(BreakPoint* ptr) void BreakPointList::remove(BreakPoint* ptr)
{ {
for ( std::vector< BreakPoint* >::iterator i = maBreakPoints.begin(); i != maBreakPoints.end(); ++i ) for ( auto i = maBreakPoints.begin(); i != maBreakPoints.end(); ++i )
{ {
if ( ptr == *i ) if ( ptr == &(*i) )
{ {
maBreakPoints.erase( i ); maBreakPoints.erase( i );
return ptr; return;
} }
} }
return nullptr; return;
}
void BreakPointList::remove(size_t idx)
{
maBreakPoints.erase( maBreakPoints.begin() + idx );
} }
size_t BreakPointList::size() const size_t BreakPointList::size() const
...@@ -147,14 +148,14 @@ size_t BreakPointList::size() const ...@@ -147,14 +148,14 @@ size_t BreakPointList::size() const
return maBreakPoints.size(); return maBreakPoints.size();
} }
BreakPoint* BreakPointList::at(size_t i) BreakPoint& BreakPointList::at(size_t i)
{ {
return i < maBreakPoints.size() ? maBreakPoints[ i ] : nullptr; return maBreakPoints[ i ];
} }
const BreakPoint* BreakPointList::at(size_t i) const const BreakPoint& BreakPointList::at(size_t i) const
{ {
return i < maBreakPoints.size() ? maBreakPoints[ i ] : nullptr; return maBreakPoints[ i ];
} }
} // namespace basctl } // namespace basctl
......
...@@ -33,11 +33,11 @@ namespace basctl ...@@ -33,11 +33,11 @@ namespace basctl
struct BreakPoint struct BreakPoint
{ {
bool bEnabled; bool bEnabled;
size_t nLine; sal_uInt16 nLine;
size_t nStopAfter; size_t nStopAfter;
size_t nHitCount; size_t nHitCount;
explicit BreakPoint(size_t nL) explicit BreakPoint(sal_uInt16 nL)
: bEnabled(true) : bEnabled(true)
, nLine(nL) , nLine(nL)
, nStopAfter(0) , nStopAfter(0)
...@@ -50,7 +50,7 @@ class BreakPointList ...@@ -50,7 +50,7 @@ class BreakPointList
{ {
private: private:
void operator =(BreakPointList) = delete; void operator =(BreakPointList) = delete;
std::vector<BreakPoint*> maBreakPoints; std::vector<BreakPoint> maBreakPoints;
public: public:
BreakPointList(); BreakPointList();
...@@ -63,16 +63,17 @@ public: ...@@ -63,16 +63,17 @@ public:
void transfer(BreakPointList & rList); void transfer(BreakPointList & rList);
void InsertSorted(BreakPoint* pBrk); void InsertSorted(BreakPoint pBrk);
BreakPoint* FindBreakPoint(size_t nLine); BreakPoint* FindBreakPoint(sal_uInt16 nLine);
void AdjustBreakPoints(size_t nLine, bool bInserted); void AdjustBreakPoints(sal_uInt16 nLine, bool bInserted);
void SetBreakPointsInBasic(SbModule* pModule); void SetBreakPointsInBasic(SbModule* pModule);
void ResetHitCount(); void ResetHitCount();
size_t size() const; size_t size() const;
BreakPoint* at(size_t i); BreakPoint& at(size_t i);
const BreakPoint* at(size_t i) const; const BreakPoint& at(size_t i) const;
BreakPoint* remove(BreakPoint* ptr); void remove(BreakPoint* ptr);
void remove(size_t i);
}; };
} // namespace basctl } // namespace basctl
......
...@@ -78,8 +78,8 @@ BreakPointDialog::BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkPn ...@@ -78,8 +78,8 @@ BreakPointDialog::BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkPn
m_pComboBox->SetUpdateMode(false); m_pComboBox->SetUpdateMode(false);
for ( size_t i = 0, n = m_aModifiedBreakPointList.size(); i < n; ++i ) for ( size_t i = 0, n = m_aModifiedBreakPointList.size(); i < n; ++i )
{ {
BreakPoint* pBrk = m_aModifiedBreakPointList.at( i ); BreakPoint& rBrk = m_aModifiedBreakPointList.at( i );
OUString aEntryStr( "# " + OUString::number(pBrk->nLine) ); OUString aEntryStr( "# " + OUString::number(rBrk.nLine) );
m_pComboBox->InsertEntry( aEntryStr ); m_pComboBox->InsertEntry( aEntryStr );
} }
m_pComboBox->SetUpdateMode(true); m_pComboBox->SetUpdateMode(true);
...@@ -100,7 +100,8 @@ BreakPointDialog::BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkPn ...@@ -100,7 +100,8 @@ BreakPointDialog::BreakPointDialog( vcl::Window* pParent, BreakPointList& rBrkPn
m_pNumericField->SetModifyHdl( LINK( this, BreakPointDialog, EditModifyHdl ) ); m_pNumericField->SetModifyHdl( LINK( this, BreakPointDialog, EditModifyHdl ) );
m_pComboBox->SetText( m_pComboBox->GetEntry( 0 ) ); m_pComboBox->SetText( m_pComboBox->GetEntry( 0 ) );
UpdateFields( m_aModifiedBreakPointList.at( 0 ) ); if (m_aModifiedBreakPointList.size())
UpdateFields( m_aModifiedBreakPointList.at( 0 ) );
CheckButtons(); CheckButtons();
} }
...@@ -121,11 +122,11 @@ void BreakPointDialog::dispose() ...@@ -121,11 +122,11 @@ void BreakPointDialog::dispose()
ModalDialog::dispose(); ModalDialog::dispose();
} }
void BreakPointDialog::SetCurrentBreakPoint( BreakPoint const * pBrk ) void BreakPointDialog::SetCurrentBreakPoint( BreakPoint const & rBrk )
{ {
OUString aStr( "# " + OUString::number(pBrk->nLine) ); OUString aStr( "# " + OUString::number(rBrk.nLine) );
m_pComboBox->SetText( aStr ); m_pComboBox->SetText( aStr );
UpdateFields( pBrk ); UpdateFields( rBrk );
} }
void BreakPointDialog::CheckButtons() void BreakPointDialog::CheckButtons()
...@@ -152,9 +153,8 @@ void BreakPointDialog::CheckButtons() ...@@ -152,9 +153,8 @@ void BreakPointDialog::CheckButtons()
IMPL_LINK( BreakPointDialog, CheckBoxHdl, Button *, pButton, void ) IMPL_LINK( BreakPointDialog, CheckBoxHdl, Button *, pButton, void )
{ {
::CheckBox * pChkBx = static_cast<::CheckBox*>(pButton); ::CheckBox * pChkBx = static_cast<::CheckBox*>(pButton);
BreakPoint* pBrk = GetSelectedBreakPoint(); BreakPoint& rBrk = GetSelectedBreakPoint();
if ( pBrk ) rBrk.bEnabled = pChkBx->IsChecked();
pBrk->bEnabled = pChkBx->IsChecked();
} }
IMPL_LINK( BreakPointDialog, ComboBoxHighlightHdl, ComboBox&, rBox, void ) IMPL_LINK( BreakPointDialog, ComboBoxHighlightHdl, ComboBox&, rBox, void )
...@@ -164,9 +164,8 @@ IMPL_LINK( BreakPointDialog, ComboBoxHighlightHdl, ComboBox&, rBox, void ) ...@@ -164,9 +164,8 @@ IMPL_LINK( BreakPointDialog, ComboBoxHighlightHdl, ComboBox&, rBox, void )
m_pDelButton->Enable(); m_pDelButton->Enable();
sal_Int32 nEntry = rBox.GetEntryPos( rBox.GetText() ); sal_Int32 nEntry = rBox.GetEntryPos( rBox.GetText() );
BreakPoint* pBrk = m_aModifiedBreakPointList.at( nEntry ); BreakPoint& rBrk = m_aModifiedBreakPointList.at( nEntry );
DBG_ASSERT( pBrk, "No matching break point to list?" ); UpdateFields( rBrk );
UpdateFields( pBrk );
} }
...@@ -176,9 +175,8 @@ IMPL_LINK( BreakPointDialog, EditModifyHdl, Edit&, rEdit, void ) ...@@ -176,9 +175,8 @@ IMPL_LINK( BreakPointDialog, EditModifyHdl, Edit&, rEdit, void )
CheckButtons(); CheckButtons();
else if (&rEdit == m_pNumericField) else if (&rEdit == m_pNumericField)
{ {
BreakPoint* pBrk = GetSelectedBreakPoint(); BreakPoint& rBrk = GetSelectedBreakPoint();
if ( pBrk ) rBrk.nStopAfter = rEdit.GetText().toInt32();
pBrk->nStopAfter = rEdit.GetText().toInt32();
} }
} }
...@@ -198,11 +196,11 @@ IMPL_LINK( BreakPointDialog, ButtonHdl, Button *, pButton, void ) ...@@ -198,11 +196,11 @@ IMPL_LINK( BreakPointDialog, ButtonHdl, Button *, pButton, void )
bool bValid = lcl_ParseText( aText, nLine ); bool bValid = lcl_ParseText( aText, nLine );
if ( bValid ) if ( bValid )
{ {
BreakPoint* pBrk = new BreakPoint( nLine ); BreakPoint aBrk( nLine );
pBrk->bEnabled = m_pCheckBox->IsChecked(); aBrk.bEnabled = m_pCheckBox->IsChecked();
pBrk->nStopAfter = static_cast<size_t>(m_pNumericField->GetValue()); aBrk.nStopAfter = static_cast<size_t>(m_pNumericField->GetValue());
m_aModifiedBreakPointList.InsertSorted( pBrk ); m_aModifiedBreakPointList.InsertSorted( aBrk );
OUString aEntryStr( "# " + OUString::number(pBrk->nLine) ); OUString aEntryStr( "# " + OUString::number(aBrk.nLine) );
m_pComboBox->InsertEntry( aEntryStr ); m_pComboBox->InsertEntry( aEntryStr );
if (SfxDispatcher* pDispatcher = GetDispatcher()) if (SfxDispatcher* pDispatcher = GetDispatcher())
pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED ); pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
...@@ -217,37 +215,29 @@ IMPL_LINK( BreakPointDialog, ButtonHdl, Button *, pButton, void ) ...@@ -217,37 +215,29 @@ IMPL_LINK( BreakPointDialog, ButtonHdl, Button *, pButton, void )
else if (pButton == m_pDelButton) else if (pButton == m_pDelButton)
{ {
sal_Int32 nEntry = m_pComboBox->GetEntryPos( m_pComboBox->GetText() ); sal_Int32 nEntry = m_pComboBox->GetEntryPos( m_pComboBox->GetText() );
BreakPoint* pBrk = m_aModifiedBreakPointList.at( nEntry ); m_aModifiedBreakPointList.remove( nEntry );
if ( pBrk ) m_pComboBox->RemoveEntryAt(nEntry);
{ if ( nEntry && nEntry >= m_pComboBox->GetEntryCount() )
delete m_aModifiedBreakPointList.remove( pBrk ); nEntry--;
m_pComboBox->RemoveEntryAt(nEntry); m_pComboBox->SetText( m_pComboBox->GetEntry( nEntry ) );
if ( nEntry && nEntry >= m_pComboBox->GetEntryCount() ) if (SfxDispatcher* pDispatcher = GetDispatcher())
nEntry--; pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
m_pComboBox->SetText( m_pComboBox->GetEntry( nEntry ) );
if (SfxDispatcher* pDispatcher = GetDispatcher())
pDispatcher->Execute( SID_BASICIDE_BRKPNTSCHANGED );
}
CheckButtons(); CheckButtons();
} }
} }
void BreakPointDialog::UpdateFields( BreakPoint const * pBrk ) void BreakPointDialog::UpdateFields( BreakPoint const & rBrk )
{ {
if ( pBrk ) m_pCheckBox->Check( rBrk.bEnabled );
{ m_pNumericField->SetValue( rBrk.nStopAfter );
m_pCheckBox->Check( pBrk->bEnabled );
m_pNumericField->SetValue( pBrk->nStopAfter );
}
} }
BreakPoint* BreakPointDialog::GetSelectedBreakPoint() BreakPoint& BreakPointDialog::GetSelectedBreakPoint()
{ {
size_t nEntry = m_pComboBox->GetEntryPos( m_pComboBox->GetText() ); size_t nEntry = m_pComboBox->GetEntryPos( m_pComboBox->GetText() );
BreakPoint* pBrk = m_aModifiedBreakPointList.at( nEntry ); return m_aModifiedBreakPointList.at( nEntry );
return pBrk;
} }
} // namespace basctl } // namespace basctl
......
...@@ -45,8 +45,8 @@ class BreakPointDialog final : public ModalDialog ...@@ -45,8 +45,8 @@ class BreakPointDialog final : public ModalDialog
DECL_LINK( ComboBoxHighlightHdl, ComboBox&, void ); DECL_LINK( ComboBoxHighlightHdl, ComboBox&, void );
DECL_LINK( EditModifyHdl, Edit&, void ); DECL_LINK( EditModifyHdl, Edit&, void );
DECL_LINK( ButtonHdl, Button*, void ); DECL_LINK( ButtonHdl, Button*, void );
void UpdateFields( BreakPoint const * pBrk ); void UpdateFields( BreakPoint const & rBrk );
BreakPoint* GetSelectedBreakPoint(); BreakPoint& GetSelectedBreakPoint();
public: public:
...@@ -54,7 +54,7 @@ public: ...@@ -54,7 +54,7 @@ public:
virtual ~BreakPointDialog() override; virtual ~BreakPointDialog() override;
virtual void dispose() override; virtual void dispose() override;
void SetCurrentBreakPoint( BreakPoint const * pBrk ); void SetCurrentBreakPoint( BreakPoint const & rBrk );
}; };
} // namespace basctl } // namespace basctl
......
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