blob: ddc974984a30eed5e736017c9500fe3044f6cb71 [file] [log] [blame]
(* 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"