added wxIsSameDouble() which wraps double comparison in a pragmas disabling icc warning about it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35685 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -21,6 +21,7 @@
|
|||||||
#include "wx/string.h"
|
#include "wx/string.h"
|
||||||
#include "wx/fontenc.h"
|
#include "wx/fontenc.h"
|
||||||
#include "wx/hashmap.h"
|
#include "wx/hashmap.h"
|
||||||
|
#include "wx/math.h"
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// forward declarations
|
// forward declarations
|
||||||
@@ -269,10 +270,14 @@ public:
|
|||||||
wxRealPoint operator+(const wxRealPoint& pt) const { return wxRealPoint(x + pt.x, y + pt.y); }
|
wxRealPoint operator+(const wxRealPoint& pt) const { return wxRealPoint(x + pt.x, y + pt.y); }
|
||||||
wxRealPoint operator-(const wxRealPoint& pt) const { return wxRealPoint(x - pt.x, y - pt.y); }
|
wxRealPoint operator-(const wxRealPoint& pt) const { return wxRealPoint(x - pt.x, y - pt.y); }
|
||||||
|
|
||||||
bool operator==(const wxRealPoint& pt) const { return x == pt.x && y == pt.y; }
|
bool operator==(const wxRealPoint& pt) const
|
||||||
bool operator!=(const wxRealPoint& pt) const { return x != pt.x || y != pt.y; }
|
{
|
||||||
|
return wxIsSameDouble(x, pt.x) && wxIsSameDouble(y, pt.y);
|
||||||
|
}
|
||||||
|
bool operator!=(const wxRealPoint& pt) const { return !(*this == pt); }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class WXDLLEXPORT wxPoint
|
class WXDLLEXPORT wxPoint
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@@ -76,5 +76,26 @@
|
|||||||
#define wxIsNaN(x) ((x) != (x))
|
#define wxIsNaN(x) ((x) != (x))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
#ifdef __INTELC__
|
||||||
|
inline bool wxIsSameDouble(double x, double y)
|
||||||
|
{
|
||||||
|
// VZ: this warning, given for operators==() and !=() is not wrong, as ==
|
||||||
|
// shouldn't be used with doubles, but we get too many of them and
|
||||||
|
// removing these operators is probably not a good idea
|
||||||
|
#pragma warning(push)
|
||||||
|
|
||||||
|
// floating-point equality and inequality comparisons are unreliable
|
||||||
|
#pragma warning(disable: 1572)
|
||||||
|
|
||||||
|
return x == y;
|
||||||
|
|
||||||
|
#pragma warning(pop)
|
||||||
|
}
|
||||||
|
#else /* !__INTELC__ */
|
||||||
|
inline bool wxIsSameDouble(double x, double y) { return x == y; }
|
||||||
|
#endif /* __INTELC__/!__INTELC__ */
|
||||||
|
#endif /* __cplusplus */
|
||||||
|
|
||||||
|
|
||||||
#endif /* _WX_MATH_H_ */
|
#endif /* _WX_MATH_H_ */
|
||||||
|
@@ -36,6 +36,7 @@ using namespace std ;
|
|||||||
|
|
||||||
#include "wx/string.h"
|
#include "wx/string.h"
|
||||||
#include "wx/tokenzr.h"
|
#include "wx/tokenzr.h"
|
||||||
|
#include "wx/math.h"
|
||||||
|
|
||||||
#include "wx/variant.h"
|
#include "wx/variant.h"
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ public:
|
|||||||
wxVariantDataList(const wxList& list);
|
wxVariantDataList(const wxList& list);
|
||||||
~wxVariantDataList();
|
~wxVariantDataList();
|
||||||
|
|
||||||
wxList& GetValue() const { return (wxList&) m_value; }
|
wxList& GetValue() const { return m_value; }
|
||||||
void SetValue(const wxList& value) ;
|
void SetValue(const wxList& value) ;
|
||||||
|
|
||||||
virtual void Copy(wxVariantData& data);
|
virtual void Copy(wxVariantData& data);
|
||||||
@@ -454,7 +455,7 @@ bool wxVariantDataReal::Eq(wxVariantData& data) const
|
|||||||
|
|
||||||
wxVariantDataReal& otherData = (wxVariantDataReal&) data;
|
wxVariantDataReal& otherData = (wxVariantDataReal&) data;
|
||||||
|
|
||||||
return (otherData.m_value == m_value);
|
return wxIsSameDouble(otherData.m_value, m_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if wxUSE_STD_IOSTREAM
|
#if wxUSE_STD_IOSTREAM
|
||||||
@@ -874,7 +875,7 @@ bool wxVariantDataVoidPtr::Write(wxSTD ostream& str) const
|
|||||||
|
|
||||||
bool wxVariantDataVoidPtr::Write(wxString& str) const
|
bool wxVariantDataVoidPtr::Write(wxString& str) const
|
||||||
{
|
{
|
||||||
str.Printf(wxT("%ld"), (long) m_value);
|
str.Printf(wxT("%p"), m_value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -978,7 +979,7 @@ bool wxVariantDataWxObjectPtr::Write(wxSTD ostream& str) const
|
|||||||
|
|
||||||
bool wxVariantDataWxObjectPtr::Write(wxString& str) const
|
bool wxVariantDataWxObjectPtr::Write(wxString& str) const
|
||||||
{
|
{
|
||||||
str.Printf(wxT("%s(%ld)"), GetType().c_str(), (long) m_value);
|
str.Printf(wxT("%s(%p)"), GetType().c_str(), m_value);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1391,8 +1392,8 @@ bool wxVariant::operator== (double value) const
|
|||||||
double thisValue;
|
double thisValue;
|
||||||
if (!Convert(&thisValue))
|
if (!Convert(&thisValue))
|
||||||
return false;
|
return false;
|
||||||
else
|
|
||||||
return (value == thisValue);
|
return wxIsSameDouble(value, thisValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool wxVariant::operator!= (double value) const
|
bool wxVariant::operator!= (double value) const
|
||||||
|
Reference in New Issue
Block a user