use normal argument type conversion in cfunc wrapper for types that support it
simplify also return type conversion in cfunc wrapper