36 lines
770 B
OCaml
36 lines
770 B
OCaml
(* This example was mostly lifted from the guile example directory *)
|
|
|
|
open Swig
|
|
open Example
|
|
|
|
let with_vector v f =
|
|
for i = 0 to ((v -> size()) as int) - 1 do
|
|
f v i
|
|
done
|
|
|
|
let print_DoubleVector v =
|
|
begin
|
|
with_vector v
|
|
(fun v i ->
|
|
print_float ((v '[i to int]) as float) ;
|
|
print_string " ") ;
|
|
print_endline ""
|
|
end
|
|
|
|
(* Call average with a Ocaml array... *)
|
|
|
|
let v = new_DoubleVector '()
|
|
let rec fill_dv v x =
|
|
if x < 0.0001 then v else
|
|
begin
|
|
ignore(v -> push_back ((x to float))) ;
|
|
fill_dv v (x *. x)
|
|
end
|
|
let _ = fill_dv v 0.999
|
|
let _ = print_DoubleVector v
|
|
let u = new_IntVector '()
|
|
let _ = for i = 1 to 4 do
|
|
ignore(u -> push_back ((i to int)))
|
|
done
|
|
let _ = (print_float ((_average u) as float) ; print_newline ())
|