[pypy-svn] r73000 - in pypy/branch/cpython-extension/pypy/module/cpyext: . include

fijal at codespeak.net fijal at codespeak.net
Sun Mar 28 00:06:30 CET 2010


Author: fijal
Date: Sun Mar 28 00:06:28 2010
New Revision: 73000

Added:
   pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.c
Modified:
   pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.h
   pypy/branch/cpython-extension/pypy/module/cpyext/modsupport.py
Log:
copy PyModule_AddObject


Added: pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.c
==============================================================================
--- (empty file)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.c	Sun Mar 28 00:06:28 2010
@@ -0,0 +1,31 @@
+#include <pypy_rename.h>
+#include <Python.h>
+
+int
+PyModule_AddObject(PyObject *m, const char *name, PyObject *o)
+{
+	PyObject *dict;
+	if (!PyModule_Check(m)) {
+		PyErr_SetString(PyExc_TypeError,
+			    "PyModule_AddObject() needs module as first arg");
+		return -1;
+	}
+	if (!o) {
+		if (!PyErr_Occurred())
+			PyErr_SetString(PyExc_TypeError,
+					"PyModule_AddObject() needs non-NULL value");
+		return -1;
+	}
+
+	dict = PyModule_GetDict(m);
+	if (dict == NULL) {
+		/* Internal error -- modules must have a dict! */
+		PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
+			     PyModule_GetName(m));
+		return -1;
+	}
+	if (PyDict_SetItemString(dict, name, o))
+		return -1;
+	Py_DECREF(o);
+	return 0;
+}

Modified: pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.h
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.h	(original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/include/modsupport.h	Sun Mar 28 00:06:28 2010
@@ -18,7 +18,7 @@
 	Py_InitModule4(name, methods, doc, (PyObject *)NULL, \
 		       PYTHON_API_VERSION)
 
-
+int PyModule_AddObject(PyObject *m, const char *name, PyObject *o);
 
 #ifdef __cplusplus
 }

Modified: pypy/branch/cpython-extension/pypy/module/cpyext/modsupport.py
==============================================================================
--- pypy/branch/cpython-extension/pypy/module/cpyext/modsupport.py	(original)
+++ pypy/branch/cpython-extension/pypy/module/cpyext/modsupport.py	Sun Mar 28 00:06:28 2010
@@ -84,3 +84,4 @@
         return w_dict
     else:
         PyErr_BadInternalCall(space)
+



More information about the Pypy-commit mailing list