43f6c42ce70dcbbee65c0c34612fc7d5ef9d191a
[perl4caml.git] / perl.ml
1 (* Interface to Perl from OCaml.
2  * Copyright (C) 2003 Merjis Ltd.
3  * $Id: perl.ml,v 1.2 2003-10-12 10:52:00 rich Exp $
4  *)
5
6 type t
7
8 type sv
9
10 exception Perl_failure of string
11
12 external init : unit -> unit = "perl4caml_init"
13 let () =
14   Callback.register_exception "perl4caml_perl_failure" (Perl_failure "");
15   init ()                               (* Initialise C code. *)
16
17 external create : ?args:string array -> unit -> t
18   = "perl4caml_create"
19
20 external destroy : t -> unit
21   = "perl4caml_destroy"
22
23 external set_context : t -> unit
24   = "perl4caml_set_context"
25
26 external int_of_sv : sv -> int = "perl4caml_int_of_sv"
27 external sv_of_int : int -> sv = "perl4caml_sv_of_int"
28 external float_of_sv : sv -> int = "perl4caml_float_of_sv"
29 external sv_of_float : int -> sv = "perl4caml_sv_of_float"
30 external string_of_sv : sv -> string = "perl4caml_string_of_sv"
31 external sv_of_string : string -> sv = "perl4caml_sv_of_string"
32
33 external get_sv : ?create:bool -> string -> sv = "perl4caml_get_sv"
34
35 external call : ?sv:sv -> ?fn:string -> sv list -> sv
36   = "perl4caml_call"
37
38 external call_array : ?sv:sv -> ?fn:string -> sv list -> sv list
39   = "perl4caml_call_array"
40
41 external call_void : ?sv:sv -> ?fn:string -> sv list -> unit
42   = "perl4caml_call_void"
43
44 external eval : string -> sv
45   = "perl4caml_eval"