sig
  type spec =
      Unit of (unit -> unit)
    | Set of bool Pervasives.ref
    | Clear of bool Pervasives.ref
    | String of (string -> unit)
    | Int of (int -> unit)
    | Float of (float -> unit)
    | Rest of (string -> unit)
  val parse :
    (string * Arg.spec * string) list -> (string -> unit) -> string -> unit
  val parse_argv :
    string array ->
    (string * Arg.spec * string) list -> (string -> unit) -> string -> unit
  exception Bad of string
  val usage : (string * Arg.spec * string) list -> string -> unit
  val current : int Pervasives.ref
end