/* * This file was generated automatically by xsubpp version 1.9507 from the * contents of Geometry.xs. Do not edit this file, edit Geometry.xs instead. * * ANY CHANGES MADE HERE WILL BE LOST! * */ #line 1 "Geometry.xs" #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "hypotenuse.h" #include "r2p.h" #line 19 "Geometry.c" XS(XS_Geometry_hypotenuse) { dXSARGS; if (items != 2) croak("Usage: Geometry::hypotenuse(x, y)"); { double x = (double)SvNV(ST(0)); double y = (double)SvNV(ST(1)); double RETVAL; RETVAL = hypotenuse(x, y); ST(0) = sv_newmortal(); sv_setnv(ST(0), (double)RETVAL); } XSRETURN(1); } XS(XS_Geometry_r2p) { dXSARGS; if (items != 3) croak("Usage: Geometry::r2p(x, y, theta)"); { double x = (double)SvNV(ST(0)); double y = (double)SvNV(ST(1)); double theta; double RETVAL; #line 24 "Geometry.xs" RETVAL = r2p(x, y, &theta); #line 49 "Geometry.c" sv_setnv(ST(2), (double)theta); SvSETMAGIC(ST(2)); ST(0) = sv_newmortal(); sv_setnv(ST(0), (double)RETVAL); } XSRETURN(1); } XS(XS_Geometry_r2p_list) { dXSARGS; if (items != 2) croak("Usage: Geometry::r2p_list(x, y)"); SP -= items; { double x = (double)SvNV(ST(0)); double y = (double)SvNV(ST(1)); #line 34 "Geometry.xs" double r; double theta; #line 70 "Geometry.c" #line 37 "Geometry.xs" r = r2p(x, y, &theta); EXTEND(SP, 2); PUSHs(sv_2mortal(newSVnv(r ))); PUSHs(sv_2mortal(newSVnv(theta))); #line 76 "Geometry.c" PUTBACK; return; } } XS(XS_Geometry_r2p_open) { dXSARGS; if (items != 2) croak("Usage: Geometry::r2p_open(x, y)"); SP -= items; { double x = (double)SvNV(ST(0)); double y = (double)SvNV(ST(1)); #line 47 "Geometry.xs" double r; double theta; #line 94 "Geometry.c" #line 50 "Geometry.xs" r = sqrt(x*x + y*y); theta = atan2(y, x); EXTEND(SP, 2); PUSHs(sv_2mortal(newSVnv(r ))); PUSHs(sv_2mortal(newSVnv(theta))); #line 101 "Geometry.c" PUTBACK; return; } } #ifdef __cplusplus extern "C" #endif XS(boot_Geometry) { dXSARGS; char* file = __FILE__; XS_VERSION_BOOTCHECK ; newXSproto("Geometry::hypotenuse", XS_Geometry_hypotenuse, file, "$$"); newXSproto("Geometry::r2p", XS_Geometry_r2p, file, "$$$"); newXSproto("Geometry::r2p_list", XS_Geometry_r2p_list, file, "$$"); newXSproto("Geometry::r2p_open", XS_Geometry_r2p_open, file, "$$"); XSRETURN_YES; }