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:
\
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 */ \
// 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
// ============================================================================
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 )
}
}
- 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 );
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