File: argUtils.mli

package info (click to toggle)
herdtools7 7.58-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 19,732 kB
  • sloc: ml: 128,583; ansic: 3,827; makefile: 670; python: 407; sh: 212; awk: 14
file content (90 lines) | stat: -rw-r--r-- 3,900 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
(****************************************************************************)
(*                           the diy toolsuite                              *)
(*                                                                          *)
(* Jade Alglave, University College London, UK.                             *)
(* Luc Maranget, INRIA Paris-Rocquencourt, France.                          *)
(*                                                                          *)
(* Copyright 2023-present Institut National de Recherche en Informatique et *)
(* en Automatique and the authors. All rights reserved.                     *)
(*                                                                          *)
(* This software is governed by the CeCILL-B license under French law and   *)
(* abiding by the rules of distribution of free software. You can use,      *)
(* modify and/ or redistribute the software under the terms of the CeCILL-B *)
(* license as circulated by CEA, CNRS and INRIA at the following URL        *)
(* "http://www.cecill.info". We also give a copy in LICENSE.txt.            *)
(****************************************************************************)

(** Utilities for parsing command line option arguments *)

type 'a tfun = string -> ('a -> unit) -> string -> string * Arg.spec * string
(** Type of generic [parse] functions for handling argument of type ['a]:
   [parse name handle msg]  returns the triple that can serve as an
   option specification of the [Arg] module. Where:
    - [name] is the option name;
    - [handle] handles the argument of type ['a] by side effect;
    - [msg] is the documentation message.
*)


type 'a tref = string -> 'a ref -> string -> string * Arg.spec * string
(** Type of more specific [parse] functions:
   [parse name reference msg] returns the triple that can serve as an
   option specification of the [Arg] module. Where:
    - [name] is the option name;
    - [reference] is a reference to store the parsed argument of type ['a];
    - [msg] is the documentation message.
*)


val parse_bool : bool tref
(** For boolean argument. The initial value of the reference argument
    is the default value and will be added to the documentation message *)

val parse_int : int tref
(** Similar to [parse_bool] above,  for an argument of type int *)

val parse_int_opt : int option tref
(** Optional argument of type int, no default value *)


(** The following functions are similar, only the type varies:
    handling floats, positions (pair of floats) and strings *)
val parse_float : float tref
val parse_float_opt : float option tref

type pos = float * float
val parse_pos : pos tref
val parse_pos_opt : pos option tref

val parse_string : string tref
val parse_string_opt : string option tref


(** Parsing of string sets. The syntax of argument is a comma separated
    list of strings *)
val parse_stringsetfun : StringSet.t tfun
val parse_stringset : StringSet.t tref

type ttag =
  string -> (string -> bool) -> string list
    -> string -> string * Arg.spec * string
(** Type of functions for parsing tags and list of tags.
   [parse name handle tags doc] returns the triple that can serve as an
   option specification of the [Arg] module. Where:
      - [name] is the name of the option;
      - [handle] is a function of type [string -> bool] that checks
        tag validity and handles it by side effect. The function [handle]
        should return [false] on invalid tags. The [parse] function will
        then raise the [Arg.Bad] exception with an appropriate message
        as argument.
      - [tags] is the set of valid tags, part of documentation and of
        the error message above.
      - [doc] is the documentation message.
*)

val parse_tag : ttag
(** Parse a single tag *)

val parse_tags : ttag
(** Parse a list of comma separated tags. The [handle] function
    is iterated on that list. *)