(* Copyright (C) 2005, HELM Team. * * This file is part of HELM, an Hypertextual, Electronic * Library of Mathematics, developed at the Computer Science * Department, University of Bologna, Italy. * * HELM is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * HELM 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HELM; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, * MA 02111-1307, USA. * * For details, see the HELM World-Wide-Web page, * http://helm.cs.unibo.it/ *) (** {2 Optional values} *) val map_option: ('a -> 'b) -> 'a option -> 'b option val iter_option: ('a -> unit) -> 'a option -> unit val unopt: 'a option -> 'a (** @raise Failure *) (** {2 Filesystem} *) val is_dir: string -> bool (** @return true if file is a directory *) val is_regular: string -> bool (** @return true if file is a regular file *) val mkdir: string -> unit (** create dir and parents. @raise Failure *) val tilde_expand: string -> string (** bash-like (head) tilde expansion *) (** find all _files_ matching test under a filesystem root *) val find: ?test:(string -> bool) -> string -> string list (** {2 File I/O} *) val input_file: string -> string (** read all the contents of file to string *) val input_all: in_channel -> string (** read all the contents of a channel *) val output_file: filename:string -> text:string -> unit (** other way round *) (** {2 Exception handling} *) val finally: (unit -> unit) -> ('a -> 'b) -> 'a -> 'b (** {2 Char processing} *) val is_alpha: char -> bool val is_blank: char -> bool val is_digit: char -> bool val is_alphanum: char -> bool (** is_alpha || is_digit *) (** {2 String processing} *) val split: ?sep:char -> string -> string list (** @param sep defaults to ' ' *) val trim_blanks: string -> string (** strip heading and trailing blanks *) (** {2 List processing} *) val list_uniq: ?eq:('a->'a->bool) -> 'a list -> 'a list (** uniq unix filter on lists *) val filter_map: ('a -> 'b option) -> 'a list -> 'b list (** filter + map *) val list_concat: ?sep:'a list -> 'a list list -> 'a list (**String.concat-like*) (** {2 Debugging & Profiling} *) type profiler = { profile : 'a 'b. ('a -> 'b) -> 'a -> 'b } (** @return a profiling function; [s] is used for labelling the total time at * the end of the execution *) val profile : ?enable:bool -> string -> profiler val set_profiling_printings : (unit -> bool) -> unit