From f81a7438409ee9cede09b0395d8af0943220a4ea Mon Sep 17 00:00:00 2001 From: August Sodora Date: Sun, 4 Dec 2011 22:01:35 -0500 Subject: Refactor BreakPoint --- basctl/Library_basctl.mk | 1 + basctl/source/basicide/baside2.hxx | 1 + basctl/source/basicide/baside2b.cxx | 2 - basctl/source/basicide/bastypes.cxx | 121 ----------------------- basctl/source/basicide/breakpoint.cxx | 179 ++++++++++++++++++++++++++++++++++ basctl/source/basicide/breakpoint.hxx | 79 +++++++++++++++ basctl/source/basicide/brkdlg.cxx | 15 ++- basctl/source/inc/bastypes.hxx | 57 ----------- 8 files changed, 267 insertions(+), 188 deletions(-) create mode 100644 basctl/source/basicide/breakpoint.cxx create mode 100644 basctl/source/basicide/breakpoint.hxx (limited to 'basctl') diff --git a/basctl/Library_basctl.mk b/basctl/Library_basctl.mk index 45403ecee04a..438c8c325ca5 100644 --- a/basctl/Library_basctl.mk +++ b/basctl/Library_basctl.mk @@ -85,6 +85,7 @@ $(eval $(call gb_Library_add_exception_objects,basctl,\ basctl/source/basicide/bastype2 \ basctl/source/basicide/bastype3 \ basctl/source/basicide/bastypes \ + basctl/source/basicide/breakpoint \ basctl/source/basicide/brkdlg \ basctl/source/basicide/doceventnotifier \ basctl/source/basicide/docsignature \ diff --git a/basctl/source/basicide/baside2.hxx b/basctl/source/basicide/baside2.hxx index 119aa6044ec5..e9378ab30a78 100644 --- a/basctl/source/basicide/baside2.hxx +++ b/basctl/source/basicide/baside2.hxx @@ -51,6 +51,7 @@ class SvxSearchItem; #include #include +#include "breakpoint.hxx" #include "linenumberwindow.hxx" DBG_NAMEEX( ModulWindow ) diff --git a/basctl/source/basicide/baside2b.cxx b/basctl/source/basicide/baside2b.cxx index 4ad4eea2dca2..dfef3853e02a 100644 --- a/basctl/source/basicide/baside2b.cxx +++ b/basctl/source/basicide/baside2b.cxx @@ -26,14 +26,12 @@ * ************************************************************************/ - #define _BASIC_TEXTPORTIONS #include "helpid.hrc" #include "baside2.hrc" #include "baside2.hxx" -#include "basobj.hxx" #include "brkdlg.hxx" #include "iderdll.hxx" #include "iderdll2.hxx" diff --git a/basctl/source/basicide/bastypes.cxx b/basctl/source/basicide/bastypes.cxx index 2ced84170073..21dfce98eb6d 100644 --- a/basctl/source/basicide/bastypes.cxx +++ b/basctl/source/basicide/bastypes.cxx @@ -252,127 +252,6 @@ Window* IDEBaseWindow::GetLayoutWindow() return NULL; } -BreakPointList::BreakPointList() -{} - -BreakPointList::BreakPointList(BreakPointList const & rList) -{ - for (size_t i = 0; i < rList.size(); ++i) - maBreakPoints.push_back( new BreakPoint(*rList.at( i ) ) ); -} - -BreakPointList::~BreakPointList() -{ - reset(); -} - -void BreakPointList::reset() -{ - for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) - delete maBreakPoints[ i ]; - maBreakPoints.clear(); -} - -void BreakPointList::transfer(BreakPointList & rList) -{ - reset(); - for (size_t i = 0; i < rList.size(); ++i) - maBreakPoints.push_back( rList.at( i ) ); - rList.clear(); -} - -void BreakPointList::InsertSorted( BreakPoint* pNewBrk ) -{ - for ( vector< BreakPoint* >::iterator i = maBreakPoints.begin(); i < maBreakPoints.end(); ++i ) - { - if ( pNewBrk->nLine <= (*i)->nLine ) - { - DBG_ASSERT( ( (*i)->nLine != pNewBrk->nLine ) || pNewBrk->bTemp, "BreakPoint existiert schon!" ); - maBreakPoints.insert( i, pNewBrk ); - return; - } - } - // no insert position found => LIST_APPEND - maBreakPoints.push_back( pNewBrk ); -} - -void BreakPointList::SetBreakPointsInBasic( SbModule* pModule ) -{ - pModule->ClearAllBP(); - - for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) - { - BreakPoint* pBrk = maBreakPoints[ i ]; - if ( pBrk->bEnabled ) - pModule->SetBP( (sal_uInt16)pBrk->nLine ); - } -} - -BreakPoint* BreakPointList::FindBreakPoint( size_t nLine ) -{ - for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) - { - BreakPoint* pBrk = maBreakPoints[ i ]; - if ( pBrk->nLine == nLine ) - return pBrk; - } - return NULL; -} - -void BreakPointList::AdjustBreakPoints( size_t nLine, bool bInserted ) -{ - for ( size_t i = 0; i < maBreakPoints.size(); ) - { - BreakPoint* pBrk = maBreakPoints[ i ]; - bool bDelBrk = false; - if ( pBrk->nLine == nLine ) - { - if ( bInserted ) - pBrk->nLine++; - else - bDelBrk = true; - } - else if ( pBrk->nLine > nLine ) - { - if ( bInserted ) - pBrk->nLine++; - else - pBrk->nLine--; - } - - if ( bDelBrk ) - { - delete remove( pBrk ); - } - else - { - ++i; - } - } -} - -void BreakPointList::ResetHitCount() -{ - for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) - { - BreakPoint* pBrk = maBreakPoints[ i ]; - pBrk->nHitCount = 0; - } -} - -BreakPoint* BreakPointList::remove( BreakPoint* ptr ) -{ - for ( vector< BreakPoint* >::iterator i = maBreakPoints.begin(); i < maBreakPoints.end(); ++i ) - { - if ( ptr == *i ) - { - maBreakPoints.erase( i ); - return ptr; - } - } - return NULL; -} - void IDEBaseWindow::Deactivating() { } diff --git a/basctl/source/basicide/breakpoint.cxx b/basctl/source/basicide/breakpoint.cxx new file mode 100644 index 000000000000..b76317438b2a --- /dev/null +++ b/basctl/source/basicide/breakpoint.cxx @@ -0,0 +1,179 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#include "breakpoint.hxx" + +#include +#include + +BreakPointList::BreakPointList() +{} + +BreakPointList::BreakPointList(BreakPointList const & rList) +{ + for (size_t i = 0; i < rList.size(); ++i) + maBreakPoints.push_back( new BreakPoint(*rList.at( i ) ) ); +} + +BreakPointList::~BreakPointList() +{ + reset(); +} + +void BreakPointList::reset() +{ + for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) + delete maBreakPoints[ i ]; + maBreakPoints.clear(); +} + +void BreakPointList::transfer(BreakPointList & rList) +{ + reset(); + for (size_t i = 0; i < rList.size(); ++i) + maBreakPoints.push_back( rList.at( i ) ); + rList.clear(); +} + +void BreakPointList::InsertSorted(BreakPoint* pNewBrk) +{ + for ( ::std::vector< BreakPoint* >::iterator i = maBreakPoints.begin(); i < maBreakPoints.end(); ++i ) + { + if ( pNewBrk->nLine <= (*i)->nLine ) + { + DBG_ASSERT( ( (*i)->nLine != pNewBrk->nLine ) || pNewBrk->bTemp, "BreakPoint existiert schon!" ); + maBreakPoints.insert( i, pNewBrk ); + return; + } + } + // no insert position found => LIST_APPEND + maBreakPoints.push_back( pNewBrk ); +} + +void BreakPointList::SetBreakPointsInBasic(SbModule* pModule) +{ + pModule->ClearAllBP(); + + for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) + { + BreakPoint* pBrk = maBreakPoints[ i ]; + if ( pBrk->bEnabled ) + pModule->SetBP( (sal_uInt16)pBrk->nLine ); + } +} + +BreakPoint* BreakPointList::FindBreakPoint(size_t nLine) +{ + for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) + { + BreakPoint* pBrk = maBreakPoints[ i ]; + if ( pBrk->nLine == nLine ) + return pBrk; + } + return NULL; +} + +void BreakPointList::AdjustBreakPoints(size_t nLine, bool bInserted) +{ + for ( size_t i = 0; i < maBreakPoints.size(); ) + { + BreakPoint* pBrk = maBreakPoints[ i ]; + bool bDelBrk = false; + if ( pBrk->nLine == nLine ) + { + if ( bInserted ) + pBrk->nLine++; + else + bDelBrk = true; + } + else if ( pBrk->nLine > nLine ) + { + if ( bInserted ) + pBrk->nLine++; + else + pBrk->nLine--; + } + + if ( bDelBrk ) + { + delete remove( pBrk ); + } + else + { + ++i; + } + } +} + +void BreakPointList::ResetHitCount() +{ + for ( size_t i = 0, n = maBreakPoints.size(); i < n; ++i ) + { + BreakPoint* pBrk = maBreakPoints[ i ]; + pBrk->nHitCount = 0; + } +} + +BreakPoint* BreakPointList::remove(BreakPoint* ptr) +{ + for ( ::std::vector< BreakPoint* >::iterator i = maBreakPoints.begin(); i < maBreakPoints.end(); ++i ) + { + if ( ptr == *i ) + { + maBreakPoints.erase( i ); + return ptr; + } + } + return NULL; +} + +size_t BreakPointList::size() const +{ + return maBreakPoints.size(); +} + +BreakPoint* BreakPointList::at(size_t i) +{ + return i < maBreakPoints.size() ? maBreakPoints[ i ] : NULL; +} + +const BreakPoint* BreakPointList::at(size_t i) const +{ + return i < maBreakPoints.size() ? maBreakPoints[ i ] : NULL; +} + +void BreakPointList::push_back(BreakPoint* item) +{ + maBreakPoints.push_back( item ); +} + +void BreakPointList::clear() +{ + maBreakPoints.clear(); +} +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/basctl/source/basicide/breakpoint.hxx b/basctl/source/basicide/breakpoint.hxx new file mode 100644 index 000000000000..16cdfa3ce7d0 --- /dev/null +++ b/basctl/source/basicide/breakpoint.hxx @@ -0,0 +1,79 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _BREAKPOINT_HXX +#define _BREAKPOINT_HXX + +#include + +class SbModule; + +struct BreakPoint +{ + bool bEnabled; + bool bTemp; + size_t nLine; + size_t nStopAfter; + size_t nHitCount; + + BreakPoint(size_t nL) { nLine = nL; nStopAfter = 0; nHitCount = 0; bEnabled = true; bTemp = false; } +}; + +class BreakPointList +{ +private: + void operator =(BreakPointList); // not implemented + ::std::vector maBreakPoints; + +public: + BreakPointList(); + + BreakPointList(BreakPointList const & rList); + + ~BreakPointList(); + + void reset(); + + void transfer(BreakPointList & rList); + + void InsertSorted(BreakPoint* pBrk); + BreakPoint* FindBreakPoint(size_t nLine); + void AdjustBreakPoints(size_t nLine, bool bInserted); + void SetBreakPointsInBasic(SbModule* pModule); + void ResetHitCount(); + + size_t size() const; + BreakPoint* at(size_t i); + const BreakPoint* at(size_t i) const; + void push_back(BreakPoint* item); + void clear(); + BreakPoint* remove(BreakPoint* ptr); +}; + +#endif // _BREAKPOINT_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/basctl/source/basicide/brkdlg.cxx b/basctl/source/basicide/brkdlg.cxx index 5dd4b3a13a92..3365e13897cb 100644 --- a/basctl/source/basicide/brkdlg.cxx +++ b/basctl/source/basicide/brkdlg.cxx @@ -26,17 +26,16 @@ * ************************************************************************/ - -#include - #include #define _SVX_NOIDERESIDS -#include -#include -#include -#include -#include +#include "breakpoint.hxx" +#include "brkdlg.hxx" +#include "brkdlg.hrc" +#include "basidesh.hxx" +#include "basidesh.hrc" +#include "iderdll.hxx" + #include #include #include diff --git a/basctl/source/inc/bastypes.hxx b/basctl/source/inc/bastypes.hxx index e8c89f00a093..fb24a2b55f11 100644 --- a/basctl/source/inc/bastypes.hxx +++ b/basctl/source/inc/bastypes.hxx @@ -65,17 +65,6 @@ struct BasicStatus nBasicFlags(0) { } }; -struct BreakPoint -{ - bool bEnabled; - bool bTemp; - size_t nLine; - size_t nStopAfter; - size_t nHitCount; - - BreakPoint( size_t nL ) { nLine = nL; nStopAfter = 0; nHitCount = 0; bEnabled = true; bTemp = false; } -}; - class BasicDockingWindow : public DockingWindow { Rectangle aFloatingPosAndSize; @@ -91,52 +80,6 @@ public: BasicDockingWindow( Window* pParent ); }; -class BreakPointList -{ -private: - void operator =(BreakPointList); // not implemented - ::std::vector< BreakPoint* > maBreakPoints; - -public: - BreakPointList(); - - BreakPointList(BreakPointList const & rList); - - ~BreakPointList(); - - void reset(); - - void transfer(BreakPointList & rList); - - void InsertSorted( BreakPoint* pBrk ); - BreakPoint* FindBreakPoint( size_t nLine ); - void AdjustBreakPoints( size_t nLine, bool bInserted ); - void SetBreakPointsInBasic( SbModule* pModule ); - void ResetHitCount(); - - size_t size() const - { - return maBreakPoints.size(); - } - BreakPoint* at( size_t i ) - { - return i < maBreakPoints.size() ? maBreakPoints[ i ] : NULL; - } - const BreakPoint* at( size_t i ) const - { - return i < maBreakPoints.size() ? maBreakPoints[ i ] : NULL; - } - void push_back( BreakPoint* item ) - { - maBreakPoints.push_back( item ); - } - void clear() - { - maBreakPoints.clear(); - } - BreakPoint* remove( BreakPoint* ptr ); -}; - // helper class for sorting TabBar class TabBarSortHelper { -- cgit