summaryrefslogtreecommitdiffstats
path: root/Objects/funcobject.c
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1993-05-19 14:50:45 (GMT)
committerGuido van Rossum <guido@python.org>1993-05-19 14:50:45 (GMT)
commit25831652fd4c03323066d4cafdc0551c396a993e (patch)
tree69588df0f98b3280402cad3ed95865d06fa21702 /Objects/funcobject.c
parent687dd13bfec51849c93db7c538ff41d4c8ecddcb (diff)
downloadcpython-25831652fd4c03323066d4cafdc0551c396a993e.zip
cpython-25831652fd4c03323066d4cafdc0551c396a993e.tar.gz
cpython-25831652fd4c03323066d4cafdc0551c396a993e.tar.bz2
Several changes in one:
(1) dictionaries/mappings now have attributes values() and items() as well as keys(); at the C level, use the new function mappinggetnext() to iterate over a dictionary. (2) "class C(): ..." is now illegal; you must write "class C: ...". (3) Class objects now know their own name (finally!); and minor improvements to the way how classes, functions and methods are represented as strings. (4) Added an "access" statement and semantics. (This is still experimental -- as long as you don't use the keyword 'access' nothing should be changed.)
Diffstat (limited to 'Objects/funcobject.c')
-rw-r--r--Objects/funcobject.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/Objects/funcobject.c b/Objects/funcobject.c
index ccf1b29..cf08af7 100644
--- a/Objects/funcobject.c
+++ b/Objects/funcobject.c
@@ -28,12 +28,6 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include "compile.h"
#include "structmember.h"
-typedef struct {
- OB_HEAD
- object *func_code;
- object *func_globals;
-} funcobject;
-
object *
newfuncobject(code, globals)
object *code;
@@ -45,6 +39,8 @@ newfuncobject(code, globals)
op->func_code = code;
INCREF(globals);
op->func_globals = globals;
+ op->func_name = ((codeobject*)(op->func_code))->co_name;
+ INCREF(op->func_name);
}
return (object *)op;
}
@@ -78,6 +74,7 @@ getfuncglobals(op)
static struct memberlist func_memberlist[] = {
{"func_code", T_OBJECT, OFF(func_code), READONLY},
{"func_globals",T_OBJECT, OFF(func_globals), READONLY},
+ {"func_name", T_OBJECT, OFF(func_name), READONLY},
{NULL} /* Sentinel */
};
@@ -104,7 +101,7 @@ func_repr(op)
{
char buf[140];
sprintf(buf, "<function %.100s at %lx>",
- getstringvalue(((codeobject*)(op->func_code))->co_name),
+ getstringvalue(op->func_name),
(long)op);
return newstringobject(buf);
}