| #ifndef Py_CPYTHON_MODSUPPORT_H |
| # error "this header file must not be included directly" |
| #endif |
| |
| // A data structure that can be used to run initialization code once in a |
| // thread-safe manner. The C++11 equivalent is std::call_once. |
| typedef struct { |
| uint8_t v; |
| } _PyOnceFlag; |
| |
| typedef struct _PyArg_Parser { |
| const char *format; |
| const char * const *keywords; |
| const char *fname; |
| const char *custom_msg; |
| _PyOnceFlag once; /* atomic one-time initialization flag */ |
| int is_kwtuple_owned; /* does this parser own the kwtuple object? */ |
| 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; |
| |
| PyAPI_FUNC(int) _PyArg_ParseTupleAndKeywordsFast(PyObject *, PyObject *, |
| struct _PyArg_Parser *, ...); |
| |
| #ifdef Py_BUILD_CORE |
| // Internal; defined here to avoid explicitly including pycore_modsupport.h |
| #define _Py_INTERNAL_ABI_SLOT \ |
| {Py_mod_abi, (void*) &(PyABIInfo) { \ |
| .abiinfo_major_version = 1, \ |
| .abiinfo_minor_version = 0, \ |
| .flags = PyABIInfo_INTERNAL, \ |
| .build_version = PY_VERSION_HEX, \ |
| .abi_version = PY_VERSION_HEX }} \ |
| /////////////////////////////////////////////////////// |
| #endif |