let case_of_exp m_here e =
    match Ctypes.get_int e with
      | Some k -> F.e_int64 k
      | None ->
          match expr m_here e with
            | ResultWpModel.V_int(_,term) ) -> term
            | Result( _ ) ->
                Datalib.Collector.add_warning
                  ~severe:true ~source:"wp"
                  ~reason:"non-integer expression"
                  "Can not translate switch statement@[@ (%a)@]"
                  !Ast_printer.d_exp e ;
                raise Failed
            | Warning(source,reason) ->
                Datalib.Collector.add_warning
                  ~severe:true ~source ~reason
                  "Can not translate switch statement@[@ (%a)@]"
                  !Ast_printer.d_exp e ;
                raise Failed