30 lines
906 B
OCaml
30 lines
906 B
OCaml
(* 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" (0)
|
|
|
|
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" (0)
|
|
let _ = print_endline "\nOCaml exit"
|