let rec c_string_of_condition = function
| PCall s -> "(("^s^"=="^curOp^") && ("^curOpStatus^"=="^callStatus^"))"
| PReturn s -> "(("^s^"=="^curOp^") && ("^curOpStatus^"=="^termStatus^"))"
| PCallOrReturn s -> "("^s^"=="^curOp^")"
| POr (c1,c2) -> "("^(c_string_of_condition c1)^" || "^(c_string_of_condition c2)^")"
| PAnd (c1,c2 ) -> "("^(c_string_of_condition c1)^" && "^(c_string_of_condition c2)^")"
| PNot c -> "!"^(c_string_of_condition c)
| PTrue -> "1"
| PFalse -> "0"
(* | PGt (c1,c2) -> (c_string_of_condition_arith c1)^">" ^(c_string_of_condition_arith c2)
| PGe (c1,c2) -> (c_string_of_condition_arith c1)^">="^(c_string_of_condition_arith c2)
| PLt (c1,c2) -> (c_string_of_condition_arith c1)^"<" ^(c_string_of_condition_arith c2)
| PLe (c1,c2) -> (c_string_of_condition_arith c1)^"<="^(c_string_of_condition_arith c2)
| PEq (c1,c2) -> (c_string_of_condition_arith c1)^"==" ^(c_string_of_condition_arith c2)
| PNeq (c1,c2) -> (c_string_of_condition_arith c1)^"!="^(c_string_of_condition_arith c2)
| PBoolVar (s) -> s*)
| PIndexedExp (s) -> Data_for_aorai.get_str_exp_from_tmpident s
| PFuncReturn (s, _)
| PFuncParam (s, _, _) -> Data_for_aorai.get_str_exp_from_tmpident s