1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 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"
|