[Zodb-checkins] SVN: ZODB/trunk/ Merge rev 30607 from 3.4 branch.
Tim Peters
tim.one at comcast.net
Thu Jun 2 17:10:16 EDT 2005
Log message for revision 30608:
Merge rev 30607 from 3.4 branch.
Remove unused code; Zope 2.8 already has its own copy.
Changed:
U ZODB/trunk/NEWS.txt
D ZODB/trunk/src/Persistence/_Persistence.c
-=-
Modified: ZODB/trunk/NEWS.txt
===================================================================
--- ZODB/trunk/NEWS.txt 2005-06-02 21:09:19 UTC (rev 30607)
+++ ZODB/trunk/NEWS.txt 2005-06-02 21:10:15 UTC (rev 30608)
@@ -36,7 +36,14 @@
``zope.testing.testrunner``. See the latter's documentation
for command-line arguments.
+_Persistence.c
+--------------
+- (3.4b4) The source code for this was removed from the project. Zope (2.8)
+ has its own copy, and the C code hadn't been compiled in ZODB since before
+ ZODB 3.3.
+
+
What's new in ZODB3 3.4b1?
==========================
Release date: 19-May-2005
Deleted: ZODB/trunk/src/Persistence/_Persistence.c
===================================================================
--- ZODB/trunk/src/Persistence/_Persistence.c 2005-06-02 21:09:19 UTC (rev 30607)
+++ ZODB/trunk/src/Persistence/_Persistence.c 2005-06-02 21:10:15 UTC (rev 30608)
@@ -1,175 +0,0 @@
-/*
-
- Copyright (c) 2003 Zope Corporation and Contributors.
- All Rights Reserved.
-
- This software is subject to the provisions of the Zope Public License,
- Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
- WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
- FOR A PARTICULAR PURPOSE.
-
-*/
-static char _Persistence_module_documentation[] =
-"Persistent ExtensionClass\n"
-"\n"
-"$Id$\n"
-;
-
-#include "ExtensionClass.h"
-#include "cPersistence.h"
-
-
-/* convert_name() returns a new reference to a string name
- or sets an exception and returns NULL.
-*/
-
-static PyObject *
-convert_name(PyObject *name)
-{
-#ifdef Py_USING_UNICODE
- /* The Unicode to string conversion is done here because the
- existing tp_setattro slots expect a string object as name
- and we wouldn't want to break those. */
- if (PyUnicode_Check(name)) {
- name = PyUnicode_AsEncodedString(name, NULL, NULL);
- }
- else
-#endif
- if (!PyString_Check(name)) {
- PyErr_SetString(PyExc_TypeError, "attribute name must be a string");
- return NULL;
- } else
- Py_INCREF(name);
- return name;
-}
-
-/* Returns true if the object requires unghostification.
-
- There are several special attributes that we allow access to without
- requiring that the object be unghostified:
- __class__
- __del__
- __dict__
- __of__
- __setstate__
-*/
-
-static int
-unghost_getattr(const char *s)
-{
- if (*s++ != '_')
- return 1;
- if (*s == 'p') {
- s++;
- if (*s == '_')
- return 0; /* _p_ */
- else
- return 1;
- }
- else if (*s == '_') {
- s++;
- switch (*s) {
- case 'c':
- return strcmp(s, "class__");
- case 'd':
- s++;
- if (!strcmp(s, "el__"))
- return 0; /* __del__ */
- if (!strcmp(s, "ict__"))
- return 0; /* __dict__ */
- return 1;
- case 'o':
- return strcmp(s, "of__");
- case 's':
- return strcmp(s, "setstate__");
- default:
- return 1;
- }
- }
- return 1;
-}
-
-static PyObject *
-P_getattr(cPersistentObject *self, PyObject *name)
-{
- PyObject *v=NULL;
- char *s;
-
- name = convert_name(name);
- if (!name)
- return NULL;
-
- s = PyString_AS_STRING(name);
-
- if (*s != '_' || unghost_getattr(s))
- {
- if (PER_USE(self))
- {
- v = Py_FindAttr((PyObject*)self, name);
- PER_ALLOW_DEACTIVATION(self);
- PER_ACCESSED(self);
- }
- }
- else
- v = Py_FindAttr((PyObject*)self, name);
-
- Py_DECREF(name);
-
- return v;
-}
-
-
-static PyTypeObject Ptype = {
- PyObject_HEAD_INIT(NULL)
- /* ob_size */ 0,
- /* tp_name */ "Persistence.Persistent",
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* tp_getattro */ (getattrofunc)P_getattr,
- 0, 0,
- /* tp_flags */ Py_TPFLAGS_DEFAULT
- | Py_TPFLAGS_BASETYPE ,
- /* tp_doc */ "Persistent ExtensionClass",
-};
-
-static struct PyMethodDef _Persistence_methods[] = {
- {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */
-};
-
-#ifndef PyMODINIT_FUNC /* declarations for DLL import/export */
-#define PyMODINIT_FUNC void
-#endif
-PyMODINIT_FUNC
-init_Persistence(void)
-{
- PyObject *m;
-
- if (! ExtensionClassImported)
- return;
-
- cPersistenceCAPI = PyCObject_Import("persistent.cPersistence", "CAPI");
- if (cPersistenceCAPI == NULL)
- return;
-
- Ptype.tp_bases = Py_BuildValue("OO", cPersistenceCAPI->pertype, ECBaseType);
- if (Ptype.tp_bases == NULL)
- return;
- Ptype.tp_base = cPersistenceCAPI->pertype;
-
- Ptype.ob_type = ECExtensionClassType;
- if (PyType_Ready(&Ptype) < 0)
- return;
-
- /* Create the module and add the functions */
- m = Py_InitModule3("_Persistence", _Persistence_methods,
- _Persistence_module_documentation);
-
- if (m == NULL)
- return;
-
- /* Add types: */
- if (PyModule_AddObject(m, "Persistent", (PyObject *)&Ptype) < 0)
- return;
-}
-
More information about the Zodb-checkins
mailing list