summaryrefslogtreecommitdiff
path: root/Include/modsupport.h
diff options
context:
space:
mode:
authorVinay Sajip <vinay_sajip@yahoo.co.uk>2017-01-27 12:42:45 +0000
committerVinay Sajip <vinay_sajip@yahoo.co.uk>2017-01-27 12:42:45 +0000
commit49851a445bdbd7783f031fbb3e6972b55b885316 (patch)
treeced9f42a5079d86a15ff5f0c9feef8c9c2b83c37 /Include/modsupport.h
parentd09b3dc8acfefb00348f5456d7adba57ff823fdc (diff)
parent4ce36fe07b084455644c8488e2a82e6b75ca38ff (diff)
downloadcpython-49851a445bdbd7783f031fbb3e6972b55b885316.tar.gz
Fixes #29308: Merged fix from 3.5.
Diffstat (limited to 'Include/modsupport.h')
-rw-r--r--Include/modsupport.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/Include/modsupport.h b/Include/modsupport.h
index 6d4b6dcf2e..86719c6e92 100644
--- a/Include/modsupport.h
+++ b/Include/modsupport.h
@@ -20,7 +20,9 @@ extern "C" {
#define Py_BuildValue _Py_BuildValue_SizeT
#define Py_VaBuildValue _Py_VaBuildValue_SizeT
#else
+#ifndef Py_LIMITED_API
PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list);
+#endif /* !Py_LIMITED_API */
#endif
/* Due to a glitch in 3.2, the _SizeT versions weren't exported from the DLL. */
@@ -44,6 +46,32 @@ PyAPI_FUNC(int) _PyArg_NoPositional(const char *funcname, PyObject *args);
#endif
PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
+#ifndef Py_LIMITED_API
+typedef struct _PyArg_Parser {
+ const char *format;
+ const char * const *keywords;
+ const char *fname;
+ const char *custom_msg;
+ int pos; /* number of positional-only arguments */
+ int min; /* minimal number of arguments */
+ int max; /* maximal number of positional arguments */
+ PyObject *kwtuple; /* tuple of keyword parameter names */
+ struct _PyArg_Parser *next;
+} _PyArg_Parser;
+#ifdef PY_SSIZE_T_CLEAN
+#define _PyArg_ParseTupleAndKeywordsFast _PyArg_ParseTupleAndKeywordsFast_SizeT
+#define _PyArg_ParseStack _PyArg_ParseStack_SizeT
+#define _PyArg_VaParseTupleAndKeywordsFast _PyArg_VaParseTupleAndKeywordsFast_SizeT
+#endif
+PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, ...);
+PyAPI_FUNC(int) _PyArg_ParseStack(PyObject **args, Py_ssize_t nargs, PyObject *kwnames,
+ struct _PyArg_Parser *, ...);
+PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywordsFast(PyObject *, PyObject *,
+ struct _PyArg_Parser *, va_list);
+void _PyArg_Fini(void);
+#endif
+
PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *);
PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);