let get_asked_bhv_from_name s_bhvs f_bhvs ki bname =
let add_fct_bhv acc b =
let add = match b with
| None -> bname = Cil.default_behavior_name
| Some b -> b = bname && b <> Cil.default_behavior_name
in
match ki with
| None
| Some Kglobal ->
if add then (FunBhv bname)::acc else acc
| Some Kstmt _ -> acc
in
let add_stmt_bhv acc (n,s,b) =
if b = bname then
match ki with
| None -> (StmtBhv (n, s, b))::acc
| Some (Kstmt stmt) when stmt.sid = s.sid ->
(StmtBhv (n, s, b))::acc
| _ -> acc
else acc
in
let acc = [] in
let acc = add_fct_bhv acc None in
let acc = List.fold_left add_stmt_bhv acc s_bhvs in
let acc = List.fold_left (fun acc b -> add_fct_bhv acc (Some b)) acc f_bhvs in
acc