COW cleanup patch (1583966):

1. perform deep comparison for the classes for which it makes sense in the
   ports where this wasn't done yet
2. remove (shallow) comparison operators for the classes for which it does
   not make sense (such as wxBitmap)
3. makes wxBitmap use COW on all ports
4. adds wxObject::IsRefTo()
5. centralizes and improves COW docs


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2006-10-30 19:26:48 +00:00
parent 8d1517cef2
commit 55ccdb93e4
102 changed files with 310 additions and 639 deletions

View File

@@ -40,11 +40,6 @@ public:
virtual ~wxAcceleratorTable();
inline bool operator== (const wxAcceleratorTable& rAccel) const
{ return m_refData == rAccel.m_refData; };
inline bool operator!= (const wxAcceleratorTable& rAccel) const
{ return m_refData != rAccel.m_refData; };
bool Ok() const { return IsOk(); }
bool IsOk() const;
void SetHACCEL(WXHACCEL hAccel);

View File

@@ -187,12 +187,6 @@ public:
void SetMask(wxMask* pMask) ;
inline bool operator==(const wxBitmap& rBitmap) const
{ return m_refData == rBitmap.m_refData; }
inline bool operator!=(const wxBitmap& rBitmap) const
{ return m_refData != rBitmap.m_refData; }
// Implementation
public:
inline void SetHBITMAP(WXHBITMAP hBmp)

View File

@@ -47,8 +47,8 @@ public:
wxBrush(const wxBitmap& rStipple);
virtual ~wxBrush();
inline bool operator == (const wxBrush& rBrush) const { return m_refData == rBrush.m_refData; }
inline bool operator != (const wxBrush& rBrush) const { return m_refData != rBrush.m_refData; }
inline bool operator == (const wxBrush& rBrush) const;
inline bool operator != (const wxBrush& rBrush) const { return !(*this == rBrush); }
virtual void SetColour(const wxColour& rColour);
virtual void SetColour(unsigned char cRed, unsigned char cGreen, unsigned char cBrush);

View File

@@ -48,8 +48,6 @@ public:
);
wxCursor(int nCursorType);
inline ~wxCursor() { }
inline bool operator == (const wxCursor& rCursor) const { return m_refData == rCursor.m_refData; }
inline bool operator != (const wxCursor& rCursor) const { return m_refData != rCursor.m_refData; }
inline WXHCURSOR GetHCURSOR(void) const { return (M_CURSORDATA ? M_CURSORDATA->m_hCursor : 0); }
inline void SetHCURSOR(WXHCURSOR hCursor) { SetHandle((WXHANDLE)hCursor); }

View File

@@ -64,11 +64,6 @@ public:
,int nDesiredHeight = -1
);
inline bool operator == (const wxIcon& rIcon) const
{ return m_refData == rIcon.m_refData; }
inline bool operator != (const wxIcon& rIcon) const
{ return m_refData != rIcon.m_refData; }
wxIconRefData *GetIconData() const { return (wxIconRefData *)m_refData; }
inline void SetHICON(WXHICON hIcon) { SetHandle((WXHANDLE)hIcon); }

View File

@@ -66,12 +66,6 @@ public:
void SetHMETAFILE(WXHANDLE mf) ;
inline int GetWindowsMappingMode(void) { return M_METAFILEDATA->m_windowsMappingMode; }
void SetWindowsMappingMode(int mm);
// Operators
inline bool operator== (const wxMetafile& metafile) const
{ return m_refData == metafile.m_refData; }
inline bool operator!= (const wxMetafile& metafile) const
{ return m_refData != metafile.m_refData; }
};
class WXDLLEXPORT wxMetafileDC: public wxDC

View File

@@ -62,11 +62,6 @@ public:
virtual bool Ok() const { return IsOk(); }
virtual bool IsOk(void) const { return (m_refData != NULL) ; }
inline bool operator == (const wxPalette& rPalette) const
{ return m_refData == rPalette.m_refData; }
inline bool operator != (const wxPalette& rPalette) const
{ return m_refData != rPalette.m_refData; }
virtual bool FreeResource(bool bForce = false);
inline WXHPALETTE GetHPALETTE(void) const { return (M_PALETTEDATA ? M_PALETTEDATA->m_hPalette : 0); }

View File

@@ -27,6 +27,20 @@ public:
wxPenRefData(const wxPenRefData& rData);
virtual ~wxPenRefData();
bool operator==(const wxPenRefData& data) const
{
// we intentionally don't compare m_hPen fields here
return m_nStyle == data.m_nStyle &&
m_nWidth == data.m_nWidth &&
m_nJoin == data.m_nJoin &&
m_nCap == data.m_nCap &&
m_vColour == data.m_vColour &&
(m_style != wxSTIPPLE || m_stipple.IsRefTo(&data.m_stipple)) &&
(m_style != wxUSER_DASH ||
(m_dash == data.m_dash &&
memcmp(m_dash, data.m_dash, m_nbDash*sizeof(wxDash)) == 0));
}
protected:
int m_nWidth;
int m_nStyle;
@@ -57,9 +71,15 @@ public:
virtual ~wxPen();
inline bool operator == (const wxPen& rPen) const
{ return m_refData == rPen.m_refData; }
{
const wxPenRefData *penData = (wxPenRefData *)pen.m_refData;
// an invalid pen is only equal to another invalid pen
return m_refData ? penData && *M_PENDATA == *penData : !penData;
}
inline bool operator != (const wxPen& rPen) const
{ return m_refData != rPen.m_refData; }
{ return !(*this == rPen); }
virtual bool Ok() const { return IsOk(); }
virtual bool IsOk(void) const { return (m_refData != NULL); }