summaryrefslogtreecommitdiffstats
path: root/Include
diff options
context:
space:
mode:
Diffstat (limited to 'Include')
-rw-r--r--Include/Python.h1
-rw-r--r--Include/dictobject.h1
-rw-r--r--Include/opcode.h1
-rw-r--r--Include/pyport.h32
-rw-r--r--Include/pystrcmp.h23
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 */