let get_c_funvar mem arity vinfo ap =
let s = "[get_funvar]" in
try let x = (Xmap.find vinfo mem.vars).v_var in
debug "%s %a as %a already recorded" s !Ast_printer.d_var vinfo F.pp_var x;
x
with Not_found ->
debug "%s %a not yet recorded" s !Ast_printer.d_var vinfo;
let t = vinfo.vtype in
let typ_logicvar = if ap then array_of t else pointed_of_arity arity t in
let obj_logicvar = Ctypes.object_of typ_logicvar in
let tau_logicvar = tau_of_object obj_logicvar in
let var = L.fresh vinfo.vname (Acsl(tau_logicvar,Ctype typ_logicvar)) in
let v_info =
{v_var = var ; v_arity = arity ;v_is_array = ap ; v_type = obj_logicvar}
in
debug "%s (%a,%d,%b,%a)" s F.pp_var var arity ap pp_object obj_logicvar ;
mem.vars <- Xmap.add vinfo v_info mem.vars ; var