| /// Move constants to the right of binary operators. |
| //# Depends on personal taste in some cases. |
| /// |
| // Confidence: Moderate |
| // Copyright: (C) 2015 Copyright: (C) 2015 Julia Lawall, Inria. GPLv2. |
| // URL: http://coccinelle.lip6.fr/ |
| // Options: --no-includes --include-headers |
| |
| virtual patch |
| virtual context |
| virtual org |
| virtual report |
| |
| @r1 depends on patch && !context && !org && !report |
| disable bitor_comm, neg_if_exp@ |
| constant c,c1; |
| local idexpression i; |
| expression e,e1,e2; |
| binary operator b = {==,!=,&,|}; |
| type t; |
| @@ |
| |
| ( |
| c b (c1) |
| | |
| sizeof(t) b e1 |
| | |
| sizeof e b e1 |
| | |
| i b e1 |
| | |
| c | e1 | e2 | ... |
| | |
| c | (e ? e1 : e2) |
| | |
| - c |
| + e |
| b |
| - e |
| + c |
| ) |
| |
| @r2 depends on patch && !context && !org && !report |
| disable gtr_lss, gtr_lss_eq, not_int2@ |
| constant c,c1; |
| expression e,e1,e2; |
| binary operator b; |
| binary operator b1 = {<,<=},b2 = {<,<=}; |
| binary operator b3 = {>,>=},b4 = {>,>=}; |
| local idexpression i; |
| type t; |
| @@ |
| |
| ( |
| c b c1 |
| | |
| sizeof(t) b e1 |
| | |
| sizeof e b e1 |
| | |
| (e1 b1 e) && (e b2 e2) |
| | |
| (e1 b3 e) && (e b4 e2) |
| | |
| i b e |
| | |
| - c < e |
| + e > c |
| | |
| - c <= e |
| + e >= c |
| | |
| - c > e |
| + e < c |
| | |
| - c >= e |
| + e <= c |
| ) |
| |
| // ---------------------------------------------------------------------------- |
| |
| @r1_context depends on !patch && (context || org || report) |
| disable bitor_comm, neg_if_exp exists@ |
| type t; |
| binary operator b = {==,!=,&,|}; |
| constant c, c1; |
| expression e, e1, e2; |
| local idexpression i; |
| position j0; |
| @@ |
| |
| ( |
| c b (c1) |
| | |
| sizeof(t) b e1 |
| | |
| sizeof e b e1 |
| | |
| i b e1 |
| | |
| c | e1 | e2 | ... |
| | |
| c | (e ? e1 : e2) |
| | |
| * c@j0 b e |
| ) |
| |
| @r2_context depends on !patch && (context || org || report) |
| disable gtr_lss, gtr_lss_eq, not_int2 exists@ |
| type t; |
| binary operator b, b1 = {<,<=}, b2 = {<,<=}, b3 = {>,>=}, b4 = {>,>=}; |
| constant c, c1; |
| expression e, e1, e2; |
| local idexpression i; |
| position j0; |
| @@ |
| |
| ( |
| c b c1 |
| | |
| sizeof(t) b e1 |
| | |
| sizeof e b e1 |
| | |
| (e1 b1 e) && (e b2 e2) |
| | |
| (e1 b3 e) && (e b4 e2) |
| | |
| i b e |
| | |
| * c@j0 < e |
| | |
| * c@j0 <= e |
| | |
| * c@j0 > e |
| | |
| * c@j0 >= e |
| ) |
| |
| // ---------------------------------------------------------------------------- |
| |
| @script:python r1_org depends on org@ |
| j0 << r1_context.j0; |
| @@ |
| |
| msg = "Move constant to right." |
| coccilib.org.print_todo(j0[0], msg) |
| |
| @script:python r2_org depends on org@ |
| j0 << r2_context.j0; |
| @@ |
| |
| msg = "Move constant to right." |
| coccilib.org.print_todo(j0[0], msg) |
| |
| // ---------------------------------------------------------------------------- |
| |
| @script:python r1_report depends on report@ |
| j0 << r1_context.j0; |
| @@ |
| |
| msg = "Move constant to right." |
| coccilib.report.print_report(j0[0], msg) |
| |
| @script:python r2_report depends on report@ |
| j0 << r2_context.j0; |
| @@ |
| |
| msg = "Move constant to right." |
| coccilib.report.print_report(j0[0], msg) |
| |