X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;f=perl.ml;h=a193446151554315a33b61c7edc7dcb303c5fa97;hb=f71f13bd5e85b5cca4e9c2e63bf9d9c3283d66cf;hp=95ad3e5ecd854251a9eb4b0604518c057d979071;hpb=3099885336bf959064b00e4205e11e4e5d68e7d5;p=perl4caml.git diff --git a/perl.ml b/perl.ml index 95ad3e5..a193446 100644 --- a/perl.ml +++ b/perl.ml @@ -1,19 +1,14 @@ (* Interface to Perl from OCaml. * Copyright (C) 2003 Merjis Ltd. - * $Id: perl.ml,v 1.8 2003-10-18 12:36:09 rich Exp $ + * $Id: perl.ml,v 1.11 2003-12-11 17:41:52 rich Exp $ *) -type t - type sv type av type hv exception Perl_failure of string -external create : ?args:string array -> unit -> t - = "perl4caml_create" - (* Initialization. This must happen first, otherwise other parts of the * program will segfault because of a missing interpreter. *) @@ -21,27 +16,15 @@ external c_init : unit -> unit = "perl4caml_init" let () = Callback.register_exception "perl4caml_perl_failure" (Perl_failure ""); c_init (); (* Initialise C code. *) - (* Create the default interpreter. *) - create ~args:[| ""; "-w"; "-e"; "0" |] (); () -external current_interpreter : unit -> t - = "perl4caml_current_interpreter" - -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 float_of_sv : sv -> float = "perl4caml_float_of_sv" +external sv_of_float : float -> 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_undef : unit -> sv = "perl4caml_sv_undef" external sv_yes : unit -> sv = "perl4caml_sv_yes" external sv_no : unit -> sv = "perl4caml_sv_no" @@ -64,6 +47,8 @@ type sv_t = SVt_NULL | SVt_PVMG external sv_type : sv -> sv_t = "perl4caml_sv_type" +let sv_is_undef sv = + SVt_NULL = sv_type sv let string_of_sv_t = function SVt_NULL -> "SVt_NULL" @@ -77,6 +62,10 @@ let string_of_sv_t = function | SVt_PVGV -> "SVt_PVGV" | SVt_PVMG -> "SVt_PVMG" +external scalarref : sv -> sv = "perl4caml_scalarref" +external arrayref : av -> sv = "perl4caml_arrayref" +external hashref : hv -> sv = "perl4caml_hashref" + external deref : sv -> sv = "perl4caml_deref" external deref_array : sv -> av = "perl4caml_deref_array" external deref_hash : sv -> hv = "perl4caml_deref_hash"