#if defined (__SVR4) && defined (__sun)
# include <alloca.h>
#endif
#include "pycore_moduleobject.h"
#include "pycore_typeobject.h"
#if defined(Py_HAVE_C_COMPLEX) && defined(Py_FFI_SUPPORT_C_COMPLEX)
# include "../_complex.h"
#endif
#ifndef MS_WIN32
#define max(a, b) …
#define min(a, b) …
#define PARAMFLAG_FIN …
#define PARAMFLAG_FOUT …
#define PARAMFLAG_FLCID …
#endif
#ifndef CTYPES_MAX_ARGCOUNT
#ifdef __EMSCRIPTEN__
#define CTYPES_MAX_ARGCOUNT …
#else
#define CTYPES_MAX_ARGCOUNT …
#endif
#endif
#if defined(__has_builtin)
#if __has_builtin(__builtin_available)
#define HAVE_BUILTIN_AVAILABLE …
#endif
#endif
#ifdef MS_WIN32
#include <Unknwn.h>
#endif
ctypes_state;
extern struct PyModuleDef _ctypesmodule;
static inline ctypes_state *
get_module_state(PyObject *module)
{ … }
static inline ctypes_state *
get_module_state_by_class(PyTypeObject *cls)
{ … }
static inline ctypes_state *
get_module_state_by_def(PyTypeObject *cls)
{ … }
extern PyType_Spec pyctype_type_spec;
extern PyType_Spec carg_spec;
extern PyType_Spec cfield_spec;
extern PyType_Spec cthunk_spec;
PyCArgObject;
CDataObject;
GETFUNC;
SETFUNC;
PARAMFUNC;
value;
struct tagCDataObject { … };
CThunkObject;
#define CThunk_CheckExact(st, v) …
PyCFuncPtrObject;
extern int PyCStructUnionType_update_stginfo(PyObject *fields, PyObject *type, int isStruct);
extern int PyType_stginfo(PyTypeObject *self, Py_ssize_t *psize, Py_ssize_t *palign, Py_ssize_t *plength);
extern int PyObject_stginfo(PyObject *self, Py_ssize_t *psize, Py_ssize_t *palign, Py_ssize_t *plength);
#define CDataObject_CheckExact(st, v) …
#define CDataObject_Check(st, v) …
#define _CDataObject_HasExternalBuffer(v) …
#define PyCSimpleTypeObject_CheckExact(st, v) …
#define PyCSimpleTypeObject_Check(st, v) …
extern struct fielddesc *_ctypes_get_fielddesc(const char *fmt);
extern PyObject *PyCData_AtAddress(ctypes_state *st, PyObject *type, void *buf);
extern PyObject *PyCData_FromBytes(ctypes_state *st, PyObject *type, char *data, Py_ssize_t length);
#define PyCArrayTypeObject_Check(st, v) …
#define ArrayObject_Check(st, v) …
#define PointerObject_Check(st, v) …
#define PyCPointerTypeObject_Check(st, v) …
#define PyCFuncPtrObject_Check(st,v) …
#define PyCFuncPtrTypeObject_Check(st, v) …
#define PyCStructTypeObject_Check(st, v) …
extern PyObject *
PyCArrayType_from_ctype(ctypes_state *st, PyObject *itemtype, Py_ssize_t length);
extern PyMethodDef _ctypes_module_methods[];
extern CThunkObject *_ctypes_alloc_callback(ctypes_state *st,
PyObject *callable,
PyObject *converters,
PyObject *restype,
int flags);
struct fielddesc { … };
CFieldObject;
StgInfo;
extern int PyCStgInfo_clone(StgInfo *dst_info, StgInfo *src_info);
extern void ctype_clear_stginfo(StgInfo *info);
PPROC;
PyObject *_ctypes_callproc(ctypes_state *st,
PPROC pProc,
PyObject *arguments,
#ifdef MS_WIN32
IUnknown *pIUnk,
GUID *iid,
#endif
int flags,
PyObject *argtypes,
PyObject *restype,
PyObject *checker);
#define FUNCFLAG_STDCALL …
#define FUNCFLAG_CDECL …
#define FUNCFLAG_HRESULT …
#define FUNCFLAG_PYTHONAPI …
#define FUNCFLAG_USE_ERRNO …
#define FUNCFLAG_USE_LASTERROR …
#define TYPEFLAG_ISPOINTER …
#define TYPEFLAG_HASPOINTER …
#define DICTFLAG_FINAL …
struct tagPyCArgObject { … };
#define PyCArg_CheckExact(st, v) …
extern PyCArgObject *PyCArgObject_new(ctypes_state *st);
extern PyObject *
PyCData_get(ctypes_state *st, PyObject *type, GETFUNC getfunc, PyObject *src,
Py_ssize_t index, Py_ssize_t size, char *ptr);
extern int
PyCData_set(ctypes_state *st,
PyObject *dst, PyObject *type, SETFUNC setfunc, PyObject *value,
Py_ssize_t index, Py_ssize_t size, char *ptr);
extern void _ctypes_extend_error(PyObject *exc_class, const char *fmt, ...);
struct basespec { … };
extern ffi_type *_ctypes_get_ffi_type(ctypes_state *st, PyObject *obj);
extern void _ctypes_free_closure(void *);
extern void *_ctypes_alloc_closure(void);
extern PyObject *PyCData_FromBaseObj(ctypes_state *st, PyObject *type,
PyObject *base, Py_ssize_t index, char *adr);
extern int _ctypes_simple_instance(ctypes_state *st, PyObject *obj);
PyObject *_ctypes_get_errobj(ctypes_state *st, int **pspace);
#ifdef USING_MALLOC_CLOSURE_DOT_C
void Py_ffi_closure_free(void *p);
void *Py_ffi_closure_alloc(size_t size, void** codeloc);
#else
#define Py_ffi_closure_free …
#define Py_ffi_closure_alloc …
#endif
static inline int
_stginfo_from_type(ctypes_state *state, PyTypeObject *type, StgInfo **result)
{ … }
static inline int
PyStgInfo_FromType(ctypes_state *state, PyObject *type, StgInfo **result)
{ … }
static inline int
PyStgInfo_FromObject(ctypes_state *state, PyObject *obj, StgInfo **result)
{ … }
static inline int
PyStgInfo_FromAny(ctypes_state *state, PyObject *obj, StgInfo **result)
{ … }
static inline StgInfo *
_PyStgInfo_FromType_NoState(PyObject *type)
{ … }
static inline StgInfo *
PyStgInfo_Init(ctypes_state *state, PyTypeObject *type)
{ … }