Commit | Line | Data |
---|---|---|
34e49164 C |
1 | open 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 | ||
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 | ||
ae4735db | 28 | method mydebug: ('a * 'a list) list = |
34e49164 C |
29 | (o#nodes)#tolist +> map (fun a -> (a, (o#successors a)#tolist)) |
30 | end |