methodobject.h revision bebdc376c3aa584bfb9825758d5cf8d5c09c8692
1a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#ifndef Py_METHODOBJECT_H
2a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#define Py_METHODOBJECT_H
3a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#ifdef __cplusplus
4a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossumextern "C" {
5a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#endif
6a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum
7f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum/***********************************************************
85799b520086129ed8aaadeb3b941b3000a42576aGuido van RossumCopyright 1991-1995 by Stichting Mathematisch Centrum, Amsterdam,
95799b520086129ed8aaadeb3b941b3000a42576aGuido van RossumThe Netherlands.
10f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum
11f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum                        All Rights Reserved
12f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum
13f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumPermission to use, copy, modify, and distribute this software and its
14f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumdocumentation for any purpose and without fee is hereby granted,
15f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumprovided that the above copyright notice appear in all copies and that
16f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumboth that copyright notice and this permission notice appear in
17f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumsupporting documentation, and that the names of Stichting Mathematisch
18f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumCentrum or CWI not be used in advertising or publicity pertaining to
19f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossumdistribution of the software without specific, written prior permission.
20f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum
21f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumSTICHTING MATHEMATISCH CENTRUM DISCLAIMS ALL WARRANTIES WITH REGARD TO
22f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumTHIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
23f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumFITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH CENTRUM BE LIABLE
24f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumFOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
25f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
26f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
27f70e43a073b36c6f6e9894c01025243a77a452d4Guido van RossumOF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
28f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum
29f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum******************************************************************/
30f70e43a073b36c6f6e9894c01025243a77a452d4Guido van Rossum
3185a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum/* Method object interface */
3285a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum
33051ab123b465685e714668099c0a6dd86de5673bGuido van Rossumextern DL_IMPORT(PyTypeObject) PyCFunction_Type;
3485a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum
35caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum#define PyCFunction_Check(op) ((op)->ob_type == &PyCFunction_Type)
3685a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum
37caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumtypedef PyObject *(*PyCFunction) Py_FPROTO((PyObject *, PyObject *));
38bebdc376c3aa584bfb9825758d5cf8d5c09c8692Guido van Rossumtypedef PyObject *(*PyCFunctionWithKeywords)
39bebdc376c3aa584bfb9825758d5cf8d5c09c8692Guido van Rossum	Py_FPROTO((PyObject *, PyObject *, PyObject *));
4085a5fbbdfea617f6cc8fae82c9e8c2b5c424436dGuido van Rossum
41caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumextern PyCFunction PyCFunction_GetFunction Py_PROTO((PyObject *));
42caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumextern PyObject *PyCFunction_GetSelf Py_PROTO((PyObject *));
43bebdc376c3aa584bfb9825758d5cf8d5c09c8692Guido van Rossumextern int PyCFunction_GetFlags Py_PROTO((PyObject *));
443f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum
45caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumstruct PyMethodDef {
46caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum	char		*ml_name;
47caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum	PyCFunction	ml_meth;
48caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum	int		ml_flags;
49caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum	char		*ml_doc;
503f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum};
51caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumtypedef struct PyMethodDef PyMethodDef;
523f5da24ea304e674a9abbdcffc4d671e32aa70f1Guido van Rossum
53caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumextern PyObject *Py_FindMethod
54caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum	Py_PROTO((PyMethodDef[], PyObject *, char *));
559dc8d0e0a3f9520cfff61c479beea29d593e2e39Guido van Rossum
56caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossumextern PyObject *PyCFunction_New
57caa63808861d4e92d4dc1005fc01de0f2e4a8fd0Guido van Rossum	Py_PROTO((PyMethodDef *, PyObject *));
58a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum
595799b520086129ed8aaadeb3b941b3000a42576aGuido van Rossum/* Flag passed to newmethodobject */
605799b520086129ed8aaadeb3b941b3000a42576aGuido van Rossum#define METH_VARARGS  0x0001
61bebdc376c3aa584bfb9825758d5cf8d5c09c8692Guido van Rossum#define METH_KEYWORDS 0x0002
625799b520086129ed8aaadeb3b941b3000a42576aGuido van Rossum
6369785032358a007fbcf56e62c0acea59db79431fGuido van Rossumtypedef struct PyMethodChain {
6469785032358a007fbcf56e62c0acea59db79431fGuido van Rossum	PyMethodDef *methods;		/* Methods of this type */
6569785032358a007fbcf56e62c0acea59db79431fGuido van Rossum	struct PyMethodChain *link;	/* NULL or base type */
6669785032358a007fbcf56e62c0acea59db79431fGuido van Rossum} PyMethodChain;
6769785032358a007fbcf56e62c0acea59db79431fGuido van Rossum
6869785032358a007fbcf56e62c0acea59db79431fGuido van Rossumextern PyObject *Py_FindMethodInChain
6969785032358a007fbcf56e62c0acea59db79431fGuido van Rossum	Py_PROTO((PyMethodChain *, PyObject *, char *));
7069785032358a007fbcf56e62c0acea59db79431fGuido van Rossum
71a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#ifdef __cplusplus
72a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum}
73a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#endif
74a3309960a50dbadfd854299e7420223eb8718a56Guido van Rossum#endif /* !Py_METHODOBJECT_H */
75