# Module OASISUtils

    module OASISUtils: sig .. end

Various utilities

- Author(s): Sylvain Le Gall

### Map

    module MapExt: sig .. end

    module MapString: MapExt.S  with type key = String.t

### Set

    module SetExt: sig .. end

    module SetString: SetExt.S  with type elt = String.t

Set for String.

    module SetStringCsl: SetExt.S  with type elt = String.t

Set for String.

### Hashtable

    module HashStringCsl: Hashtbl.S  with type key = String.t

Caseless string hashtable

### Variable name

    val varname_of_string : ?hyphen:char -> string -> string

`varname_of_string ~hyphen:c s` Transform a string `s` into a variable name, following this convention: no digit at the beginning, lowercase, only a-z and 0-9 chars. Whenever there is a problem, use an hyphen.

    val varname_concat : ?hyphen:char -> string -> string -> string

`varname_concat ~hyphen p s` Concat variable name, removing hyphen at end of `p` and at beginning of `s`.

    val is_varname : string -> bool

`is_varname str` Check that the string `str` is a valid varname. See `OASISUtils.varname_of_string` for definition.

### Fail with Printf.sprintf

    val failwithf : ('a, unit, string, 'b) Stdlib.format4 -> 'a

This function raises the `Failure` exception just as `failwith` except that one specifies the string raised through a format string.

Example: `failwithf "Cannot do %s because of %d" str i`

    val file_location : ?pos1:Stdlib.Lexing.position ->
           ?pos2:Stdlib.Lexing.position ->
           ?lexbuf:Stdlib.Lexing.lexbuf -> unit -> string

This function returns a string describing a position in a file, to locate an error. The format of the string is compatible with OCaml compilation location format.

    val failwithpf : ?pos1:Stdlib.Lexing.position ->
           ?pos2:Stdlib.Lexing.position ->
           ?lexbuf:Stdlib.Lexing.lexbuf -> ('a, unit, string, 'b) Stdlib.format4 -> 'a

This function raises the `Failure` exception just as `failwith` except that one specifies the string raised through a format string and locate the error using `lexbuf` in the source file.

Example: `failwithpf lexbuf "Cannot do %s because of %d" str i`

### String

    val compare_csl : string -> string -> int

Caseless compare function

### Options

    val may : ('a -> unit) -> 'a option -> unit

`may f (Some x)` calls `f x` or do nothing.

    module POSIXShell: sig .. end