(* File: conv.mli Copyright (C) 2005- Jane Street Holding, LLC Author: Markus Mottl email: mmottl@janestcapital.com WWW: http://www.janestcapital.com/ocaml This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *) (** Conv: Utility Module for S-expression Conversions *) open Bigarray (** {6 Conversion of OCaml-values to S-expressions} *) val sexp_of_abstr : 'a -> Sexp.t (** [sexp_of_abstr x] converts the value [x] of abstract type to an S-expression. *) val sexp_of_unit : unit -> Sexp.t (** [sexp_of_unit ()] converts a value of type [unit] to an S-expression. *) val sexp_of_bool : bool -> Sexp.t (** [sexp_of_bool b] converts the value [x] of type [bool] to an S-expression. *) val sexp_of_string : string -> Sexp.t (** [sexp_of_bool str] converts the value [str] of type [string] to an S-expression. *) val sexp_of_char : char -> Sexp.t (** [sexp_of_char c] converts the value [c] of type [char] to an S-expression. *) val sexp_of_int : int -> Sexp.t (** [sexp_of_int n] converts the value [n] of type [int] to an S-expression. *) val sexp_of_float : float -> Sexp.t (** [sexp_of_float n] converts the value [n] of type [float] to an S-expression. *) val sexp_of_int32 : int32 -> Sexp.t (** [sexp_of_int32 n] converts the value [n] of type [int32] to an S-expression. *) val sexp_of_int64 : int64 -> Sexp.t (** [sexp_of_int64 n] converts the value [n] of type [int64] to an S-expression. *) val sexp_of_nativeint : nativeint -> Sexp.t (** [sexp_of_nativeint n] converts the value [n] of type [nativeint] to an S-expression. *) val sexp_of_ref : ('a -> 'b) -> 'a ref -> 'b (** [sexp_of_ref conv r] converts the value [r] of type ['a ref] to an S-expression. Uses [conv] to convert values of type ['a] to an S-expression. *) val sexp_of_lazy : ('a -> 'b) -> 'a lazy_t -> 'b (** [sexp_of_ref conv l] converts the value [l] of type ['a lazy_t] to an S-expression. Uses [conv] to convert values of type ['a] to an S-expression. *) val sexp_of_option : ('a -> Sexp.t) -> 'a option -> Sexp.t (** [sexp_of_option conv opt] converts the value [opt] of type ['a option] to an S-expression. Uses [conv] to convert values of type ['a] to an S-expression. *) val sexp_of_list : ('a -> Sexp.t) -> 'a list -> Sexp.t (** [sexp_of_list conv lst] converts the value [lst] of type ['a list] to an S-expression. Uses [conv] to convert values of type ['a] to an S-expression. *) val sexp_of_array : ('a -> Sexp.t) -> 'a array -> Sexp.t (** [sexp_of_array conv ar] converts the value [ar] of type ['a array] to an S-expression. Uses [conv] to convert values of type ['a] to an S-expression. *) val sexp_of_hashtbl : ('a -> Sexp.t) -> ('b -> Sexp.t) -> ('a, 'b) Hashtbl.t -> Sexp.t (** [sexp_of_hashtbl conv_key conv_value htbl] converts the value [htbl] of type [('a, 'b) Hashtbl.t] to an S-expression. Uses [conv_key] to convert the hashtable keys of type ['a], and [conv_value] to convert hashtable values of type ['b] to S-expressions. *) val sexp_of_float32_vec : (float, float32_elt, fortran_layout) Array1.t -> Sexp.t (** [sexp_of_float32_vec vec] converts the one-dimensional bigarray [vec] of 32-bit floats in Fortran-layout to an S-expression. *) val sexp_of_float64_vec : (float, float64_elt, fortran_layout) Array1.t -> Sexp.t (** [sexp_of_float64_vec vec] converts the one-dimensional bigarray [vec] of 64-bit floats in Fortran-layout to an S-expression. *) val sexp_of_float32_mat : (float, float32_elt, fortran_layout) Array2.t -> Sexp.t (** [sexp_of_float32_mat mat] converts the two-dimensional bigarray [mat] of 32-bit floats in Fortran-layout to an S-expression. *) val sexp_of_float64_mat : (float, float64_elt, fortran_layout) Array2.t -> Sexp.t (** [sexp_of_float64_mat mat] converts the two-dimensional bigarray [mat] of 64-bit floats in Fortran-layout to an S-expression. *) val string_of__of__sexp_of : ('a -> Sexp.t) -> 'a -> string (** [string_of__of__sexp_of conv x] converts the OCaml-value [x] to an S-expression represented as a string by using conversion function [conv]. *) (** {6 Conversion of S-expressions to OCaml-values} *) exception Of_sexp_error of string * Sexp.t (** [Of_sexp_error (reason, sexp)] the exception raised when an S-expression could not be successfully converted to an OCaml-value. *) val of_sexp_error : string -> Sexp.t -> 'a (** [of_sexp_error reason sexp] @raise the exception [Of_sexp_error (reason, sexp)]. *) val unit_of_sexp : Sexp.t -> unit (** [unit_of_sexp sexp] converts S-expression [sexp] to a value of type [unit]. *) val bool_of_sexp : Sexp.t -> bool (** [bool_of_sexp sexp] converts S-expression [sexp] to a value of type [bool]. *) val string_of_sexp : Sexp.t -> string (** [string_of_sexp sexp] converts S-expression [sexp] to a value of type [string]. *) val char_of_sexp : Sexp.t -> char (** [char_of_sexp sexp] converts S-expression [sexp] to a value of type [char]. *) val int_of_sexp : Sexp.t -> int (** [int_of_sexp sexp] converts S-expression [sexp] to a value of type [int]. *) val float_of_sexp : Sexp.t -> float (** [float_of_sexp sexp] converts S-expression [sexp] to a value of type [float]. *) val int32_of_sexp : Sexp.t -> int32 (** [int32_of_sexp sexp] converts S-expression [sexp] to a value of type [int32]. *) val int64_of_sexp : Sexp.t -> int64 (** [int64_of_sexp sexp] converts S-expression [sexp] to a value of type [int64]. *) val nativeint_of_sexp : Sexp.t -> nativeint (** [nativeint_of_sexp sexp] converts S-expression [sexp] to a value of type [nativeint]. *) val ref_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a ref (** [ref_of_sexp conv sexp] converts S-expression [sexp] to a value of type ['a ref] using conversion function [conv], which converts an S-expression to a value of type ['a]. *) val lazy_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a lazy_t (** [lazy_of_sexp conv sexp] converts S-expression [sexp] to a value of type ['a lazy_t] using conversion function [conv], which converts an S-expression to a value of type ['a]. *) val option_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a option (** [option_of_sexp conv sexp] converts S-expression [sexp] to a value of type ['a option] using conversion function [conv], which converts an S-expression to a value of type ['a]. *) val list_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a list (** [list_of_sexp conv sexp] converts S-expression [sexp] to a value of type ['a list] using conversion function [conv], which converts an S-expression to a value of type ['a]. *) val array_of_sexp : (Sexp.t -> 'a) -> Sexp.t -> 'a array (** [array_of_sexp conv sexp] converts S-expression [sexp] to a value of type ['a array] using conversion function [conv], which converts an S-expression to a value of type ['a]. *) val hashtbl_of_sexp : (Sexp.t -> 'a) -> (Sexp.t -> 'b) -> Sexp.t -> ('a, 'b) Hashtbl.t (** [hashtbl_of_sexp conv_key conv_value sexp] converts S-expression [sexp] to a value of type [('a, 'b) Hashtbl.t] using conversion function [conv_key], which converts an S-expression to hashtable key of type ['a], and function [conv_value], which converts an S-expression to hashtable value of type ['b]. *) val float32_vec_of_sexp : Sexp.t -> (float, float32_elt, fortran_layout) Array1.t (** [float32_vec_of_sexp sexp] converts S-expression [sexp] to a one-dimensional bigarray of 32-bit floats in Fortran-layout. *) val float64_vec_of_sexp : Sexp.t -> (float, float64_elt, fortran_layout) Array1.t (** [float64_vec_of_sexp sexp] converts S-expression [sexp] to a one-dimensional bigarray of 64-bit floats in Fortran-layout. *) val float32_mat_of_sexp : Sexp.t -> (float, float32_elt, fortran_layout) Array2.t (** [float32_mat_of_sexp sexp] converts S-expression [sexp] to a two-dimensional bigarray of 32-bit floats in Fortran-layout. *) val float64_mat_of_sexp : Sexp.t -> (float, float64_elt, fortran_layout) Array2.t (** [float64_mat_of_sexp sexp] converts S-expression [sexp] to a two-dimensional bigarray of 64-bit floats in Fortran-layout. *) val of_string__of__of_sexp : (Sexp.t -> 'a) -> string -> 'a (** [of_string__of__of_sexp conv str] converts the S-expression [str] represented as a string to an OCaml-value by using conversion function [conv]. *)