modsupport.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /* Module support interface */
  2. #ifndef Py_MODSUPPORT_H
  3. #define Py_MODSUPPORT_H
  4. #ifdef __cplusplus
  5. extern "C" {
  6. #endif
  7. /* If PY_SSIZE_T_CLEAN is defined, each functions treats #-specifier
  8. to mean Py_ssize_t */
  9. #ifdef PY_SSIZE_T_CLEAN
  10. #undef PyArg_Parse
  11. #undef PyArg_ParseTuple
  12. #undef PyArg_ParseTupleAndKeywords
  13. #undef PyArg_VaParse
  14. #undef PyArg_VaParseTupleAndKeywords
  15. #undef Py_BuildValue
  16. #undef Py_VaBuildValue
  17. #define PyArg_Parse _PyArg_Parse_SizeT
  18. #define PyArg_ParseTuple _PyArg_ParseTuple_SizeT
  19. #define PyArg_ParseTupleAndKeywords _PyArg_ParseTupleAndKeywords_SizeT
  20. #define PyArg_VaParse _PyArg_VaParse_SizeT
  21. #define PyArg_VaParseTupleAndKeywords _PyArg_VaParseTupleAndKeywords_SizeT
  22. #define Py_BuildValue _Py_BuildValue_SizeT
  23. #define Py_VaBuildValue _Py_VaBuildValue_SizeT
  24. #endif
  25. #define Py_CLEANUP_SUPPORTED 0x20000
  26. #define PYTHON_API_VERSION 1013
  27. #define PYTHON_API_STRING "1013"
  28. /* The PYTHON_ABI_VERSION is introduced in PEP 384. For the lifetime of
  29. Python 3, it will stay at the value of 3; changes to the limited API
  30. must be performed in a strictly backwards-compatible manner. */
  31. #define PYTHON_ABI_VERSION 3
  32. #define PYTHON_ABI_STRING "3"
  33. PyAPI_FUNC(int) PyArg_Parse(PyObject *, const char *, ...);
  34. PyAPI_FUNC(int) PyArg_ParseTuple(PyObject *, const char *, ...);
  35. PyAPI_FUNC(int) PyArg_VaParse(PyObject *, const char *, va_list);
  36. PyAPI_FUNC(int) PyArg_ParseTupleAndKeywords(PyObject *, PyObject *,
  37. const char *, char **, ...);
  38. PyAPI_FUNC(int) PyArg_VaParseTupleAndKeywords(PyObject *, PyObject *,
  39. const char *, char **, va_list);
  40. PyAPI_FUNC(int) _PyArg_Parse_SizeT(PyObject *, const char *, ...);
  41. PyAPI_FUNC(int) _PyArg_ParseTuple_SizeT(PyObject *, const char *, ...);
  42. PyAPI_FUNC(int) _PyArg_VaParse_SizeT(PyObject *, const char *, va_list);
  43. PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
  44. const char *, char **, ...);
  45. PyAPI_FUNC(int) _PyArg_VaParseTupleAndKeywords_SizeT(PyObject *, PyObject *,
  46. const char *, char **, va_list);
  47. PyAPI_FUNC(PyObject *) PyModule_Create2(struct PyModuleDef*,
  48. int apiver);
  49. #ifdef Py_LIMITED_API
  50. #define PyModule_Create(module) \
  51. PyModule_Create2(module, PYTHON_ABI_VERSION)
  52. #else
  53. #define PyModule_Create(module) \
  54. PyModule_Create2(module, PYTHON_API_VERSION)
  55. #endif
  56. PyAPI_FUNC(int) PyModule_AddObject(PyObject *m, const char *name, PyObject *o);
  57. PyAPI_FUNC(int) PyModule_AddIntConstant(PyObject *m, const char *name, long value);
  58. PyAPI_FUNC(int) PyModule_AddStringConstant(PyObject *m, const char *name, const char *value);
  59. #define PyModule_AddIntMacro(m, c) PyModule_AddIntConstant(m, #c, c)
  60. #define PyModule_AddStringMacro(m, c) PyModule_AddStringConstant(m, #c, c)
  61. PyAPI_FUNC(struct PyModuleDef*) PyModule_GetDef(PyObject*);
  62. PyAPI_FUNC(void*) PyModule_GetState(PyObject*);
  63. PyAPI_FUNC(PyObject *) Py_BuildValue(const char *, ...);
  64. PyAPI_FUNC(PyObject *) Py_VaBuildValue(const char *, va_list);
  65. PyAPI_FUNC(PyObject *) _Py_BuildValue_SizeT(const char *, ...);
  66. PyAPI_FUNC(PyObject *) _Py_VaBuildValue_SizeT(const char *, va_list);
  67. PyAPI_FUNC(int) _PyArg_NoKeywords(const char *funcname, PyObject *kw);
  68. PyAPI_FUNC(int) PyArg_UnpackTuple(PyObject *args, const char *name, Py_ssize_t min, Py_ssize_t max, ...);
  69. /*
  70. * This is from pyport.h. Perhaps it belongs elsewhere.
  71. */
  72. #ifdef _WIN32
  73. /* explicitly export since PyAPI_FUNC is usually dllimport */
  74. #ifdef __cplusplus
  75. #define PyMODINIT_FUNC extern "C" __declspec(dllexport) PyObject*
  76. #else
  77. #define PyMODINIT_FUNC __declspec(dllexport) PyObject*
  78. #endif
  79. #else
  80. #ifdef __cplusplus
  81. #define PyMODINIT_FUNC extern "C" PyAPI_FUNC(PyObject *)
  82. #else
  83. #define PyMODINIT_FUNC PyAPI_FUNC(PyObject *)
  84. #endif
  85. #endif /* WIN32 */
  86. PyAPI_DATA(char *) _Py_PackageContext;
  87. /* hack hack hack */
  88. #ifndef __va_copy
  89. # ifdef va_copy
  90. # define __va_copy(a,b) va_copy(a,b)
  91. # endif
  92. #endif
  93. #ifdef __cplusplus
  94. }
  95. #endif
  96. #endif /* !Py_MODSUPPORT_H */