diff options
Diffstat (limited to 'Include')
-rw-r--r-- | Include/Python.h | 1 | ||||
-rw-r--r-- | Include/dictobject.h | 1 | ||||
-rw-r--r-- | Include/opcode.h | 1 | ||||
-rw-r--r-- | Include/pyport.h | 32 | ||||
-rw-r--r-- | Include/pystrcmp.h | 23 |
5 files changed, 58 insertions, 0 deletions
diff --git a/Include/Python.h b/Include/Python.h index fef57b4..d8c2a56 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -114,6 +114,7 @@ #include "eval.h" #include "pystrtod.h" +#include "pystrcmp.h" /* _Py_Mangle is defined in compile.c */ PyAPI_FUNC(PyObject*) _Py_Mangle(PyObject *p, PyObject *name); diff --git a/Include/dictobject.h b/Include/dictobject.h index 0d8a09b..afc55af 100644 --- a/Include/dictobject.h +++ b/Include/dictobject.h @@ -123,6 +123,7 @@ PyAPI_FUNC(Py_ssize_t) PyDict_Size(PyObject *mp); PyAPI_FUNC(PyObject *) PyDict_Copy(PyObject *mp); PyAPI_FUNC(int) PyDict_Contains(PyObject *mp, PyObject *key); PyAPI_FUNC(int) _PyDict_Contains(PyObject *mp, PyObject *key, long hash); +PyAPI_FUNC(PyObject *) _PyDict_NewPresized(Py_ssize_t minused); /* PyDict_Update(mp, other) is equivalent to PyDict_Merge(mp, other, 1). */ PyAPI_FUNC(int) PyDict_Update(PyObject *mp, PyObject *other); diff --git a/Include/opcode.h b/Include/opcode.h index 100262a..7bdf1c9 100644 --- a/Include/opcode.h +++ b/Include/opcode.h @@ -36,6 +36,7 @@ extern "C" { #define INPLACE_FLOOR_DIVIDE 28 #define INPLACE_TRUE_DIVIDE 29 +#define STORE_MAP 54 #define INPLACE_ADD 55 #define INPLACE_SUBTRACT 56 #define INPLACE_MULTIPLY 57 diff --git a/Include/pyport.h b/Include/pyport.h index 266c13a..82d305c 100644 --- a/Include/pyport.h +++ b/Include/pyport.h @@ -332,6 +332,17 @@ extern "C" { #define Py_SAFE_DOWNCAST(VALUE, WIDE, NARROW) (NARROW)(VALUE) #endif +/* High precision defintion of pi and e (Euler) + * The values are taken from libc6's math.h. + */ +#ifndef Py_MATH_PI +#define Py_MATH_PI 3.1415926535897932384626433832795029L +#endif + +#ifndef Py_MATH_E +#define Py_MATH_E 2.7182818284590452353602874713526625L +#endif + /* Py_IS_NAN(X) * Return 1 if float or double arg is a NaN, else 0. * Caution: @@ -341,8 +352,12 @@ extern "C" { * a platform where it doesn't work. */ #ifndef Py_IS_NAN +#ifdef HAVE_ISNAN +#define Py_IS_NAN(X) isnan(X) +#else #define Py_IS_NAN(X) ((X) != (X)) #endif +#endif /* Py_IS_INFINITY(X) * Return 1 if float or double arg is an infinity, else 0. @@ -353,8 +368,12 @@ extern "C" { * Override in pyconfig.h if you have a better spelling on your platform. */ #ifndef Py_IS_INFINITY +#ifdef HAVE_ISINF +#define Py_IS_INFINITY(X) isinf(X) +#else #define Py_IS_INFINITY(X) ((X) && (X)*0.5 == (X)) #endif +#endif /* Py_IS_FINITE(X) * Return 1 if float or double arg is neither infinite nor NAN, else 0. @@ -362,8 +381,12 @@ extern "C" { * macro for this particular test is useful */ #ifndef Py_IS_FINITE +#ifdef HAVE_ISFINITE +#define Py_IS_FINITE(X) isfinite +#else #define Py_IS_FINITE(X) (!Py_IS_INFINITY(X) && !Py_IS_NAN(X)) #endif +#endif /* HUGE_VAL is supposed to expand to a positive double infinity. Python * uses Py_HUGE_VAL instead because some platforms are broken in this @@ -376,6 +399,15 @@ extern "C" { #define Py_HUGE_VAL HUGE_VAL #endif +/* Py_NAN + * A value that evaluates to a NaN. On IEEE 754 platforms INF*0 or + * INF/INF works. Define Py_NO_NAN in pyconfig.h if your platform + * doesn't support NaNs. + */ +#if !defined(Py_NAN) && !defined(Py_NO_NAN) +#define Py_NAN (Py_HUGE_VAL * 0.) +#endif + /* Py_OVERFLOWED(X) * Return 1 iff a libm function overflowed. Set errno to 0 before calling * a libm function, and invoke this macro after, passing the function diff --git a/Include/pystrcmp.h b/Include/pystrcmp.h new file mode 100644 index 0000000..edb1239 --- /dev/null +++ b/Include/pystrcmp.h @@ -0,0 +1,23 @@ +#ifndef Py_STRCMP_H +#define Py_STRCMP_H + +#ifdef __cplusplus +extern "C" { +#endif + +PyAPI_FUNC(int) PyOS_mystrnicmp(const char *, const char *, Py_ssize_t); +PyAPI_FUNC(int) PyOS_mystricmp(const char *, const char *); + +#ifdef MS_WINDOWS +#define PyOS_strnicmp strnicmp +#define PyOS_stricmp stricmp +#else +#define PyOS_strnicmp PyOS_mystrnicmp +#define PyOS_stricmp PyOS_mystricmp +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* !Py_STRCMP_H */ |