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 / methodobject.h < prev    next >
C/C++ Source or Header  |  2003-12-30  |  2KB  |  80 lines

  1.  
  2. /* Method object interface */
  3.  
  4. #ifndef Py_METHODOBJECT_H
  5. #define Py_METHODOBJECT_H
  6. #ifdef __cplusplus
  7. extern "C" {
  8. #endif
  9.  
  10. PyAPI_DATA(PyTypeObject) PyCFunction_Type;
  11.  
  12. #define PyCFunction_Check(op) ((op)->ob_type == &PyCFunction_Type)
  13.  
  14. typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
  15. typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
  16.                          PyObject *);
  17. typedef PyObject *(*PyNoArgsFunction)(PyObject *);
  18.  
  19. PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *);
  20. PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *);
  21. PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *);
  22.  
  23. /* Macros for direct access to these values. Type checks are *not*
  24.    done, so use with care. */
  25. #define PyCFunction_GET_FUNCTION(func) \
  26.         (((PyCFunctionObject *)func) -> m_ml -> ml_meth)
  27. #define PyCFunction_GET_SELF(func) \
  28.     (((PyCFunctionObject *)func) -> m_self)
  29. #define PyCFunction_GET_FLAGS(func) \
  30.     (((PyCFunctionObject *)func) -> m_ml -> ml_flags)
  31. PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *);
  32.  
  33. struct PyMethodDef {
  34.     char    *ml_name;
  35.     PyCFunction  ml_meth;
  36.     int         ml_flags;
  37.     char    *ml_doc;
  38. };
  39. typedef struct PyMethodDef PyMethodDef;
  40.  
  41. PyAPI_FUNC(PyObject *) Py_FindMethod(PyMethodDef[], PyObject *, char *);
  42.  
  43. #define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL)
  44. PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, 
  45.                      PyObject *);
  46.  
  47. /* Flag passed to newmethodobject */
  48. #define METH_OLDARGS  0x0000
  49. #define METH_VARARGS  0x0001
  50. #define METH_KEYWORDS 0x0002
  51. /* METH_NOARGS and METH_O must not be combined with the flags above. */
  52. #define METH_NOARGS   0x0004
  53. #define METH_O        0x0008
  54.  
  55. /* METH_CLASS and METH_STATIC are a little different; these control
  56.    the construction of methods for a class.  These cannot be used for
  57.    functions in modules. */
  58. #define METH_CLASS    0x0010
  59. #define METH_STATIC   0x0020
  60.  
  61. typedef struct PyMethodChain {
  62.     PyMethodDef *methods;        /* Methods of this type */
  63.     struct PyMethodChain *link;    /* NULL or base type */
  64. } PyMethodChain;
  65.  
  66. PyAPI_FUNC(PyObject *) Py_FindMethodInChain(PyMethodChain *, PyObject *,
  67.                                                   char *);
  68.  
  69. typedef struct {
  70.     PyObject_HEAD
  71.     PyMethodDef *m_ml;
  72.     PyObject    *m_self;
  73.     PyObject    *m_module;
  74. } PyCFunctionObject;
  75.  
  76. #ifdef __cplusplus
  77. }
  78. #endif
  79. #endif /* !Py_METHODOBJECT_H */
  80.