#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <stdint.h>
#include <caml/config.h>
#include <caml/alloc.h>
pr " int %s = Int_val (%sv);\n" n n
| Int64 n ->
pr " int64_t %s = Int64_val (%sv);\n" n n
+ | Pointer (t, n) ->
+ pr " %s %s = (%s) (intptr_t) Int64_val (%sv);\n" t n t n
) args;
(* Optional arguments. *)
pr " free (%s);\n" n
| StringList n | DeviceList n ->
pr " ocaml_guestfs_free_strings (%s);\n" n;
- | Bool _ | Int _ | Int64 _ -> ()
+ | Bool _ | Int _ | Int64 _ | Pointer _ -> ()
) args;
List.iter (
function
| Bool _ | Int _ | Int64 _
| Pathname _ | Device _ | Dev_or_Path _ | OptString _
| FileIn _ | FileOut _ | BufferIn _ | Key _
- | StringList _ | DeviceList _ -> ()
+ | StringList _ | DeviceList _ | Pointer _ -> ()
) optargs;
pr " if (r == %s)\n" error_code;
pr "CAMLprim value ";
pr "ocaml_guestfs_%s_byte (value *argv, int argn);\n" name;
pr "CAMLprim value\n";
- pr "ocaml_guestfs_%s_byte (value *argv, int argn)\n" name;
+ pr "ocaml_guestfs_%s_byte (value *argv, int argn ATTRIBUTE_UNUSED)\n"
+ name;
pr "{\n";
pr " return ocaml_guestfs_%s (argv[0]" name;
iteri (fun i _ -> pr ", argv[%d]" i) (List.tl params);
| StringList _ | DeviceList _ -> pr "string array -> "
| Bool _ -> pr "bool -> "
| Int _ -> pr "int -> "
- | Int64 _ -> pr "int64 -> "
+ | Int64 _ | Pointer _ -> pr "int64 -> "
) args;
(match ret with
| RErr -> pr "unit" (* all errors are turned into exceptions *)