let rec get_field_type_from_desc id =
function
[] -> raise (Type_Error_local ("field "^id^" not exist"))
| (_, NormalField f) :: rest ->
if f.sf_id = id then f.sf_type
else get_field_type_from_desc id rest
| (_, BitField f) :: rest ->
let rec srch = function
[] -> get_field_type_from_desc id rest
| (Some s, t, _, _)::_ when s = id -> t
| _ :: rest -> srch rest
in
srch f.s_bf_fields