let sast_functions (klasses : Sast.class_def list) =
let get_functions (klass : Sast.class_def) =
let s = klass.sections in
let funcs = function
| Sast.MethodMem(m) -> Some(m)
| Sast.InitMem(i) -> Some(i)
| _ -> None in
let get_funcs mems = Util.filter_option (List.map funcs mems) in
List.flatten [ get_funcs s.publics ; get_funcs s.protects ; get_funcs s.privates ; s.refines ; s.mains ] in
let all_functions = List.flatten (List.map get_functions klasses) in
let all_mains = List.flatten (List.map (fun k -> k.sections.mains) klasses) in
(all_functions, all_mains)