let cast_to_c_func cfunc =
let ret_type = match cfunc.returns with
| None -> "void "
| Some(atype) -> Format.sprintf "struct %s*" atype in
let body = match cfunc.body with
| [] -> " { }"
| body -> Format.sprintf "\n{\n%s\n}" (cast_to_c_stmtlist 1 body) in
let params = if cfunc.static = false then (GenCast.get_tname cfunc.inklass, "this")::cfunc.formals
else cfunc.formals in
let signature = String.concat ", " (List.map (fun (t,v) -> "struct " ^ t ^ "*" ^ v) params) in
if cfunc.builtin then Format.sprintf "/* Place-holder for %s%s(%s) */" ret_type cfunc.name signature
else Format.sprintf "\n%s%s(%s)%s\n" ret_type cfunc.name signature body