From 320a5ccbdcf4a0eb06657a43edd71c9010ccca72 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 2 Jan 1991 15:11:48 +0000 Subject: [PATCH] Fixed a bit (still no warranties). --- Objects/xxobject.c | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/Objects/xxobject.c b/Objects/xxobject.c index ffafcd71bdb..c3714e02df0 100644 --- a/Objects/xxobject.c +++ b/Objects/xxobject.c @@ -1,5 +1,17 @@ +/* Use this file as a template to start implementing a new object type. + If your objects will be called foobar, start by copying this file to + foobarobject.c, changing all occurrences of xx to foobar and all + occurrences of Xx by Foobar. You will probably want to delete all + references to 'x_attr' and add your own types of attributes + instead. Maybe you want to name your local variables other than + 'xp'. If your object type is needed in other files, you'll have to + create a file "foobarobject.h"; see intobject.h for an example. */ + + /* Xx objects */ +#include "allobjects.h" + typedef struct { OB_HEAD object *x_attr; /* Attributes dictionary */ @@ -7,6 +19,8 @@ typedef struct { extern typeobject Xxtype; /* Really static, forward */ +#define is_xxobject(v) ((v)->ob_type == &Xxtype) + static xxobject * newxxobject(arg) object *arg; @@ -25,8 +39,7 @@ static void xx_dealloc(xp) xxobject *xp; { - if (xp->x_attr != NULL) - DECREF(xp->x_attr); + XDECREF(xp->x_attr); DEL(xp); } @@ -70,7 +83,7 @@ xx_setattr(xp, name, v) if (xp->x_attr == NULL) { xp->x_attr = newdictobject(); if (xp->x_attr == NULL) - return errno; + return -1; } if (v == NULL) return dictremove(xp->x_attr, name);