coccinelle release 0.2.5
[bpt/coccinelle.git] / commons / ograph.ml
1 open Common
2
3 (* todo:
4 * invariant succesors/predecessors
5 * see c++ library, GTL ...
6 * (cf paper from ASTL, cf paper from jfla05 on ocamlgraph)
7 *)
8
9 class virtual ['a] ograph =
10 object(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
28 method mydebug: ('a * 'a list) list =
29 (o#nodes)#tolist +> map (fun a -> (a, (o#successors a)#tolist))
30 end