mirror of
https://git.savannah.gnu.org/git/gnulib.git
synced 2025-08-17 12:41:05 +03:00
snippet/c++defs: fix real-floating arg functions in C++ mode
Also, define isfinite, isinf, isnan, signbit in the gnulib namespace instead of in the global namespace. * build-aux/snippet/c++defs.h (_GL_BEGIN_NAMESPACE) (_GL_END_NAMESPACE): New. * lib/math.in.h (_GL_MATH_CXX_REAL_FLOATING_DECL_2): Use them. (isfinite, isinf, isnan, signbit) [__cplusplus && GNULIB_NAMESPACE]: Define them in the GNULIB_NAMESPACE namespace instead of in the global namespace. * tests/test-math-c++.cc: Check that the isfinite, isinf, isnan, signbit overloads exist in the GNULIB_NAMESPACE namespace, instead of in the global namespace.
This commit is contained in:
15
ChangeLog
15
ChangeLog
@@ -1,3 +1,18 @@
|
|||||||
|
2016-11-14 Pedro Alves <palves@redhat.com>
|
||||||
|
|
||||||
|
snippet/c++defs: fix real-floating arg functions in C++ mode
|
||||||
|
Also, define isfinite, isinf, isnan, signbit in the gnulib
|
||||||
|
namespace instead of in the global namespace.
|
||||||
|
* build-aux/snippet/c++defs.h (_GL_BEGIN_NAMESPACE)
|
||||||
|
(_GL_END_NAMESPACE): New.
|
||||||
|
* lib/math.in.h (_GL_MATH_CXX_REAL_FLOATING_DECL_2): Use them.
|
||||||
|
(isfinite, isinf, isnan, signbit) [__cplusplus &&
|
||||||
|
GNULIB_NAMESPACE]: Define them in the GNULIB_NAMESPACE namespace
|
||||||
|
instead of in the global namespace.
|
||||||
|
* tests/test-math-c++.cc: Check that the isfinite, isinf, isnan,
|
||||||
|
signbit overloads exist in the GNULIB_NAMESPACE namespace, instead
|
||||||
|
of in the global namespace.
|
||||||
|
|
||||||
2016-11-13 Jim Meyering <meyering@fb.com>
|
2016-11-13 Jim Meyering <meyering@fb.com>
|
||||||
|
|
||||||
strftime: don't use __THROW
|
strftime: don't use __THROW
|
||||||
|
@@ -17,6 +17,15 @@
|
|||||||
#ifndef _GL_CXXDEFS_H
|
#ifndef _GL_CXXDEFS_H
|
||||||
#define _GL_CXXDEFS_H
|
#define _GL_CXXDEFS_H
|
||||||
|
|
||||||
|
/* Begin/end the GNULIB_NAMESPACE namespace. */
|
||||||
|
#if defined __cplusplus && defined GNULIB_NAMESPACE
|
||||||
|
# define _GL_BEGIN_NAMESPACE namespace GNULIB_NAMESPACE {
|
||||||
|
# define _GL_END_NAMESPACE }
|
||||||
|
#else
|
||||||
|
# define _GL_BEGIN_NAMESPACE
|
||||||
|
# define _GL_END_NAMESPACE
|
||||||
|
#endif
|
||||||
|
|
||||||
/* The three most frequent use cases of these macros are:
|
/* The three most frequent use cases of these macros are:
|
||||||
|
|
||||||
* For providing a substitute for a function that is missing on some
|
* For providing a substitute for a function that is missing on some
|
||||||
|
@@ -63,6 +63,7 @@ _gl_cxx_ ## func ## l (long double l) \
|
|||||||
return func (l); \
|
return func (l); \
|
||||||
}
|
}
|
||||||
# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \
|
# define _GL_MATH_CXX_REAL_FLOATING_DECL_2(func) \
|
||||||
|
_GL_BEGIN_NAMESPACE \
|
||||||
inline int \
|
inline int \
|
||||||
func (float f) \
|
func (float f) \
|
||||||
{ \
|
{ \
|
||||||
@@ -77,7 +78,8 @@ inline int \
|
|||||||
func (long double l) \
|
func (long double l) \
|
||||||
{ \
|
{ \
|
||||||
return _gl_cxx_ ## func ## l (l); \
|
return _gl_cxx_ ## func ## l (l); \
|
||||||
}
|
} \
|
||||||
|
_GL_END_NAMESPACE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Helper macros to define a portability warning for the
|
/* Helper macros to define a portability warning for the
|
||||||
@@ -2044,7 +2046,7 @@ _GL_EXTERN_C int gl_isfinitel (long double x);
|
|||||||
gl_isfinitef (x))
|
gl_isfinitef (x))
|
||||||
# endif
|
# endif
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
# ifdef isfinite
|
# if defined isfinite || defined GNULIB_NAMESPACE
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isfinite)
|
||||||
# undef isfinite
|
# undef isfinite
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isfinite)
|
||||||
@@ -2071,7 +2073,7 @@ _GL_EXTERN_C int gl_isinfl (long double x);
|
|||||||
gl_isinff (x))
|
gl_isinff (x))
|
||||||
# endif
|
# endif
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
# ifdef isinf
|
# if defined isinf || defined GNULIB_NAMESPACE
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isinf)
|
||||||
# undef isinf
|
# undef isinf
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isinf)
|
||||||
@@ -2189,7 +2191,7 @@ _GL_EXTERN_C int rpl_isnanl (long double x) _GL_ATTRIBUTE_CONST;
|
|||||||
__builtin_isnanf ((float)(x)))
|
__builtin_isnanf ((float)(x)))
|
||||||
# endif
|
# endif
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
# ifdef isnan
|
# if defined isnan || defined GNULIB_NAMESPACE
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (isnan)
|
||||||
# undef isnan
|
# undef isnan
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (isnan)
|
||||||
@@ -2264,7 +2266,7 @@ _GL_EXTERN_C int gl_signbitl (long double arg);
|
|||||||
gl_signbitf (x))
|
gl_signbitf (x))
|
||||||
# endif
|
# endif
|
||||||
# ifdef __cplusplus
|
# ifdef __cplusplus
|
||||||
# ifdef signbit
|
# if defined signbit || defined GNULIB_NAMESPACE
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_1 (signbit)
|
||||||
# undef signbit
|
# undef signbit
|
||||||
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
|
_GL_MATH_CXX_REAL_FLOATING_DECL_2 (signbit)
|
||||||
|
@@ -24,7 +24,8 @@
|
|||||||
#include "signature.h"
|
#include "signature.h"
|
||||||
|
|
||||||
/* Signature check for a function that takes a real-floating argument.
|
/* Signature check for a function that takes a real-floating argument.
|
||||||
Check that each overloaded function with the specified signature exists. */
|
Check that each overloaded function with the specified signature
|
||||||
|
exists in the GNULIB_NAMESPACE namespace. */
|
||||||
#define REAL_FLOATING_CHECK(func,\
|
#define REAL_FLOATING_CHECK(func,\
|
||||||
rettype1, parameters1,\
|
rettype1, parameters1,\
|
||||||
rettype2, parameters2,\
|
rettype2, parameters2,\
|
||||||
@@ -34,7 +35,7 @@
|
|||||||
OVERLOADED_CHECK (func, rettype3, parameters3, _3)
|
OVERLOADED_CHECK (func, rettype3, parameters3, _3)
|
||||||
#define OVERLOADED_CHECK(func, rettype, parameters, suffix) \
|
#define OVERLOADED_CHECK(func, rettype, parameters, suffix) \
|
||||||
static rettype (* _GL_UNUSED signature_check_ ## func ## suffix) parameters \
|
static rettype (* _GL_UNUSED signature_check_ ## func ## suffix) parameters \
|
||||||
= static_cast<rettype(*)parameters>(func)
|
= static_cast<rettype(*)parameters>(GNULIB_NAMESPACE::func)
|
||||||
|
|
||||||
|
|
||||||
/* Keep these checks in the same order as math.in.h! */
|
/* Keep these checks in the same order as math.in.h! */
|
||||||
|
Reference in New Issue
Block a user