forked from rescript-lang/rescript
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgml.mli
executable file
·82 lines (71 loc) · 2.68 KB
/
gml.mli
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
(**************************************************************************)
(* *)
(* Ocamlgraph: a generic graph library for OCaml *)
(* Copyright (C) 2004-2010 *)
(* Sylvain Conchon, Jean-Christophe Filliatre and Julien Signoles *)
(* *)
(* This software is free software; you can redistribute it and/or *)
(* modify it under the terms of the GNU Library General Public *)
(* License version 2.1, with the special exception on linking *)
(* described in file LICENSE. *)
(* *)
(* This software is distributed in the hope that it will be useful, *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *)
(* *)
(**************************************************************************)
(* $Id: gml.mli,v 1.3 2005-07-06 13:20:31 conchon Exp $ *)
(** Parser and pretty-printer for GML file format. *)
type value =
| Int of int
| Float of float
| String of string
| List of value_list
and value_list = (string * value) list
(** {2 Parser} *)
(** Provide a parser for GML file format. *)
module Parse
(B : Builder.S)
(L : sig
val node : value_list -> B.G.V.label
(** How to build the node label out of the set of GML attributes.
For example {v node [ id 12 label "foo" ] v} will call this
function with [["id", Int 12; "label", String "foo"]] *)
val edge : value_list -> B.G.E.label
(** How to build the edge label out of the set of GML attributes *)
end) :
sig
val parse : string -> B.G.t
end
(** {2 Pretty-printer} *)
(** Signature for graph required by {!Print}.
Sub-signature of {!Sig.G}. *)
module type G = sig
module V : sig
type t
val hash : t -> int
val equal : t -> t -> bool
type label
val label : t -> label
end
module E : sig
type t
type label
val src : t -> V.t
val dst : t -> V.t
val label : t -> label
end
type t
val iter_vertex : (V.t -> unit) -> t -> unit
val iter_edges_e : (E.t -> unit) -> t -> unit
end
(** Provide a pretty-printer for GML file format. *)
module Print
(G: G)
(L: sig
val node : G.V.label -> value_list
val edge : G.E.label -> value_list
end) :
sig
val print : Format.formatter -> G.t -> unit
end