symbian-qemu-0.9.1-12/python-win32-2.6.1/include/descrobject.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 /* Descriptors */
       
     2 #ifndef Py_DESCROBJECT_H
       
     3 #define Py_DESCROBJECT_H
       
     4 #ifdef __cplusplus
       
     5 extern "C" {
       
     6 #endif
       
     7 
       
     8 typedef PyObject *(*getter)(PyObject *, void *);
       
     9 typedef int (*setter)(PyObject *, PyObject *, void *);
       
    10 
       
    11 typedef struct PyGetSetDef {
       
    12 	char *name;
       
    13 	getter get;
       
    14 	setter set;
       
    15 	char *doc;
       
    16 	void *closure;
       
    17 } PyGetSetDef;
       
    18 
       
    19 typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
       
    20 				 void *wrapped);
       
    21 
       
    22 typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
       
    23 				      void *wrapped, PyObject *kwds);
       
    24 
       
    25 struct wrapperbase {
       
    26 	char *name;
       
    27 	int offset;
       
    28 	void *function;
       
    29 	wrapperfunc wrapper;
       
    30 	char *doc;
       
    31 	int flags;
       
    32 	PyObject *name_strobj;
       
    33 };
       
    34 
       
    35 /* Flags for above struct */
       
    36 #define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
       
    37 
       
    38 /* Various kinds of descriptor objects */
       
    39 
       
    40 #define PyDescr_COMMON \
       
    41 	PyObject_HEAD \
       
    42 	PyTypeObject *d_type; \
       
    43 	PyObject *d_name
       
    44 
       
    45 typedef struct {
       
    46 	PyDescr_COMMON;
       
    47 } PyDescrObject;
       
    48 
       
    49 typedef struct {
       
    50 	PyDescr_COMMON;
       
    51 	PyMethodDef *d_method;
       
    52 } PyMethodDescrObject;
       
    53 
       
    54 typedef struct {
       
    55 	PyDescr_COMMON;
       
    56 	struct PyMemberDef *d_member;
       
    57 } PyMemberDescrObject;
       
    58 
       
    59 typedef struct {
       
    60 	PyDescr_COMMON;
       
    61 	PyGetSetDef *d_getset;
       
    62 } PyGetSetDescrObject;
       
    63 
       
    64 typedef struct {
       
    65 	PyDescr_COMMON;
       
    66 	struct wrapperbase *d_base;
       
    67 	void *d_wrapped; /* This can be any function pointer */
       
    68 } PyWrapperDescrObject;
       
    69 
       
    70 PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
       
    71 
       
    72 PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
       
    73 PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
       
    74 PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *,
       
    75 					       struct PyMemberDef *);
       
    76 PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
       
    77 					       struct PyGetSetDef *);
       
    78 PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
       
    79 						struct wrapperbase *, void *);
       
    80 #define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL)
       
    81 
       
    82 PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
       
    83 PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);
       
    84 
       
    85 
       
    86 PyAPI_DATA(PyTypeObject) PyProperty_Type;
       
    87 #ifdef __cplusplus
       
    88 }
       
    89 #endif
       
    90 #endif /* !Py_DESCROBJECT_H */
       
    91