Mercurial > cpython-lru_cache-weakref
diff Objects/funcobject.c @ 2082:4afa7eb4734b legacy-trunk
Added __doc__ attribute (alias func_doc), initialized from first
constant in code object if it is a string, else None
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Sat, 07 Jan 1995 12:01:30 +0000 |
| parents | 866c81068dbd |
| children | ea7b2bf0b521 |
line wrap: on
line diff
--- a/Objects/funcobject.c Sat Jan 07 11:59:29 1995 +0000 +++ b/Objects/funcobject.c Sat Jan 07 12:01:30 1995 +0000 @@ -35,14 +35,26 @@ { funcobject *op = NEWOBJ(funcobject, &Functype); if (op != NULL) { + object *doc; + object *consts; INCREF(code); op->func_code = code; INCREF(globals); op->func_globals = globals; - op->func_name = ((codeobject*)(op->func_code))->co_name; + op->func_name = ((codeobject *)code)->co_name; INCREF(op->func_name); op->func_argcount = -1; /* Unknown */ op->func_argdefs = NULL; /* No default arguments */ + consts = ((codeobject *)code)->co_consts; + if (gettuplesize(consts) >= 1) { + doc = gettupleitem(consts, 0); + if (!is_stringobject(doc)) + doc = None; + } + else + doc = None; + INCREF(doc); + op->func_doc = doc; } return (object *)op; } @@ -117,6 +129,8 @@ {"func_name", T_OBJECT, OFF(func_name), READONLY}, {"func_argcount",T_INT, OFF(func_argcount), READONLY}, {"func_argdefs",T_OBJECT, OFF(func_argdefs), READONLY}, + {"func_doc", T_OBJECT, OFF(func_doc)}, + {"__doc__", T_OBJECT, OFF(func_doc)}, {NULL} /* Sentinel */ }; @@ -135,6 +149,7 @@ DECREF(op->func_code); DECREF(op->func_globals); XDECREF(op->func_argdefs); + XDECREF(op->func_doc); DEL(op); }
