diff options
Diffstat (limited to 'Examples/ocaml/callback/runme.ml')
-rw-r--r-- | Examples/ocaml/callback/runme.ml | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/Examples/ocaml/callback/runme.ml b/Examples/ocaml/callback/runme.ml new file mode 100644 index 000000000..ddc974984 --- /dev/null +++ b/Examples/ocaml/callback/runme.ml @@ -0,0 +1,30 @@ +(* file: runme.ml + +This file illustrates cross-language polymorphism using directors. *) + +open Swig +open Example + +let new_OCamlCallback ob meth args = + match meth with + | "run" -> print_endline "OCamlCallback.run()"; C_void + | _ -> (invoke ob) meth args + +let caller = new_Caller '() + +let _ = print_endline "Adding and calling a normal C++ callback" +let _ = print_endline "----------------------------------------" + +let callback = new_Callback '() +let _ = caller -> "setCallback" (callback) +let _ = caller -> "call" () +let _ = caller -> "delCallback" () + +let _ = print_endline "\nAdding and calling an OCaml callback" +let _ = print_endline "------------------------------------" + +let callback = new_derived_object new_Callback (new_OCamlCallback) '() +let _ = caller -> "setCallback" (callback) +let _ = caller -> "call" () +let _ = caller -> "delCallback" () +let _ = print_endline "\nOCaml exit" |