History

add hg and python

cinap_lenrek committed 15 years ago

Commit 4bb9e221 parent 987265c3706 files · +1228772 −-233Browse files

Showing the changes to sys/src/cmd/python/Include/methodobject.h (1 of 3706 files). Show all

Unified · Split

sys/src/cmd/python/Include/methodobject.h+91−0
@@ -0,0 +1,91 @@
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) ((op)->ob_type == &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+#ifdef __cplusplus
89+}
90+#endif
91+#endif /* !Py_METHODOBJECT_H */