File: cli_string_multiple_map.ml

package info (click to toggle)
frama-c 20220511-manganese-5
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 66,492 kB
  • sloc: ml: 278,834; ansic: 47,093; sh: 4,823; makefile: 3,613; javascript: 2,436; python: 1,919; perl: 897; lisp: 293; xml: 62
file content (36 lines) | stat: -rw-r--r-- 803 bytes parent folder | download | duplicates (2)
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
include
  Plugin.Register
    (struct
      let name = "a"
      let shortname = "a"
      let help = ""
    end)

module M =
  String_multiple_map
    (struct
      include Datatype.Integer
      type key = string
      let of_string ~key:_ ~prev:_ arg =
        try
          Option.map Integer.of_string arg
        with Failure _ ->
          raise (Cannot_build "expecting an integer")
      let to_string ~key:_ = Option.map Integer.to_string
    end)
    (struct
      let option_name = "-multiple-map"
      let help = ""
      let default = Datatype.String.Map.empty
      let arg_name = "s:i"
    end)


let main () =
  let print k v =
    feedback "%s => %a" k (Pretty_utils.pp_list ~sep:";@," Integer.pretty) v
  in
  Datatype.String.Map.iter print (M.get ())

let () = Db.Main.extend main