Source file piqirun_ext.ml
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
91
92
93
type input_format = [ `piq | `json | `xml | `pb | `pib ]
type output_format = [ input_format | `json_pretty | `xml_pretty ]
type piqi_type = Piqi_common.T.piqtype
type options = Piqi_convert.options
let _ =
Piqi_convert.init ()
let add_piqi (piqi_bin: string) =
let buf = Piqi_piqirun.init_from_string piqi_bin in
let piqi = Piqi.piqi_of_pb buf in
Piqi_db.add_piqi piqi;
()
let seen = ref []
let init_piqi piqi =
if not (List.memq piqi !seen)
then (
seen:= piqi :: !seen;
add_piqi piqi
)
let find_piqi_type (typename :string) :piqi_type =
Piqi_convert.find_type typename
let default_options = Piqi_convert.make_options ()
let default_options_no_pp =
{
default_options with
Piqi_convert.pretty_print = false
}
let make_options = Piqi_convert.make_options
let convert
?opts
(piqi_type :piqi_type)
(input_format :input_format)
(output_format :output_format)
(data :string) :string =
if output_format = (input_format :> output_format)
then data
else (
let output_format, default_opts =
match output_format with
| `json_pretty -> `json, default_options
| `xml_pretty -> `xml, default_options
| (#input_format as x) -> x, default_options_no_pp
in
let opts =
match opts with
| None -> default_opts
| Some x -> x
in
Piqi_convert.convert piqi_type input_format output_format data ~opts
)