Release of coccinelle 1.0.0-rc9
[bpt/coccinelle.git] / python / yes_pycocci.ml
index 80b996b..39e0468 100644 (file)
@@ -115,6 +115,7 @@ let pycocci_instantiate_class fqn args =
 (* end python interaction *)
 
 let inc_match = ref true
+let exited = ref false
 
 let include_match v =
   let truth = pyobject_istrue (pytuple_getitem (v, 1)) in
@@ -122,6 +123,10 @@ let include_match v =
   inc_match := truth != 0;
   _pycocci_none ()
 
+let sp_exit _ =
+  exited := true;
+  _pycocci_none ()
+
 let build_method (mname, camlfunc, args) pymodule classx classdict =
   let cmx = pymethod_new(pywrap_closure camlfunc, args, classx) in
   let v = pydict_setitemstring(classdict, mname, cmx) in
@@ -186,7 +191,8 @@ let pycocci_init () =
   coccinelle_module := pymodule_new "coccinelle";
   let mx = !coccinelle_module in
   let (cd, cx) = build_class "Cocci" (!Flag.pyoutput)
-      [("include_match", include_match, (pynull()));
+      [("exit", sp_exit, (pynull()));
+       ("include_match", include_match, (pynull()));
        ("has_env_binding", has_environment_binding, (pynull()))] mx in
   pyoutputinstance := cx;
   pyoutputdict := cd;
@@ -206,12 +212,13 @@ let added_variables = ref []
 let build_classes env =
   let _ = pycocci_init () in
   inc_match := true;
+  exited := false;
   the_environment := env;
   let mx = !coccinelle_module in
   let dict = pymodule_getdict mx in
   List.iter
     (function
-       "include_match" | "has_env_binding" -> ()
+       "include_match" | "has_env_binding" | "exit" -> ()
       | name ->
          let v = pydict_delitemstring(dict,name) in
          check_int_return_value v)
@@ -294,7 +301,9 @@ let construct_script_variables mv =
   List.iter
     (function (_,py) ->
       let vl =
-       let str = pystring_fromstring "initial value" in
+       let str =
+         pystring_fromstring
+           "initial value: consider using coccinelle.varname" in
        pycocci_instantiate_class "coccilib.elems.Identifier"
          (pytuple_fromsingle (str)) in
       let _ = build_variable py vl in