symbian-qemu-0.9.1-12/python-win32-2.6.1/include/methodobject.h
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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 /* This is about the type 'builtin_function_or_method',
       
    11    not Python methods in user-defined classes.  See classobject.h
       
    12    for the latter. */
       
    13 
       
    14 PyAPI_DATA(PyTypeObject) PyCFunction_Type;
       
    15 
       
    16 #define PyCFunction_Check(op) (Py_TYPE(op) == &PyCFunction_Type)
       
    17 
       
    18 typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
       
    19 typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *,
       
    20 					     PyObject *);
       
    21 typedef PyObject *(*PyNoArgsFunction)(PyObject *);
       
    22 
       
    23 PyAPI_FUNC(PyCFunction) PyCFunction_GetFunction(PyObject *);
       
    24 PyAPI_FUNC(PyObject *) PyCFunction_GetSelf(PyObject *);
       
    25 PyAPI_FUNC(int) PyCFunction_GetFlags(PyObject *);
       
    26 
       
    27 /* Macros for direct access to these values. Type checks are *not*
       
    28    done, so use with care. */
       
    29 #define PyCFunction_GET_FUNCTION(func) \
       
    30         (((PyCFunctionObject *)func) -> m_ml -> ml_meth)
       
    31 #define PyCFunction_GET_SELF(func) \
       
    32 	(((PyCFunctionObject *)func) -> m_self)
       
    33 #define PyCFunction_GET_FLAGS(func) \
       
    34 	(((PyCFunctionObject *)func) -> m_ml -> ml_flags)
       
    35 PyAPI_FUNC(PyObject *) PyCFunction_Call(PyObject *, PyObject *, PyObject *);
       
    36 
       
    37 struct PyMethodDef {
       
    38     const char	*ml_name;	/* The name of the built-in function/method */
       
    39     PyCFunction  ml_meth;	/* The C function that implements it */
       
    40     int		 ml_flags;	/* Combination of METH_xxx flags, which mostly
       
    41 				   describe the args expected by the C func */
       
    42     const char	*ml_doc;	/* The __doc__ attribute, or NULL */
       
    43 };
       
    44 typedef struct PyMethodDef PyMethodDef;
       
    45 
       
    46 PyAPI_FUNC(PyObject *) Py_FindMethod(PyMethodDef[], PyObject *, const char *);
       
    47 
       
    48 #define PyCFunction_New(ML, SELF) PyCFunction_NewEx((ML), (SELF), NULL)
       
    49 PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, 
       
    50 					 PyObject *);
       
    51 
       
    52 /* Flag passed to newmethodobject */
       
    53 #define METH_OLDARGS  0x0000
       
    54 #define METH_VARARGS  0x0001
       
    55 #define METH_KEYWORDS 0x0002
       
    56 /* METH_NOARGS and METH_O must not be combined with the flags above. */
       
    57 #define METH_NOARGS   0x0004
       
    58 #define METH_O        0x0008
       
    59 
       
    60 /* METH_CLASS and METH_STATIC are a little different; these control
       
    61    the construction of methods for a class.  These cannot be used for
       
    62    functions in modules. */
       
    63 #define METH_CLASS    0x0010
       
    64 #define METH_STATIC   0x0020
       
    65 
       
    66 /* METH_COEXIST allows a method to be entered eventhough a slot has
       
    67    already filled the entry.  When defined, the flag allows a separate
       
    68    method, "__contains__" for example, to coexist with a defined 
       
    69    slot like sq_contains. */
       
    70 
       
    71 #define METH_COEXIST   0x0040
       
    72 
       
    73 typedef struct PyMethodChain {
       
    74     PyMethodDef *methods;		/* Methods of this type */
       
    75     struct PyMethodChain *link;	/* NULL or base type */
       
    76 } PyMethodChain;
       
    77 
       
    78 PyAPI_FUNC(PyObject *) Py_FindMethodInChain(PyMethodChain *, PyObject *,
       
    79                                             const char *);
       
    80 
       
    81 typedef struct {
       
    82     PyObject_HEAD
       
    83     PyMethodDef *m_ml; /* Description of the C function to call */
       
    84     PyObject    *m_self; /* Passed as 'self' arg to the C func, can be NULL */
       
    85     PyObject    *m_module; /* The __module__ attribute, can be anything */
       
    86 } PyCFunctionObject;
       
    87 
       
    88 PyAPI_FUNC(int) PyCFunction_ClearFreeList(void);
       
    89 
       
    90 #ifdef __cplusplus
       
    91 }
       
    92 #endif
       
    93 #endif /* !Py_METHODOBJECT_H */