summaryrefslogtreecommitdiffstats
path: root/lib2to3c/init-module.cocci
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2010-03-05 19:06:29 -0500
committerDavid Malcolm <dmalcolm@redhat.com>2010-03-05 19:06:29 -0500
commite4c495a8b6d9727de99b35bddf70f2c942e7f8b9 (patch)
tree0b41afa08d135b80f55195eb9cefb4a8bd643fa7 /lib2to3c/init-module.cocci
parent234a10d5bc133f9963db58fd4c08715fe43c2b94 (diff)
download2to3c-e4c495a8b6d9727de99b35bddf70f2c942e7f8b9.tar.gz
2to3c-e4c495a8b6d9727de99b35bddf70f2c942e7f8b9.tar.xz
2to3c-e4c495a8b6d9727de99b35bddf70f2c942e7f8b9.zip
Rename "fixes" -> "lib2to3c"; start writing a setup.pyHEADmaster
Diffstat (limited to 'lib2to3c/init-module.cocci')
-rw-r--r--lib2to3c/init-module.cocci78
1 files changed, 78 insertions, 0 deletions
diff --git a/lib2to3c/init-module.cocci b/lib2to3c/init-module.cocci
new file mode 100644
index 0000000..ca3bcc9
--- /dev/null
+++ b/lib2to3c/init-module.cocci
@@ -0,0 +1,78 @@
+@ mod_init_fn @
+type T;
+identifier FN;
+identifier MOD_VAR;
+expression MODULE_NAME, MODULE_METHODS, MODULE_DOC;
+@@
+T FN(void) {
+ ...
+ MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC);
+ ...
+}
+
+
+
+@@
+identifier MOD_VAR;
+expression MODULE_NAME, MODULE_METHODS, MODULE_DOC;
+expression E;
+@@
+ if (E) {
+- return;
++ return MOD_ERROR_VAL;
+ }
+ ...
+ MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC);
+
+
+@@
+identifier MOD_VAR;
+expression MODULE_NAME, MODULE_METHODS, MODULE_DOC;
+expression E;
+@@
+ MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC);
+ ...
+ if (E) {
+- return;
++ return MOD_ERROR_VAL;
+ }
+
+
+@@
+type mod_init_fn.T;
+identifier mod_init_fn.FN;
+identifier mod_init_fn.MOD_VAR;
+expression MODULE_NAME, MODULE_METHODS, MODULE_DOC;
+expression E;
+statement list SL;
+@@
++struct __HASH_IF_PY_MAJOR_VERSION_ge_3;
++static struct PyModuleDef moduledef = {
++ PyModuleDef_HEAD_INIT,
++ MODULE_NAME, /* m_name */
++ MODULE_DOC, /* m_doc */
++ 0, /* m_size */
++ MODULE_METHODS, /* m_methods */
++ NULL, /* m_reload */
++ NULL, /* m_traverse */
++ NULL, /* m_clear */
++ NULL, /* m_free */
++};
++struct __HASH_DEFINE__MOD_ERROR_VAL__NULL;
++struct __HASH_ELSE;
++struct __HASH_DEFINE__MOD_ERROR_VAL__;
++struct __HASH_ENDIF;
+
+ T FN(void) {
+ ...
+
++__HASH_IF_PY_MAJOR_VERSION_ge_3;
++ MOD_VAR = PyModule_Create(&moduledef);
++__HASH_ELSE;
+ MOD_VAR = Py_InitModule3(MODULE_NAME, MODULE_METHODS, MODULE_DOC);
++__HASH_ENDIF;
+
+ ...
+ }
+
+