diff options
author | Guido van Rossum <guido@python.org> | 1993-11-05 10:20:10 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 1993-11-05 10:20:10 (GMT) |
commit | 2e8f8a398e135ce4ec235c33eb64c29e6b6114ea (patch) | |
tree | 8fdd01414159567f4ce55bf31d701347a5e83e5c /Objects/funcobject.c | |
parent | 4199facacd002fdaa2aa9c00d3bc81f9b8569862 (diff) | |
download | cpython-2e8f8a398e135ce4ec235c33eb64c29e6b6114ea.zip cpython-2e8f8a398e135ce4ec235c33eb64c29e6b6114ea.tar.gz cpython-2e8f8a398e135ce4ec235c33eb64c29e6b6114ea.tar.bz2 |
Added compare operations for functions and code objects.
(Also hash, but it doesn't work yet.)
Diffstat (limited to 'Objects/funcobject.c')
-rw-r--r-- | Objects/funcobject.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/Objects/funcobject.c b/Objects/funcobject.c index cf08af7..4dc0b90 100644 --- a/Objects/funcobject.c +++ b/Objects/funcobject.c @@ -106,6 +106,27 @@ func_repr(op) return newstringobject(buf); } +static int +func_compare(f, g) + funcobject *f, *g; +{ + if (f->func_globals != g->func_globals) + return (f->func_globals < g->func_globals) ? -1 : 1; + return cmpobject(f->func_code, g->func_code); +} + +static long +func_hash(f) + funcobject *f; +{ + long h; + h = hashobject(f->func_code); + if (h == -1) return h; + h = h ^ (long)f->func_globals; + if (h == -1) h = -2; + return h; +} + typeobject Functype = { OB_HEAD_INIT(&Typetype) 0, @@ -116,6 +137,10 @@ typeobject Functype = { 0, /*tp_print*/ func_getattr, /*tp_getattr*/ 0, /*tp_setattr*/ - 0, /*tp_compare*/ + func_compare, /*tp_compare*/ func_repr, /*tp_repr*/ + 0, /*tp_as_number*/ + 0, /*tp_as_sequence*/ + 0, /*tp_as_mapping*/ + func_hash, /*tp_hash*/ }; |