(* Interface to Perl from OCaml. * Copyright (C) 2003 Merjis Ltd. * $Id: perl.ml,v 1.3 2003-10-12 11:56:26 rich Exp $ *) type t type sv exception Perl_failure of string external init : unit -> unit = "perl4caml_init" let () = Callback.register_exception "perl4caml_perl_failure" (Perl_failure ""); init () (* Initialise C code. *) external create : ?args:string array -> unit -> t = "perl4caml_create" external destroy : t -> unit = "perl4caml_destroy" external set_context : t -> unit = "perl4caml_set_context" external int_of_sv : sv -> int = "perl4caml_int_of_sv" external sv_of_int : int -> sv = "perl4caml_sv_of_int" external float_of_sv : sv -> int = "perl4caml_float_of_sv" external sv_of_float : int -> sv = "perl4caml_sv_of_float" external string_of_sv : sv -> string = "perl4caml_string_of_sv" external sv_of_string : string -> sv = "perl4caml_sv_of_string" external sv_is_true : sv -> bool = "perl4caml_sv_is_true" external sv_is_undef : sv -> bool = "perl4caml_sv_is_undef" external sv_get_undef : unit -> sv = "perl4caml_sv_get_undef" external sv_get_yes : unit -> sv = "perl4caml_sv_get_yes" external sv_get_no : unit -> sv = "perl4caml_sv_get_no" let sv_undef = sv_get_undef () let sv_true = sv_get_yes () let sv_false = sv_get_no () external get_sv : ?create:bool -> string -> sv = "perl4caml_get_sv" external call : ?sv:sv -> ?fn:string -> sv list -> sv = "perl4caml_call" external call_array : ?sv:sv -> ?fn:string -> sv list -> sv list = "perl4caml_call_array" external call_void : ?sv:sv -> ?fn:string -> sv list -> unit = "perl4caml_call_void" external eval : string -> sv = "perl4caml_eval" external call_method : sv -> string -> sv list -> sv = "perl4caml_call_method" external call_method_array : sv -> string -> sv list -> sv list = "perl4caml_call_method_array" external call_method_void : sv -> string -> sv list -> unit = "perl4caml_call_method_void" external call_class_method : string -> string -> sv list -> sv = "perl4caml_call_class_method" external call_class_method_array : string -> string -> sv list -> sv list = "perl4caml_call_class_method_array" external call_class_method_void : string -> string -> sv list -> unit = "perl4caml_call_class_method_void"