Release coccinelle-0.2.3rc4
[bpt/coccinelle.git] / commons / ograph.ml
CommitLineData
34e49164
C
1open Common
2
ae4735db 3(* todo:
34e49164 4 * invariant succesors/predecessors
ae4735db 5 * see c++ library, GTL ...
34e49164
C
6 * (cf paper from ASTL, cf paper from jfla05 on ocamlgraph)
7 *)
8
9class virtual ['a] ograph =
10object(o: 'o)
11 method virtual empty: 'o
12
13 method virtual add_node: 'a -> 'o
14 method virtual del_node: 'a -> 'o
15
16 method virtual add_arc: ('a * 'a) -> 'o
17 method virtual del_arc: ('a * 'a) -> 'o
18
19 method virtual successors: 'a -> 'a Oset.oset
20 method virtual predecessors: 'a -> 'a Oset.oset
21
22 method virtual nodes: 'a Oset.oset
23
24 method virtual ancestors: 'a Oset.oset -> 'a Oset.oset
25 method virtual children: 'a Oset.oset -> 'a Oset.oset
26 method virtual brothers: 'a -> 'a Oset.oset
27
ae4735db 28 method mydebug: ('a * 'a list) list =
34e49164
C
29 (o#nodes)#tolist +> map (fun a -> (a, (o#successors a)#tolist))
30end