From: Vadim Zeitlin Date: Mon, 15 Sep 2008 16:13:06 +0000 (+0000) Subject: use wxSwap() X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/1372f8ccd05daece34d4f44a07f95f45aee967de use wxSwap() git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/arrstr.h b/include/wx/arrstr.h index ddb11c0a31..95b9506fdc 100644 --- a/include/wx/arrstr.h +++ b/include/wx/arrstr.h @@ -303,22 +303,10 @@ public: size_type size() const { return GetCount(); } void swap(wxArrayString& other) { - // not sure if we can rely on having std::swap() everywhere so do it - // manually - const size_t savedSize = m_nSize; - const size_t savedCount = m_nCount; - wxString * const savedItems = m_pItems; - const bool savedAutoSort = m_autoSort; - - m_nSize = other.m_nSize; - m_nCount = other.m_nCount; - m_pItems = other.m_pItems; - m_autoSort = other.m_autoSort; - - other.m_nSize = savedSize; - other.m_nCount = savedCount; - other.m_pItems = savedItems; - other.m_autoSort = savedAutoSort; + wxSwap(m_nSize, other.m_nSize); + wxSwap(m_nCount, other.m_nCount); + wxSwap(m_pItems, other.m_pItems); + wxSwap(m_autoSort, other.m_autoSort); } protected: diff --git a/include/wx/dynarray.h b/include/wx/dynarray.h index 8e579a9c64..1aaa3e7caf 100644 --- a/include/wx/dynarray.h +++ b/include/wx/dynarray.h @@ -284,17 +284,9 @@ protected: \ \ void swap(name& other) \ { \ - const size_t savedSize = m_nSize; \ - const size_t savedCount = m_nCount; \ - T * const savedItems = m_pItems; \ - \ - m_nSize = other.m_nSize; \ - m_nCount = other.m_nCount; \ - m_pItems = other.m_pItems; \ - \ - other.m_nSize = savedSize; \ - other.m_nCount = savedCount; \ - other.m_pItems = savedItems; \ + wxSwap(m_nSize, other.m_nSize); \ + wxSwap(m_nCount, other.m_nCount); \ + wxSwap(m_pItems, other.m_pItems); \ } \ \ /* the following functions may be made directly public because */ \ diff --git a/src/generic/grid.cpp b/src/generic/grid.cpp index 9e05bb3158..3506da69f0 100644 --- a/src/generic/grid.cpp +++ b/src/generic/grid.cpp @@ -439,6 +439,23 @@ static const size_t GRID_SCROLL_LINE_Y = GRID_SCROLL_LINE_X; // in these hash tables is the number of rows/columns) static const int GRID_HASH_SIZE = 100; +// ---------------------------------------------------------------------------- +// private helpers +// ---------------------------------------------------------------------------- + +namespace +{ + +// ensure that first is less or equal to second, swapping the values if +// necessary +void EnsureFirstLessThanSecond(int& first, int& second) +{ + if ( first > second ) + wxSwap(first, second); +} + +} // anonymous namespace + // ============================================================================ // implementation // ============================================================================ @@ -7179,9 +7196,8 @@ void wxGrid::SetCurrentCell( const wxGridCellCoords& coords ) attr->DecRef(); } -void wxGrid::HighlightBlock( int topRow, int leftCol, int bottomRow, int rightCol ) +void wxGrid::HighlightBlock(int topRow, int leftCol, int bottomRow, int rightCol) { - int temp; wxGridCellCoords updateTopLeft, updateBottomRight; if ( m_selection ) @@ -7198,19 +7214,8 @@ void wxGrid::HighlightBlock( int topRow, int leftCol, int bottomRow, int rightCo } } - if ( topRow > bottomRow ) - { - temp = topRow; - topRow = bottomRow; - bottomRow = temp; - } - - if ( leftCol > rightCol ) - { - temp = leftCol; - leftCol = rightCol; - rightCol = temp; - } + EnsureFirstLessThanSecond(topRow, bottomRow); + EnsureFirstLessThanSecond(leftCol, rightCol); updateTopLeft = wxGridCellCoords( topRow, leftCol ); updateBottomRight = wxGridCellCoords( bottomRow, rightCol ); @@ -7247,30 +7252,10 @@ void wxGrid::HighlightBlock( int topRow, int leftCol, int bottomRow, int rightCo wxCoord oldBottom = m_selectingBottomRight.GetRow(); // Determine the outer/inner coordinates. - if (oldLeft > leftCol) - { - temp = oldLeft; - oldLeft = leftCol; - leftCol = temp; - } - if (oldTop > topRow ) - { - temp = oldTop; - oldTop = topRow; - topRow = temp; - } - if (oldRight < rightCol ) - { - temp = oldRight; - oldRight = rightCol; - rightCol = temp; - } - if (oldBottom < bottomRow) - { - temp = oldBottom; - oldBottom = bottomRow; - bottomRow = temp; - } + EnsureFirstLessThanSecond(oldLeft, leftCol); + EnsureFirstLessThanSecond(oldTop, topRow); + EnsureFirstLessThanSecond(rightCol, oldRight); + EnsureFirstLessThanSecond(bottomRow, oldBottom); // Now, either the stuff marked old is the outer // rectangle or we don't have a situation where one