Add more realistic type system.
[wrappi.git] / generator-lib / wrappi_utils.mli
1 (* wrappi
2  * Copyright (C) 2011 Red Hat Inc.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17  *)
18
19 val failwithf : ('a, unit, string, 'b) format4 -> 'a
20 (** Like [failwith] but supports printf-like arguments. *)
21
22 val isspace : char -> bool
23 (** Return true if char is a whitespace character. *)
24
25 val isalnum : char -> bool
26 (** Return true if char is an alphanumeric character. *)
27
28 val files_equal : string -> string -> bool
29 (** [files_equal filename1 filename2] returns true if the files contain
30     the same content. *)
31
32 val count_chars : char -> string -> int
33 (** Count number of times the character occurs in string. *)
34
35 module StringMap : sig
36   type key = String.t
37   type 'a t = 'a Map.Make(String).t
38   val empty : 'a t
39   val is_empty : 'a t -> bool
40   val mem : key -> 'a t -> bool
41   val add : key -> 'a -> 'a t -> 'a t
42   val singleton : key -> 'a -> 'a t
43   val remove : key -> 'a t -> 'a t
44   val merge :
45     (key -> 'a option -> 'b option -> 'c option) ->
46     'a t -> 'b t -> 'c t
47   val compare : ('a -> 'a -> int) -> 'a t -> 'a t -> int
48   val equal : ('a -> 'a -> bool) -> 'a t -> 'a t -> bool
49   val iter : (key -> 'a -> unit) -> 'a t -> unit
50   val fold : (key -> 'a -> 'b -> 'b) -> 'a t -> 'b -> 'b
51   val for_all : (key -> 'a -> bool) -> 'a t -> bool
52   val exists : (key -> 'a -> bool) -> 'a t -> bool
53   val filter : (key -> 'a -> bool) -> 'a t -> 'a t
54   val partition : (key -> 'a -> bool) -> 'a t -> 'a t * 'a t
55   val cardinal : 'a t -> int
56   val bindings : 'a t -> (key * 'a) list
57   val min_binding : 'a t -> key * 'a
58   val max_binding : 'a t -> key * 'a
59   val choose : 'a t -> key * 'a
60   val split : key -> 'a t -> 'a t * 'a option * 'a t
61   val find : key -> 'a t -> 'a
62   val map : ('a -> 'b) -> 'a t -> 'b t
63   val mapi : (key -> 'a -> 'b) -> 'a t -> 'b t
64 end