Add wxGCC_WARNING_{SUPPRESS,RESTORE} macros and use them for -Wfloat-equal.
Suppress the warnings about comparing floating point values for equality in wxWidgets headers when the user code is compiled with -Wfloat-equal (at least when using g++ 4.6 or later). Closes #14895. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -912,6 +912,8 @@ public:
|
|||||||
WXANY_IMPLEMENT_INT_EQ_OP(wxLongLong_t, wxULongLong_t)
|
WXANY_IMPLEMENT_INT_EQ_OP(wxLongLong_t, wxULongLong_t)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
wxGCC_WARNING_SUPPRESS(float-equal)
|
||||||
|
|
||||||
bool operator==(float value) const
|
bool operator==(float value) const
|
||||||
{
|
{
|
||||||
if ( !wxAnyValueTypeImpl<float>::IsSameClass(m_type) )
|
if ( !wxAnyValueTypeImpl<float>::IsSameClass(m_type) )
|
||||||
@@ -932,6 +934,8 @@ public:
|
|||||||
(wxAnyValueTypeImpl<double>::GetValue(m_buffer));
|
(wxAnyValueTypeImpl<double>::GetValue(m_buffer));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
wxGCC_WARNING_RESTORE(float-equal)
|
||||||
|
|
||||||
bool operator==(bool value) const
|
bool operator==(bool value) const
|
||||||
{
|
{
|
||||||
if ( !wxAnyValueTypeImpl<bool>::IsSameClass(m_type) )
|
if ( !wxAnyValueTypeImpl<bool>::IsSameClass(m_type) )
|
||||||
|
@@ -583,6 +583,27 @@ typedef short int WXTYPE;
|
|||||||
# define wxDEPRECATED_BUT_USED_INTERNALLY(x) wxDEPRECATED(x)
|
# define wxDEPRECATED_BUT_USED_INTERNALLY(x) wxDEPRECATED(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
Macros to suppress and restore gcc warnings, requires g++ >= 4.6 and don't
|
||||||
|
do anything otherwise.
|
||||||
|
|
||||||
|
Example of use:
|
||||||
|
|
||||||
|
wxGCC_WARNING_SUPPRESS(float-equal)
|
||||||
|
inline bool wxIsSameDouble(double x, double y) { return x == y; }
|
||||||
|
wxGCC_WARNING_RESTORE(float-equal)
|
||||||
|
*/
|
||||||
|
#if wxCHECK_GCC_VERSION(4, 6)
|
||||||
|
# define wxGCC_WARNING_SUPPRESS(x) \
|
||||||
|
_Pragma (wxSTRINGIZE(GCC diagnostic push)) \
|
||||||
|
_Pragma (wxSTRINGIZE(GCC diagnostic ignored wxSTRINGIZE(wxCONCAT(-W,x))))
|
||||||
|
# define wxGCC_WARNING_RESTORE(x) \
|
||||||
|
_Pragma (wxSTRINGIZE(GCC diagnostic pop))
|
||||||
|
#else /* gcc < 4.6 or not gcc at all */
|
||||||
|
# define wxGCC_WARNING_SUPPRESS(x)
|
||||||
|
# define wxGCC_WARNING_RESTORE(x)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Combination of the two variants above: should be used for deprecated
|
Combination of the two variants above: should be used for deprecated
|
||||||
functions which are defined inline and are used by wxWidgets itself.
|
functions which are defined inline and are used by wxWidgets itself.
|
||||||
|
@@ -107,8 +107,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
#else /* !__INTELC__ */
|
#else /* !__INTELC__ */
|
||||||
|
wxGCC_WARNING_SUPPRESS(float-equal)
|
||||||
inline bool wxIsSameDouble(double x, double y) { return x == y; }
|
inline bool wxIsSameDouble(double x, double y) { return x == y; }
|
||||||
|
wxGCC_WARNING_RESTORE(float-equal)
|
||||||
|
|
||||||
#endif /* __INTELC__/!__INTELC__ */
|
#endif /* __INTELC__/!__INTELC__ */
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user