home *** CD-ROM | disk | FTP | other *** search
/ PC World 2005 June / PCWorld_2005-06_cd.bin / software / vyzkuste / firewally / firewally.exe / framework-2.3.exe / descrobject.h < prev    next >
C/C++ Source or Header  |  2003-12-30  |  2KB  |  92 lines

  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) ((d)->ob_type->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.  
  92.