Commit 0918020e authored by Jim Fulton's avatar Jim Fulton

Moved new_oid method to C.

parent e6481ad9
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
static char cPickleJar_module_documentation[] = static char cPickleJar_module_documentation[] =
"" ""
"\n$Id: cPickleJar.c,v 1.3 1997/12/15 16:36:15 jim Exp $" "\n$Id: cPickleJar.c,v 1.4 1997/12/16 21:29:25 jim Exp $"
; ;
#include "ExtensionClass.h" #include "ExtensionClass.h"
...@@ -31,7 +31,7 @@ static PyObject *Pickler, *StringIO, *arg0, *arg1, ...@@ -31,7 +31,7 @@ static PyObject *Pickler, *StringIO, *arg0, *arg1,
*py__p_oid, *py__p_jar, *py_new_oid, *py__p_changed, *py_persistent_id, *py__p_oid, *py__p_jar, *py_new_oid, *py__p_changed, *py_persistent_id,
*py_db, *py_store, *py_seek, *py_getvalue, *py_cache, *py_dump, *py_db, *py_store, *py_seek, *py_getvalue, *py_cache, *py_dump,
*py_clear_memo, *py___class__, *py___getinitargs__, *py_clear_memo, *py___class__, *py___getinitargs__,
*py___getstate__, *py___changed__, *py_info; *py___getstate__, *py___changed__, *py_info, *one, *py_oid;
/* Declarations for objects of type pid */ /* Declarations for objects of type pid */
...@@ -266,21 +266,32 @@ err: ...@@ -266,21 +266,32 @@ err:
return r; return r;
} }
/* End of code for pid objects */ static PyObject *
/* -------------------------------------------------------- */ pj_new_oid(PyObject *self, PyObject *args)
{
PyObject *r;
UNLESS(r=PyObject_GetAttr(self, py_oid)) return NULL;
UNLESS_ASSIGN(r,PyNumber_Add(r,one)) return NULL;
if(PyObject_SetAttr(self,py_oid,r) < 0)
{
Py_DECREF(r);
return NULL;
}
return r;
}
/* List of methods defined in the module */ /* List of methods defined in the module */
static struct PyMethodDef Module_Level__methods[] = { static struct PyMethodDef Module_Level__methods[] = {
{NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */
}; };
/* Initialization function for the module (*must* be called initcPickleJar) */ /* Initialization function for the module (*must* be called initcPickleJar) */
static struct PyMethodDef PickleJar_methods[] = { static struct PyMethodDef PickleJar_methods[] = {
{"store",(PyCFunction)pj_store,1,""}, {"store",(PyCFunction)pj_store,1,"store an object"},
{"new_oid",(PyCFunction)pj_new_oid,1,"Get the next available object id"},
{NULL, NULL} /* sentinel */ {NULL, NULL} /* sentinel */
}; };
...@@ -288,7 +299,7 @@ void ...@@ -288,7 +299,7 @@ void
initcPickleJar() initcPickleJar()
{ {
PyObject *m, *d; PyObject *m, *d;
char *rev="$Revision: 1.3 $"; char *rev="$Revision: 1.4 $";
PURE_MIXIN_CLASS(PickleJar,"",PickleJar_methods); PURE_MIXIN_CLASS(PickleJar,"",PickleJar_methods);
UNLESS(Pickler=PyImport_ImportModule("cPickle")) return; UNLESS(Pickler=PyImport_ImportModule("cPickle")) return;
...@@ -298,6 +309,7 @@ initcPickleJar() ...@@ -298,6 +309,7 @@ initcPickleJar()
#define INIT_STRING(S) if(!(py_ ## S = PyString_FromString(#S))) return #define INIT_STRING(S) if(!(py_ ## S = PyString_FromString(#S))) return
INIT_STRING(_p_oid); INIT_STRING(_p_oid);
INIT_STRING(oid);
INIT_STRING(_p_jar); INIT_STRING(_p_jar);
INIT_STRING(new_oid); INIT_STRING(new_oid);
INIT_STRING(_p_changed); INIT_STRING(_p_changed);
...@@ -318,6 +330,8 @@ initcPickleJar() ...@@ -318,6 +330,8 @@ initcPickleJar()
UNLESS(arg0=Py_BuildValue("(i)",0)) return; UNLESS(arg0=Py_BuildValue("(i)",0)) return;
UNLESS(arg1=Py_BuildValue("(i)",1)) return; UNLESS(arg1=Py_BuildValue("(i)",1)) return;
UNLESS(one=PyInt_FromLong(1)) return;
/* Create the module and add the functions */ /* Create the module and add the functions */
m = Py_InitModule4("cPickleJar", Module_Level__methods, m = Py_InitModule4("cPickleJar", Module_Level__methods,
cPickleJar_module_documentation, cPickleJar_module_documentation,
...@@ -341,6 +355,9 @@ initcPickleJar() ...@@ -341,6 +355,9 @@ initcPickleJar()
Revision Log: Revision Log:
$Log: cPickleJar.c,v $ $Log: cPickleJar.c,v $
Revision 1.4 1997/12/16 21:29:25 jim
Moved new_oid method to C.
Revision 1.3 1997/12/15 16:36:15 jim Revision 1.3 1997/12/15 16:36:15 jim
Updated to use new pickling protocol. Updated to use new pickling protocol.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment