blob: ce2137fbe9abcdab3a48b005e94590f72c6fbbab [file] [log] [blame]
open Swig
open Director_pass_by_value
let passByVal = ref [| |]
let director_pass_by_value_Derived ob meth args =
match meth with
| "virtualMethod" -> passByVal := Array.append !passByVal [|args|]; C_void
| _ -> (invoke ob) meth args
let d =
new_derived_object
new_DirectorPassByValueAbstractBase
(director_pass_by_value_Derived)
'()
let cpp11 = _has_cplusplus11 '() as bool
let _ =
let caller = new_Caller '() in
assert (caller -> call_virtualMethod (d) = C_void);
assert (Array.length !passByVal = 1);
(* TODO: only run if cpp11... let _ = _Counter_check_counts (C_list [C_int 0; C_int 0; C_int 0; C_int 1; C_int 0; C_int 1]) in*) (* check move constructor called and just one destructor *)
let a = List.hd (fnhelper (!passByVal.(0))) in
assert (a -> getVal () as int = 0x12345678);
assert (a -> "~" () = C_void);
;;