PageRenderTime 465ms CodeModel.GetById 221ms app.highlight 6ms RepoModel.GetById 236ms app.codeStats 0ms

/Include/modsupport.h

http://unladen-swallow.googlecode.com/
C++ Header | 136 lines | 63 code | 16 blank | 57 comment | 2 complexity | 45d1c74fa6e42832db205529d32f15fd MD5 | raw file
  1
  2#ifndef Py_MODSUPPORT_H
  3#define Py_MODSUPPORT_H
  4#ifdef __cplusplus
  5extern "C" {
  6#endif
  7
  8/* Module support interface */
  9
 10#include <stdarg.h>
 11
 12/* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
 13   to mean Py_ssize_t */
 14#ifdef PY_SSIZE_T_CLEAN
 15#define PyArg_Parse			_PyArg_Parse_SizeT
 16#define PyArg_ParseTuple		_PyArg_ParseTuple_SizeT
 17#define PyArg_ParseTupleAndKeywords	_PyArg_ParseTupleAndKeywords_SizeT
 18#define PyArg_VaParse			_PyArg_VaParse_SizeT
 19#define PyArg_VaParseTupleAndKeywords	_PyArg_VaParseTupleAndKeywords_SizeT
 20#define Py_BuildValue			_Py_BuildValue_SizeT
 21#define Py_VaBuildValue			_Py_VaBuildValue_SizeT
 22#else
 23PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list);
 24#endif
 25
 26PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...);
 27PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...) Py_FORMAT_PARSETUPLE(PyArg_ParseTuple, 2, 3);
 28PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
 29                                                  const char *, char **, ...);
 30PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *, const char *, Py_ssize_t, Py_ssize_t, ...);
 31PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...);
 32PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
 33PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kw);
 34
 35PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list);
 36PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
 37                                                  const char *, char **, va_list);
 38PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
 39
 40PyAPI_FUNC(int) PyModule_AddObject(PyObject *, const char *, PyObject *);
 41PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *, const char *, long);
 42PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *, const char *, const char *);
 43#define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
 44#define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
 45
 46#define PYTHON_API_VERSION 1014
 47#define PYTHON_API_STRING "1014"
 48/* The API version is maintained (independently from the Python version)
 49   so we can detect mismatches between the interpreter and dynamically
 50   loaded modules.  These are diagnosed by an error message but
 51   the module is still loaded (because the mismatch can only be tested
 52   after loading the module).  The error message is intended to
 53   explain the core dump a few seconds later.
 54
 55   The symbol PYTHON_API_STRING defines the same value as a string
 56   literal.  *** PLEASE MAKE SURE THE DEFINITIONS MATCH. ***
 57
 58   Please add a line or two to the top of this log for each API
 59   version change:
 60
 61    5-Nov-2009  COW     1014    Unladen Swallow ABI incompatibility.
 62
 63   22-Feb-2006  MvL	1013	PEP 353 - long indices for sequence lengths
 64
 65   19-Aug-2002  GvR	1012	Changes to string object struct for
 66   				interning changes, saving 3 bytes.
 67
 68   17-Jul-2001	GvR	1011	Descr-branch, just to be on the safe side
 69
 70   25-Jan-2001  FLD     1010    Parameters added to PyCode_New() and
 71                                PyFrame_New(); Python 2.1a2
 72
 73   14-Mar-2000  GvR     1009    Unicode API added
 74
 75   3-Jan-1999	GvR	1007	Decided to change back!  (Don't reuse 1008!)
 76
 77   3-Dec-1998	GvR	1008	Python 1.5.2b1
 78
 79   18-Jan-1997	GvR	1007	string interning and other speedups
 80
 81   11-Oct-1996	GvR	renamed Py_Ellipses to Py_Ellipsis :-(
 82
 83   30-Jul-1996	GvR	Slice and ellipses syntax added
 84
 85   23-Jul-1996	GvR	For 1.4 -- better safe than sorry this time :-)
 86
 87   7-Nov-1995	GvR	Keyword arguments (should've been done at 1.3 :-( )
 88
 89   10-Jan-1995	GvR	Renamed globals to new naming scheme
 90
 91   9-Jan-1995	GvR	Initial version (incompatible with older API)
 92*/
 93
 94#ifdef MS_WINDOWS
 95/* Special defines for Windows versions used to live here.  Things
 96   have changed, and the "Version" is now in a global string variable.
 97   Reason for this is that this for easier branding of a "custom DLL"
 98   without actually needing a recompile.  */
 99#endif /* MS_WINDOWS */
100
101#if SIZEOF_SIZE_T != SIZEOF_INT
102/* On a 64-bit system, rename the Py_InitModule4 so that 2.4
103   modules cannot get loaded into a 2.5 interpreter */
104#define Py_InitModule4 Py_InitModule4_64
105#endif
106
107#ifdef Py_TRACE_REFS
108 /* When we are tracing reference counts, rename Py_InitModule4 so
109    modules compiled with incompatible settings will generate a
110    link-time error. */
111 #if SIZEOF_SIZE_T != SIZEOF_INT
112 #undef Py_InitModule4
113 #define Py_InitModule4 Py_InitModule4TraceRefs_64
114 #else
115 #define Py_InitModule4 Py_InitModule4TraceRefs
116 #endif
117#endif
118
119PyAPI_FUNC(PyObject *) Py_InitModule4(const char *name, PyMethodDef *methods,
120                                      const char *doc, PyObject *self,
121                                      int apiver);
122
123#define Py_InitModule(name, methods) \
124	Py_InitModule4(name, methods, (char *)NULL, (PyObject *)NULL, \
125		       PYTHON_API_VERSION)
126
127#define Py_InitModule3(name, methods, doc) \
128	Py_InitModule4(name, methods, doc, (PyObject *)NULL, \
129		       PYTHON_API_VERSION)
130
131PyAPI_DATA(char *) _Py_PackageContext;
132
133#ifdef __cplusplus
134}
135#endif
136#endif /* !Py_MODSUPPORT_H */