packages feed

liquid-fixpoint-0.1.0.0: external/ocamlgraph/src/gml.mli

(**************************************************************************)
(*                                                                        *)
(*  Ocamlgraph: a generic graph library for OCaml                         *)
(*  Copyright (C) 2004-2007                                               *)
(*  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, 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 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

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

module Print
  (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)
  (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