diff options
author | Guido van Rossum <guido@python.org> | 2006-08-17 05:42:55 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2006-08-17 05:42:55 (GMT) |
commit | 50e9fb9e2d6b4b12524116ab775ac6543e4a5332 (patch) | |
tree | 96f41e9a6d07a2754fcaceb7b54a7c11f112687f /Include | |
parent | d033ddf4dc501e0920adec9e193750e515bbd128 (diff) | |
download | cpython-50e9fb9e2d6b4b12524116ab775ac6543e4a5332.zip cpython-50e9fb9e2d6b4b12524116ab775ac6543e4a5332.tar.gz cpython-50e9fb9e2d6b4b12524116ab775ac6543e4a5332.tar.bz2 |
Completely get rid of PyClass and PyInstance.
(classobject.[ch] aren't empty yet because they also define PyMethod.)
This breaks lots of stuff, notably cPickle. But it's a step in the right
direction. I'll clean it up later.
(Also a few unrelated changes, e.g. T_NONE to define a "struct member"
that is always None, and simplification of __hash__ -- these are unfinished.)
Diffstat (limited to 'Include')
-rw-r--r-- | Include/Python.h | 8 | ||||
-rw-r--r-- | Include/classobject.h | 44 | ||||
-rw-r--r-- | Include/methodobject.h | 2 | ||||
-rw-r--r-- | Include/object.h | 9 | ||||
-rw-r--r-- | Include/structmember.h | 4 |
5 files changed, 9 insertions, 58 deletions
diff --git a/Include/Python.h b/Include/Python.h index bbb9a08..d75854c 100644 --- a/Include/Python.h +++ b/Include/Python.h @@ -7,14 +7,6 @@ #include "patchlevel.h" #include "pyconfig.h" -/* Cyclic gc is always enabled, starting with release 2.3a1. Supply the - * old symbol for the benefit of extension modules written before then - * that may be conditionalizing on it. The core doesn't use it anymore. - */ -#ifndef WITH_CYCLE_GC -#define WITH_CYCLE_GC 1 -#endif - #include <limits.h> #ifndef UCHAR_MAX diff --git a/Include/classobject.h b/Include/classobject.h index 8f8db7d..885c43e 100644 --- a/Include/classobject.h +++ b/Include/classobject.h @@ -1,5 +1,4 @@ - -/* Class object interface */ +/* Former class object interface -- now only (un)bound methods are here */ /* Revealing some structures (not for general use) */ @@ -11,58 +10,22 @@ extern "C" { typedef struct { PyObject_HEAD - PyObject *cl_bases; /* A tuple of class objects */ - PyObject *cl_dict; /* A dictionary */ - PyObject *cl_name; /* A string */ - /* The following three are functions or NULL */ - PyObject *cl_getattr; - PyObject *cl_setattr; - PyObject *cl_delattr; -} PyClassObject; - -typedef struct { - PyObject_HEAD - PyClassObject *in_class; /* The class object */ - PyObject *in_dict; /* A dictionary */ - PyObject *in_weakreflist; /* List of weak references */ -} PyInstanceObject; - -typedef struct { - PyObject_HEAD PyObject *im_func; /* The callable object implementing the method */ PyObject *im_self; /* The instance it is bound to, or NULL */ PyObject *im_class; /* The class that asked for the method */ PyObject *im_weakreflist; /* List of weak references */ } PyMethodObject; -PyAPI_DATA(PyTypeObject) PyClass_Type, PyInstance_Type, PyMethod_Type; +PyAPI_DATA(PyTypeObject) PyMethod_Type; -#define PyClass_Check(op) ((op)->ob_type == &PyClass_Type) -#define PyInstance_Check(op) ((op)->ob_type == &PyInstance_Type) #define PyMethod_Check(op) ((op)->ob_type == &PyMethod_Type) -PyAPI_FUNC(PyObject *) PyClass_New(PyObject *, PyObject *, PyObject *); -PyAPI_FUNC(PyObject *) PyInstance_New(PyObject *, PyObject *, - PyObject *); -PyAPI_FUNC(PyObject *) PyInstance_NewRaw(PyObject *, PyObject *); PyAPI_FUNC(PyObject *) PyMethod_New(PyObject *, PyObject *, PyObject *); PyAPI_FUNC(PyObject *) PyMethod_Function(PyObject *); PyAPI_FUNC(PyObject *) PyMethod_Self(PyObject *); PyAPI_FUNC(PyObject *) PyMethod_Class(PyObject *); -/* Look up attribute with name (a string) on instance object pinst, using - * only the instance and base class dicts. If a descriptor is found in - * a class dict, the descriptor is returned without calling it. - * Returns NULL if nothing found, else a borrowed reference to the - * value associated with name in the dict in which name was found. - * The point of this routine is that it never calls arbitrary Python - * code, so is always "safe": all it does is dict lookups. The function - * can't fail, never sets an exception, and NULL is not an error (it just - * means "not found"). - */ -PyAPI_FUNC(PyObject *) _PyInstance_Lookup(PyObject *pinst, PyObject *name); - /* Macros for direct access to these values. Type checks are *not* done, so use with care. */ #define PyMethod_GET_FUNCTION(meth) \ @@ -72,9 +35,6 @@ PyAPI_FUNC(PyObject *) _PyInstance_Lookup(PyObject *pinst, PyObject *name); #define PyMethod_GET_CLASS(meth) \ (((PyMethodObject *)meth) -> im_class) -PyAPI_FUNC(int) PyClass_IsSubclass(PyObject *, PyObject *); - - #ifdef __cplusplus } #endif diff --git a/Include/methodobject.h b/Include/methodobject.h index c887d94..67a2473 100644 --- a/Include/methodobject.h +++ b/Include/methodobject.h @@ -63,7 +63,7 @@ PyAPI_FUNC(PyObject *) PyCFunction_NewEx(PyMethodDef *, PyObject *, #define METH_CLASS 0x0010 #define METH_STATIC 0x0020 -/* METH_COEXIST allows a method to be entered eventhough a slot has +/* METH_COEXIST allows a method to be entered even though a slot has already filled the entry. When defined, the flag allows a separate method, "__contains__" for example, to coexist with a defined slot like sq_contains. */ diff --git a/Include/object.h b/Include/object.h index f8484ba..a9a880a 100644 --- a/Include/object.h +++ b/Include/object.h @@ -147,7 +147,7 @@ typedef int (*visitproc)(PyObject *, void *); typedef int (*traverseproc)(PyObject *, visitproc, void *); typedef struct { - /* Number implementations should check *both* + /* Number implementations must check *both* arguments for proper type and implement the necessary conversions in the slot functions themselves. */ @@ -173,7 +173,7 @@ typedef struct { unaryfunc nb_float; unaryfunc nb_oct; unaryfunc nb_hex; - /* Added in release 2.0 */ + binaryfunc nb_inplace_add; binaryfunc nb_inplace_subtract; binaryfunc nb_inplace_multiply; @@ -185,13 +185,11 @@ typedef struct { binaryfunc nb_inplace_xor; binaryfunc nb_inplace_or; - /* Added in release 2.2 */ binaryfunc nb_floor_divide; binaryfunc nb_true_divide; binaryfunc nb_inplace_floor_divide; binaryfunc nb_inplace_true_divide; - /* Added in release 2.5 */ lenfunc nb_index; } PyNumberMethods; @@ -204,7 +202,7 @@ typedef struct { ssizeobjargproc sq_ass_item; ssizessizeobjargproc sq_ass_slice; objobjproc sq_contains; - /* Added in release 2.0 */ + binaryfunc sq_inplace_concat; ssizeargfunc sq_inplace_repeat; } PySequenceMethods; @@ -292,7 +290,6 @@ typedef struct _typeobject { /* weak reference enabler */ Py_ssize_t tp_weaklistoffset; - /* Added in release 2.2 */ /* Iterators */ getiterfunc tp_iter; iternextfunc tp_iternext; diff --git a/Include/structmember.h b/Include/structmember.h index e761f6d..a35b7a7 100644 --- a/Include/structmember.h +++ b/Include/structmember.h @@ -67,9 +67,11 @@ typedef struct PyMemberDef { converting to None. */ #ifdef HAVE_LONG_LONG #define T_LONGLONG 17 -#define T_ULONGLONG 18 +#define T_ULONGLONG 18 #endif /* HAVE_LONG_LONG */ +#define T_NONE 19 /* Value is always None */ + /* Flags */ #define READONLY 1 #define RO READONLY /* Shorthand */ |