[ctypes-commit] ctypes/source ctypes.h,1.89,1.90
Brought to you by:
theller
From: Thomas H. <th...@us...> - 2005-03-31 16:44:41
|
Update of /cvsroot/ctypes/ctypes/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv26645 Modified Files: ctypes.h Log Message: Invented a new slot function in the storage dict ASPARAM. This function must copy the CData object into a 'struct argument'. Index: ctypes.h =================================================================== RCS file: /cvsroot/ctypes/ctypes/source/ctypes.h,v retrieving revision 1.89 retrieving revision 1.90 diff -C2 -d -r1.89 -r1.90 *** ctypes.h 31 Mar 2005 14:21:18 -0000 1.89 --- ctypes.h 31 Mar 2005 16:43:51 -0000 1.90 *************** *** 66,69 **** --- 66,95 ---- } CFuncPtrObject; + typedef struct { + PyObject_HEAD + ffi_type *pffi_type; + char tag; + union { + char c; + char b; + short h; + int i; + long l; + #ifdef HAVE_LONG_LONG + PY_LONG_LONG q; + #endif + double d; + float f; + void *p; + } value; + PyObject *obj; + int size; /* for the 'V' tag */ + } PyCArgObject; + + extern PyTypeObject PyCArg_Type; + extern PyCArgObject *new_CArgObject(void); + #define PyCArg_CheckExact(v) ((v)->ob_type == &PyCArg_Type) + extern PyCArgObject *new_CArgObject(void); + extern PyTypeObject StgDict_Type; #define StgDict_CheckExact(v) ((v)->ob_type == &StgDict_Type) *************** *** 122,127 **** --- 148,172 ---- extern PyMethodDef module_methods[]; + struct argument { + ffi_type *ffi_type; + PyObject *keep; + union result { + char c; + char b; + short h; + int i; + long l; + #ifdef HAVE_LONG_LONG + PY_LONG_LONG q; + #endif + double d; + float f; + void *p; + } value; + }; + typedef PyObject *(* GETFUNC)(void *ptr, unsigned size, PyObject *type, CDataObject *src, int index); typedef PyObject *(* SETFUNC)(void *ptr, PyObject* value, unsigned size, PyObject *type); + typedef int (* ASPARAM)(CDataObject *self, struct argument *pa); /* a table entry describing a predefined ctypes type */ *************** *** 159,165 **** int length; /* number of fields */ ffi_type ffi_type; ! PyObject *proto; /* Only for Pointer/ArrayObject */ SETFUNC setfunc; GETFUNC getfunc; /* Following fields only used by CFuncPtrType_Type instances */ --- 204,211 ---- int length; /* number of fields */ ffi_type ffi_type; ! PyObject *proto; SETFUNC setfunc; GETFUNC getfunc; + ASPARAM asparam; /* Following fields only used by CFuncPtrType_Type instances */ *************** *** 246,275 **** #define DICTFLAG_FINAL 0x1000 - typedef struct { - PyObject_HEAD - ffi_type *pffi_type; - char tag; - union { - char c; - char b; - short h; - int i; - long l; - #ifdef HAVE_LONG_LONG - PY_LONG_LONG q; - #endif - double d; - float f; - void *p; - } value; - PyObject *obj; - int size; /* for the 'V' tag */ - } PyCArgObject; - - extern PyTypeObject PyCArg_Type; - extern PyCArgObject *new_CArgObject(void); - #define PyCArg_CheckExact(v) ((v)->ob_type == &PyCArg_Type) - extern PyCArgObject *new_CArgObject(void); - extern void Extend_Error_Info(PyObject *exc_class, char *fmt, ...); --- 292,295 ---- |