Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
hey, figured out how to change vars to pointers without cocci complaining...
[simgrid.git] / src / smpi / replace_globals.cocci
index a49237c..d23bacf 100644 (file)
@@ -1,24 +1,32 @@
+// FIXME: problems
+//   - does not want to match dynamic arrays...
+//   - does not match array initializers
+
 // Function prototype looks like variable dec, but has parentheses
 @funcproto@
 type T;
 // Function prototype looks like variable dec, but has parentheses
 @funcproto@
 type T;
-identifier f;
+identifier func;
 position p;
 @@
 position p;
 @@
-T f@p(...);
+T@p func(...);
 
 // Define a local variable as one whose declaration is encased in brackets
 @localvardecl@
 type T;
 
 // Define a local variable as one whose declaration is encased in brackets
 @localvardecl@
 type T;
-identifier a;
+identifier var;
 position p;
 expression E;
 @@
 {
 <...
 (
 position p;
 expression E;
 @@
 {
 <...
 (
- T a@p;
+T@p
+var
+;
 |
 |
- T a@p = E;
+T@p
+var = E
+;
 )
 ...>
 }
 )
 ...>
 }
@@ -27,34 +35,50 @@ expression E;
 // prototype
 @globalvardecl@
 type T;
 // prototype
 @globalvardecl@
 type T;
-identifier b;
+identifier var;
 position p != { localvardecl.p, funcproto.p };
 position p != { localvardecl.p, funcproto.p };
-expression E;
+expression value;
+constant size;
 @@
 (
 @@
 (
--T 
-+T*
-b@p
-+ = SMPI_INITIALIZE_GLOBAL(T)
+T@p 
+- var
++ *var = SMPI_INITIALIZE_GLOBAL(T)
 ;
 |
 ;
 |
--T 
-+T*
-b@p = 
-+ SMPI_INITIALIZE_AND_SET_GLOBAL(T,
-E
-+)
+T@p
+- var = value 
++ *var = SMPI_INITIALIZE_AND_SET_GLOBAL(T, value)
+;
+|
+T@p
+- var[]
++ *var[] = SMPI_INITIALIZE_GLOBAL_ARRAY(T, size)
+;
+|
+T@p
+- var[size]
++ *var[] = SMPI_INITIALIZE_GLOBAL_STATIC_ARRAY(T, size)
+;
+|
+T@p
+- var[size] = { ... }
++ *var[] = SMPI_INITIALIZE_AND_SET_GLOBAL_STATIC_ARRAY(T, size)
 ;
 )
 
 @rewritelocalaccess@
 ;
 )
 
 @rewritelocalaccess@
-local idexpression x;
-identifier globalvardecl.b;
+local idexpression lvar;
+identifier globalvardecl.var;
 @@
 @@
+{
+<...
 (
 (
-x
+lvar
 |
 +SMPI_GLOBAL_VAR_LOCAL_ACCESS(
 |
 +SMPI_GLOBAL_VAR_LOCAL_ACCESS(
-b
+var
 +)
 )
 +)
 )
+...>
+}