File: director_pass_by_value_runme.ml

package info (click to toggle)
swig 4.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 45,980 kB
  • sloc: cpp: 54,284; ansic: 29,022; java: 17,595; python: 12,734; cs: 10,421; ruby: 7,263; yacc: 6,501; makefile: 5,860; javascript: 5,538; sh: 5,422; perl: 4,246; php: 3,733; ml: 2,198; tcl: 2,015; lisp: 1,448; xml: 115
file content (27 lines) | stat: -rw-r--r-- 860 bytes parent folder | download | duplicates (3)
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
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);
;;