mirror of
				https://github.com/python/cpython.git
				synced 2025-10-26 03:04:41 +00:00 
			
		
		
		
	 7f14f0d8a0
			
		
	
	
		7f14f0d8a0
		
	
	
	
	
		
			
			svn+ssh://pythondev@svn.python.org/python/branches/py3k
................
  r81032 | antoine.pitrou | 2010-05-09 17:52:27 +0200 (dim., 09 mai 2010) | 9 lines
  Recorded merge of revisions 81029 via svnmerge from
  svn+ssh://pythondev@svn.python.org/python/trunk
  ........
    r81029 | antoine.pitrou | 2010-05-09 16:46:46 +0200 (dim., 09 mai 2010) | 3 lines
    Untabify C files. Will watch buildbots.
  ........
................
		
	
			
		
			
				
	
	
		
			96 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* Descriptors */
 | |
| #ifndef Py_DESCROBJECT_H
 | |
| #define Py_DESCROBJECT_H
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| typedef PyObject *(*getter)(PyObject *, void *);
 | |
| typedef int (*setter)(PyObject *, PyObject *, void *);
 | |
| 
 | |
| typedef struct PyGetSetDef {
 | |
|     char *name;
 | |
|     getter get;
 | |
|     setter set;
 | |
|     char *doc;
 | |
|     void *closure;
 | |
| } PyGetSetDef;
 | |
| 
 | |
| typedef PyObject *(*wrapperfunc)(PyObject *self, PyObject *args,
 | |
|                                  void *wrapped);
 | |
| 
 | |
| typedef PyObject *(*wrapperfunc_kwds)(PyObject *self, PyObject *args,
 | |
|                                       void *wrapped, PyObject *kwds);
 | |
| 
 | |
| struct wrapperbase {
 | |
|     char *name;
 | |
|     int offset;
 | |
|     void *function;
 | |
|     wrapperfunc wrapper;
 | |
|     char *doc;
 | |
|     int flags;
 | |
|     PyObject *name_strobj;
 | |
| };
 | |
| 
 | |
| /* Flags for above struct */
 | |
| #define PyWrapperFlag_KEYWORDS 1 /* wrapper function takes keyword args */
 | |
| 
 | |
| /* Various kinds of descriptor objects */
 | |
| 
 | |
| #define PyDescr_COMMON \
 | |
|     PyObject_HEAD \
 | |
|     PyTypeObject *d_type; \
 | |
|     PyObject *d_name
 | |
| 
 | |
| typedef struct {
 | |
|     PyDescr_COMMON;
 | |
| } PyDescrObject;
 | |
| 
 | |
| typedef struct {
 | |
|     PyDescr_COMMON;
 | |
|     PyMethodDef *d_method;
 | |
| } PyMethodDescrObject;
 | |
| 
 | |
| typedef struct {
 | |
|     PyDescr_COMMON;
 | |
|     struct PyMemberDef *d_member;
 | |
| } PyMemberDescrObject;
 | |
| 
 | |
| typedef struct {
 | |
|     PyDescr_COMMON;
 | |
|     PyGetSetDef *d_getset;
 | |
| } PyGetSetDescrObject;
 | |
| 
 | |
| typedef struct {
 | |
|     PyDescr_COMMON;
 | |
|     struct wrapperbase *d_base;
 | |
|     void *d_wrapped; /* This can be any function pointer */
 | |
| } PyWrapperDescrObject;
 | |
| 
 | |
| PyAPI_DATA(PyTypeObject) PyClassMethodDescr_Type;
 | |
| PyAPI_DATA(PyTypeObject) PyGetSetDescr_Type;
 | |
| PyAPI_DATA(PyTypeObject) PyMemberDescr_Type;
 | |
| PyAPI_DATA(PyTypeObject) PyMethodDescr_Type;
 | |
| PyAPI_DATA(PyTypeObject) PyWrapperDescr_Type;
 | |
| PyAPI_DATA(PyTypeObject) PyDictProxy_Type;
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyDescr_NewMethod(PyTypeObject *, PyMethodDef *);
 | |
| PyAPI_FUNC(PyObject *) PyDescr_NewClassMethod(PyTypeObject *, PyMethodDef *);
 | |
| PyAPI_FUNC(PyObject *) PyDescr_NewMember(PyTypeObject *,
 | |
|                                                struct PyMemberDef *);
 | |
| PyAPI_FUNC(PyObject *) PyDescr_NewGetSet(PyTypeObject *,
 | |
|                                                struct PyGetSetDef *);
 | |
| PyAPI_FUNC(PyObject *) PyDescr_NewWrapper(PyTypeObject *,
 | |
|                                                 struct wrapperbase *, void *);
 | |
| #define PyDescr_IsData(d) (Py_TYPE(d)->tp_descr_set != NULL)
 | |
| 
 | |
| PyAPI_FUNC(PyObject *) PyDictProxy_New(PyObject *);
 | |
| PyAPI_FUNC(PyObject *) PyWrapper_New(PyObject *, PyObject *);
 | |
| 
 | |
| 
 | |
| PyAPI_DATA(PyTypeObject) PyProperty_Type;
 | |
| #ifdef __cplusplus
 | |
| }
 | |
| #endif
 | |
| #endif /* !Py_DESCROBJECT_H */
 | |
| 
 |