[Zodb-checkins] CVS: StandaloneZODB/ZODB - cPersistence.c:1.57
Jeremy Hylton
jeremy@zope.com
Tue, 2 Apr 2002 17:46:49 -0500
Update of /cvs-repository/StandaloneZODB/ZODB
In directory cvs.zope.org:/tmp/cvs-serv27893
Modified Files:
cPersistence.c
Log Message:
Remove HOME() and NON_GHOST_COUNT() macros in favor of explicit checks
on ->cache and references to its members.
Quite a bit of reformatting and unless-undoing. Add whitespace
between 'if' and '('.
=== StandaloneZODB/ZODB/cPersistence.c 1.56 => 1.57 ===
};
-#define HOME(O) (((O)->cache == NULL) ? NULL : &(O)->cache->ring_home)
-#define NON_GHOST_COUNT(O) \
- (((O)->cache == NULL) ? NULL : &(O)->cache->non_ghost_count)
-
#define ASSIGN(V,E) {PyObject *__e; __e=(E); Py_XDECREF(V); (V)=__e;}
#define UNLESS(E) if(!(E))
#define UNLESS_ASSIGN(V,E) ASSIGN(V,E) UNLESS(V)
@@ -92,7 +88,7 @@
callmethod(PyObject *self, PyObject *name)
{
self=PyObject_GetAttr(self,name);
- if(self)
+ if (self)
ASSIGN(self,PyObject_CallObject(self,NULL));
return self;
}
@@ -158,13 +154,15 @@
static void
accessed(cPersistentObject *self)
{
- if (HOME(self) && self->state >= 0) {
+ /* Do nothing unless the object is in a cache and not a ghost. */
+ if (self->cache && self->state >= 0) {
+ CPersistentRing *home = &self->cache->ring_home;
self->ring.prev->next = self->ring.next;
self->ring.next->prev = self->ring.prev;
- self->ring.next = HOME(self);
- self->ring.prev = HOME(self)->prev;
- HOME(self)->prev->next = &self->ring;
- HOME(self)->prev = &self->ring;
+ self->ring.next = home;
+ self->ring.prev = home->prev;
+ home->prev->next = &self->ring;
+ home->prev = &self->ring;
}
}
@@ -298,7 +296,7 @@
/* need to delay releasing the last reference on instance attributes
until after we have finished accounting for losing our state */
- if(dict2)
+ if (dict2)
{
PyDict_Clear(dict2);
Py_DECREF(dict2);
@@ -340,7 +338,7 @@
char *ck;
for(pos=0; PyDict_Next(__dict__, &pos, &k, &v); ) {
- if(PyString_Check(k) && (ck=PyString_AS_STRING(k)) &&
+ if (PyString_Check(k) && (ck=PyString_AS_STRING(k)) &&
(*ck=='_' && ck[1]=='v' && ck[2]=='_'))
{
if ((d=PyDict_New()) == NULL)
@@ -373,21 +371,21 @@
PyObject *__dict__, *v, *keys=0, *key=0, *e=0;
int l, i;
- if(HasInstDict(self))
+ if (HasInstDict(self))
{
UNLESS(PyArg_ParseTuple(args, "O", &v)) return NULL;
#ifdef DEBUG_LOG
- if(idebug_log < 0) call_debug("set",self);
+ if (idebug_log < 0) call_debug("set",self);
#endif
- if(v!=Py_None)
+ if (v!=Py_None)
{
__dict__=INSTANCE_DICT(self);
- if(PyDict_Check(v))
+ if (PyDict_Check(v))
{
for(i=0; PyDict_Next(v, &i, &key, &e);)
- if(PyDict_SetItem(__dict__, key, e) < 0)
+ if (PyDict_SetItem(__dict__, key, e) < 0)
return NULL;
}
else
@@ -437,7 +435,7 @@
Per_dealloc(cPersistentObject *self)
{
#ifdef DEBUG_LOG
- if(idebug_log < 0) call_debug("del",self);
+ if (idebug_log < 0) call_debug("del",self);
#endif
deallocated(self);
Py_XDECREF(self->cache);
@@ -459,21 +457,21 @@
{
char *n=name;
- if(n && *n++=='_')
- if(*n++=='p' && *n++=='_')
+ if (n && *n++=='_')
+ if (*n++=='p' && *n++=='_')
{
switch(*n++)
{
case 'o':
- if(*n++=='i' && *n++=='d' && ! *n) return orNothing(self->oid);
+ if (*n++=='i' && *n++=='d' && ! *n) return orNothing(self->oid);
break;
case 'j':
- if(*n++=='a' && *n++=='r' && ! *n) return orNothing(self->jar);
+ if (*n++=='a' && *n++=='r' && ! *n) return orNothing(self->jar);
break;
case 'c':
- if(strcmp(n,"hanged")==0)
+ if (strcmp(n,"hanged")==0)
{
- if(self->state < 0)
+ if (self->state < 0)
{
Py_INCREF(Py_None);
return Py_None;
@@ -483,13 +481,13 @@
}
break;
case 's':
- if(strcmp(n,"erial")==0)
+ if (strcmp(n,"erial")==0)
return PyString_FromStringAndSize(self->serial, 8);
- if(strcmp(n,"elf")==0)
+ if (strcmp(n,"elf")==0)
return orNothing(OBJECT(self));
break;
case 'm':
- if(strcmp(n,"time")==0)
+ if (strcmp(n,"time")==0)
{
if (!unghostify(self))
return NULL;
@@ -520,7 +518,7 @@
return getattrf((PyObject *)self, oname);
}
- if(! (name && *name++=='_' && *name++=='_' &&
+ if (! (name && *name++=='_' && *name++=='_' &&
(strcmp(name,"dict__")==0 || strcmp(name,"class__")==0
|| strcmp(name, "of__")==0)))
{
@@ -565,41 +563,44 @@
_setattro(cPersistentObject *self, PyObject *oname, PyObject *v,
int (*setattrf)(PyObject *, PyObject*, PyObject*))
{
- char *name="";
+ char *name = "";
- UNLESS(oname) return -1;
- if(PyString_Check(oname)) UNLESS(name=PyString_AS_STRING(oname)) return -1;
+ if (oname == NULL)
+ return -1;
+ if (!PyString_Check(oname))
+ return -1;
+ name = PyString_AS_STRING(oname);
+ if (name == NULL)
+ return -1;
- if(*name=='_' && name[1]=='p' && name[2]=='_')
- {
- if(name[3]=='o' && name[4]=='i' && name[5]=='d' && ! name[6])
- {
- if(HOME(self))
- {
- int result;
- if(!v)
- {
- PyErr_SetString(PyExc_ValueError,"can not delete the oid of a cached object");
- return -1;
- }
- if(PyObject_Cmp(self->oid,v,&result)<0) return -1;
- if(result)
- {
- PyErr_SetString(PyExc_ValueError,"can not change the oid of a cached object");
- return -1;
- }
+ if (*name == '_' && name[1] == 'p' && name[2] == '_') {
+ if (name[3] == 'o' && name[4] == 'i' && name[5] == 'd' && ! name[6]) {
+ if (self->cache) {
+ int result;
+ if (v == NULL) {
+ PyErr_SetString(PyExc_ValueError,
+ "can not delete the oid of a cached object");
+ return -1;
+ }
+ if (PyObject_Cmp(self->oid, v, &result) < 0)
+ return -1;
+ if (result) {
+ PyErr_SetString(PyExc_ValueError,
+ "can not change the oid of a cached object");
+ return -1;
+ }
}
Py_XINCREF(v);
ASSIGN(self->oid, v);
return 0;
- }
- if(name[3]=='j' && name[4]=='a' && name[5]=='r' && ! name[6])
+ }
+ if (name[3]=='j' && name[4]=='a' && name[5]=='r' && ! name[6])
{
Py_XINCREF(v);
ASSIGN(self->jar, v);
return 0;
}
- if(name[3]=='s' && strcmp(name+4,"erial")==0)
+ if (name[3]=='s' && strcmp(name+4,"erial")==0)
{
if (v)
{
@@ -616,7 +617,7 @@
memset(self->serial, 0, 8);
return 0;
}
- if(name[3]=='c' && strcmp(name+4,"hanged")==0)
+ if (name[3]=='c' && strcmp(name+4,"hanged")==0)
{
if (! v)
{
@@ -646,11 +647,11 @@
accessed(self);
- if((! (*name=='_' && name[1]=='v' && name[2]=='_'))
+ if ((! (*name=='_' && name[1]=='v' && name[2]=='_'))
&& (self->state != cPersistent_CHANGED_STATE && self->jar)
&& setattrf
)
- if(changed(self) < 0) return -1;
+ if (changed(self) < 0) return -1;
}
if (setattrf)
@@ -666,10 +667,9 @@
PyObject *m;
if (v && (((PyExtensionClass*)self->ob_type)->class_flags
- & EXTENSIONCLASS_USERSETATTR_FLAG)
- )
+ & EXTENSIONCLASS_USERSETATTR_FLAG))
{
- r=_setattro(self,oname, v, NULL);
+ r = _setattro(self, oname, v, NULL);
if (r < 1) return r;
m=PyObject_GetAttr(OBJECT(self), py___setattr__);
@@ -773,7 +773,7 @@
{
Py_INCREF(args);
ASSIGN(debug_log, args);
- if(debug_log) idebug_log=-1;
+ if (debug_log) idebug_log=-1;
else idebug_log=0;
Py_INCREF(Py_None);
return Py_None;