]> granicus.if.org Git - python/commitdiff
Support for tp_getattro, tp_setattro (Sjoerd)
authorGuido van Rossum <guido@python.org>
Fri, 9 Aug 1996 20:52:03 +0000 (20:52 +0000)
committerGuido van Rossum <guido@python.org>
Fri, 9 Aug 1996 20:52:03 +0000 (20:52 +0000)
Objects/dictobject.c
Objects/mappingobject.c
Objects/object.c

index f6558283eddfc46fea0765b01cbe881bb8df6fa9..605c6db744c5809d8ce364d8b2395d1429b7b9b0 100644 (file)
@@ -769,6 +769,9 @@ getattro(v, name)
        object *v;
        object *name;
 {
+       if (v->ob_type->tp_getattro != NULL)
+               return (*v->ob_type->tp_getattro)(v, name);
+
        if (name != last_name_object) {
                XDECREF(last_name_object);
                INCREF(name);
@@ -784,6 +787,9 @@ setattro(v, name, value)
        object *name;
        object *value;
 {
+       if (v->ob_type->tp_setattro != NULL)
+               return (*v->ob_type->tp_setattro)(v, name, value);
+
        if (name != last_name_object) {
                XDECREF(last_name_object);
                INCREF(name);
index f6558283eddfc46fea0765b01cbe881bb8df6fa9..605c6db744c5809d8ce364d8b2395d1429b7b9b0 100644 (file)
@@ -769,6 +769,9 @@ getattro(v, name)
        object *v;
        object *name;
 {
+       if (v->ob_type->tp_getattro != NULL)
+               return (*v->ob_type->tp_getattro)(v, name);
+
        if (name != last_name_object) {
                XDECREF(last_name_object);
                INCREF(name);
@@ -784,6 +787,9 @@ setattro(v, name, value)
        object *name;
        object *value;
 {
+       if (v->ob_type->tp_setattro != NULL)
+               return (*v->ob_type->tp_setattro)(v, name, value);
+
        if (name != last_name_object) {
                XDECREF(last_name_object);
                INCREF(name);
index be40c40ed34d7a24072b31dc6cecb32089c9d990..9d8a16bc89e02ba955305393c07f6e49a83dbd5e 100644 (file)
@@ -326,6 +326,16 @@ getattr(v, name)
        object *v;
        char *name;
 {
+       if (v->ob_type->tp_getattro != NULL) {
+               object *w, *res;
+               w = newstringobject(name);
+               if (w == NULL)
+                       return NULL;
+               res = (*v->ob_type->tp_getattro)(v, w);
+               XDECREF(w);
+               return res;
+       }
+
        if (v->ob_type->tp_getattr == NULL) {
                err_setstr(AttributeError, "attribute-less object");
                return NULL;
@@ -355,6 +365,17 @@ setattr(v, name, w)
        char *name;
        object *w;
 {
+       if (v->ob_type->tp_setattro != NULL) {
+               object *s;
+               int res;
+               s = newstringobject(name);
+               if (s == NULL)
+                       return NULL;
+               res = (*v->ob_type->tp_setattro)(v, s, w);
+               XDECREF(s);
+               return res;
+       }
+
        if (v->ob_type->tp_setattr == NULL) {
                if (v->ob_type->tp_getattr == NULL)
                        err_setstr(TypeError,