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:
@@ -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);
|
||||
|
@@ -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)
|
||||
|
@@ -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);
|
||||
|
@@ -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); }
|
||||
|
@@ -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); }
|
||||
|
@@ -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
|
||||
|
@@ -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); }
|
||||
|
@@ -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); }
|
||||
|
Reference in New Issue
Block a user