SV * Rmpc_realref(mpc_t *op) { mpfr_t * mpfr_t_obj; SV * obj_ref, * obj; New(42, mpfr_t_obj, 1, mpfr_t); if(mpfr_t_obj == NULL) croak("Failed to allocate memory in Rmpc_realref function"); obj_ref = newSV(0); obj = newSVrv(obj_ref, "Math::MPFR"); mpfr_t_obj = mpc_realref(*op); sv_setiv(obj, INT2PTR(IV,mpfr_t_obj)); SvREADONLY_on(obj); return obj_ref; }