]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Function objects no longer contain a parse tree node, but intermediate
authorGuido van Rossum <guido@python.org>
Sun, 18 Nov 1990 17:44:06 +0000 (17:44 +0000)
committerGuido van Rossum <guido@python.org>
Sun, 18 Nov 1990 17:44:06 +0000 (17:44 +0000)
code.

Objects/funcobject.c

index 1adc3bc9d094598e89147ec33985fc2622e0167c..88508723a4f30dfc5db243857b9a43a38c89e494 100644 (file)
@@ -4,42 +4,39 @@
 
 #include "PROTO.h"
 #include "object.h"
-#include "node.h"
-#include "stringobject.h"
 #include "funcobject.h"
 #include "objimpl.h"
-#include "token.h"
 
 typedef struct {
        OB_HEAD
-       node *func_node;
+       object *func_code;
        object *func_globals;
 } funcobject;
 
 object *
-newfuncobject(n, globals)
-       node *n;
+newfuncobject(code, globals)
+       object *code;
        object *globals;
 {
        funcobject *op = NEWOBJ(funcobject, &Functype);
        if (op != NULL) {
-               op->func_node = n;
-               if (globals != NULL)
-                       INCREF(globals);
+               INCREF(code);
+               op->func_code = code;
+               INCREF(globals);
                op->func_globals = globals;
        }
        return (object *)op;
 }
 
-node *
-getfuncnode(op)
+object *
+getfunccode(op)
        object *op;
 {
        if (!is_funcobject(op)) {
                err_badcall();
                return NULL;
        }
-       return ((funcobject *) op) -> func_node;
+       return ((funcobject *) op) -> func_code;
 }
 
 object *
@@ -59,31 +56,9 @@ static void
 funcdealloc(op)
        funcobject *op;
 {
-       /* XXX free node? */
+       DECREF(op->func_code);
        DECREF(op->func_globals);
-       free((char *)op);
-}
-
-static void
-funcprint(op, fp, flags)
-       funcobject *op;
-       FILE *fp;
-       int flags;
-{
-       node *n = op->func_node;
-       n = CHILD(n, 1);
-       fprintf(fp, "<user function %s>", STR(n));
-}
-
-static object *
-funcrepr(op)
-       funcobject *op;
-{
-       char buf[100];
-       node *n = op->func_node;
-       n = CHILD(n, 1);
-       sprintf(buf, "<user function %.80s>", STR(n));
-       return newstringobject(buf);
+       DEL(op);
 }
 
 typeobject Functype = {
@@ -93,9 +68,9 @@ typeobject Functype = {
        sizeof(funcobject),
        0,
        funcdealloc,    /*tp_dealloc*/
-       funcprint,      /*tp_print*/
+       0,              /*tp_print*/
        0,              /*tp_getattr*/
        0,              /*tp_setattr*/
        0,              /*tp_compare*/
-       funcrepr,       /*tp_repr*/
+       0,              /*tp_repr*/
 };