Skip to content
Snippets Groups Projects
Commit ae257fee authored by Cécile Ruet-Cros's avatar Cécile Ruet-Cros
Browse files

[region] footprint

parent 2d7c68c8
No related branches found
No related tags found
No related merge requests found
......@@ -137,5 +137,5 @@ val field : map -> node -> fieldinfo -> node
(** Unormalized. @raises Not_found *)
val index : map -> node -> typ -> node
(** Unormalized. *)
(** Normalized list of leaf nodes. *)
val footprint : map -> node -> node list
......@@ -468,17 +468,17 @@ let field (m: map) (r: node) (fd: fieldinfo) : node =
let footprint (m: map) (r: node) : node list =
try
let visited = ref SNode.empty (* set of visited&normalized nodes *) in
let leafs = ref [] (* lsit of leafs *) in
let visited = ref SNode.empty (* set of visited & normalized nodes *) in
let leaves = ref [] (* returned leaves *) in
let rec visit (r: node) : unit =
let n = node m r in (* normalized node *)
if SNode.mem n !visited then () else
let _ = visited := SNode.add n !visited in
let () = visited := SNode.add n !visited in
let rg = (* raises Not_found *) Ufind.get m.store n in
match rg.clayout with
| Compound (_, _, range) -> Ranges.iter visit range
| Blob | Cell (_,_) -> leafs := n :: !leafs
in visit r ; !leafs
| Blob | Cell (_,_) -> leaves := n :: !leaves
in visit r ; !leaves
with Not_found -> []
let index (m : map) (r: node) (ty:typ) : node =
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment