[Checkins] SVN: zope.proxy/branches/regebro-python3/src/zope/proxy/_zope_proxy_proxy.c Cleaned up module initialization as per discussion on mailing list.

Lennart Regebro regebro at gmail.com
Tue Nov 30 08:47:36 EST 2010


Log message for revision 118644:
  Cleaned up module initialization as per discussion on mailing list.
  

Changed:
  U   zope.proxy/branches/regebro-python3/src/zope/proxy/_zope_proxy_proxy.c

-=-
Modified: zope.proxy/branches/regebro-python3/src/zope/proxy/_zope_proxy_proxy.c
===================================================================
--- zope.proxy/branches/regebro-python3/src/zope/proxy/_zope_proxy_proxy.c	2010-11-30 13:40:37 UTC (rev 118643)
+++ zope.proxy/branches/regebro-python3/src/zope/proxy/_zope_proxy_proxy.c	2010-11-30 13:47:36 UTC (rev 118644)
@@ -41,11 +41,35 @@
 // Compatibility with Python 2
 #if PY_MAJOR_VERSION < 3
   #define IS_STRING PyString_Check
+
   #define MAKE_STRING(name) PyString_AS_STRING(name)
+
+  #define MOD_ERROR_VAL
+
+  #define MOD_SUCCESS_VAL(val)
+
+  #define MOD_INIT(name) void init##name(void)
+
+  #define MOD_DEF(ob, name, doc, methods) \
+          ob = Py_InitModule3(name, methods, doc);
+
 #else
-  #define IS_STRING PyUnicode_Check
+
+#define IS_STRING PyUnicode_Check
+
   #define MAKE_STRING(name) PyBytes_AS_STRING( \
-    PyUnicode_AsUTF8String(name))
+          PyUnicode_AsUTF8String(name))
+
+  #define MOD_ERROR_VAL NULL
+
+  #define MOD_SUCCESS_VAL(val) val
+
+  #define MOD_INIT(name) PyMODINIT_FUNC PyInit_##name(void)
+
+  #define MOD_DEF(ob, name, doc, methods) \
+	  static struct PyModuleDef moduledef = { \
+	    PyModuleDef_HEAD_INIT, name, doc, -1, methods, }; \
+	  ob = PyModule_Create(&moduledef);
 #endif
 
 
@@ -1155,6 +1179,8 @@
   return result;
 }
 
+/* Module initialization */
+
 static char
 module___doc__[] =
 "Association between an object, a context object, and a dictionary.\n\
@@ -1179,34 +1205,14 @@
     {NULL}
 };
 
-#if PY_MAJOR_VERSION >= 3
-  static struct PyModuleDef moduledef = {
-    PyModuleDef_HEAD_INIT,
-    "_zope_proxy_proxy",/* m_name */
-    module___doc__,/* m_doc */
-    -1,/* m_size */
-    module_functions,/* m_methods */
-    NULL,/* m_reload */
-    NULL,/* m_traverse */
-    NULL,/* m_clear */
-    NULL,/* m_free */
-  };
-#endif
-
-static PyObject *
-moduleinit(void)
+MOD_INIT(_zope_proxy_proxy)
 {
     PyObject *m;
     
-#if PY_MAJOR_VERSION >= 3
-    m = PyModule_Create(&moduledef);
-#else
-    m = Py_InitModule3("_zope_proxy_proxy", 
-			module_functions, module___doc__);
-#endif
+    MOD_DEF(m, "_zope_proxy_proxy", module___doc__, module_functions)
 
     if (m == NULL)
-        return NULL;
+        return MOD_ERROR_VAL;
 
     if (empty_tuple == NULL)
         empty_tuple = PyTuple_New(0);
@@ -1214,7 +1220,7 @@
     ProxyType.tp_free = _PyObject_GC_Del;
 
     if (PyType_Ready(&ProxyType) < 0)
-        return NULL;
+        return MOD_ERROR_VAL;
 
     Py_INCREF(&ProxyType);
     PyModule_AddObject(m, "ProxyBase", (PyObject *)&ProxyType);
@@ -1222,25 +1228,12 @@
     if (api_object == NULL) {
         api_object = PyCObject_FromVoidPtr(&wrapper_capi, NULL);
         if (api_object == NULL)
-        return NULL;
+        return MOD_ERROR_VAL;
     }
     Py_INCREF(api_object);
     PyModule_AddObject(m, "_CAPI", api_object);
     
-  return m;
+    return MOD_SUCCESS_VAL(m);
     
 }
 
-#if PY_MAJOR_VERSION < 3
-    PyMODINIT_FUNC
-    init_zope_proxy_proxy(void)
-    {
-	moduleinit();
-    }
-#else
-    PyMODINIT_FUNC
-    PyInit__zope_proxy_proxy(void)
-    {
-	return moduleinit();
-    }
-#endif
\ No newline at end of file



More information about the checkins mailing list