/* * This file was generated automatically by ExtUtils::ParseXS version 2.18 from the * contents of Symbol.xs. Do not edit this file, edit Symbol.xs instead. * * ANY CHANGES MADE HERE WILL BE LOST! * */ #line 1 "Symbol.xs" #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #ifdef PERL_OBJECT #define sv_name(svp) svp #define undef(ref) #else static void undef(SV *ref) { GV *gv; SV *sv; CV *cv; I32 has_proto=FALSE; if(SvROK(ref)) sv = SvRV(ref); else croak("Apache::Symbol::undef called without a reference!"); switch (SvTYPE(sv)) { case SVt_PVCV: cv = (CV*)sv; if (!CvXSUB(cv) && CvROOT(cv) && CvDEPTH(cv)) { return; /* subroutine is active */ } gv = (GV*)SvREFCNT_inc(CvGV(cv)); if(SvPOK(cv)) has_proto = TRUE; cv_undef(cv); CvGV(cv) = gv; /* let user-undef'd sub keep its identity */ if(has_proto) SvPOK_on(cv); /* otherwise we get `Prototype mismatch:' */ break; default: warn("Apache::Symbol::undef called without a CODE reference!\n"); } } static SV *sv_name(SV *svp) { SV *sv = Nullsv; SV *RETVAL = Nullsv; if(svp && SvROK(svp) && (sv = SvRV(svp))) { switch(SvTYPE(sv)) { case SVt_PVCV: RETVAL = newSV(0); gv_fullname(RETVAL, CvGV(sv)); break; default: break; } } else if(svp && SvPOK(svp)) { RETVAL = newSVsv(svp); } return RETVAL; } #endif #ifndef PERL_UNUSED_VAR # define PERL_UNUSED_VAR(var) if (0) var = var #endif #line 82 "Symbol.c" XS(XS_Apache__Symbol_undef); /* prototype to pass -Wmissing-prototypes */ XS(XS_Apache__Symbol_undef) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Apache::Symbol::undef", "sv"); PERL_UNUSED_VAR(cv); /* -W */ { SV * sv = ST(0); undef(sv); } XSRETURN_EMPTY; } XS(XS_Apache__Symbol_sv_name); /* prototype to pass -Wmissing-prototypes */ XS(XS_Apache__Symbol_sv_name) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Apache::Symbol::sv_name", "sv"); PERL_UNUSED_VAR(cv); /* -W */ { SV * sv = ST(0); SV * RETVAL; RETVAL = sv_name(sv); ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } XS(XS_Apache__Symbol_cv_const_sv); /* prototype to pass -Wmissing-prototypes */ XS(XS_Apache__Symbol_cv_const_sv) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif if (items != 1) Perl_croak(aTHX_ "Usage: %s(%s)", "Apache::Symbol::cv_const_sv", "sv"); PERL_UNUSED_VAR(cv); /* -W */ { SV* sv = ST(0); #line 85 "Symbol.xs" CV *cv; GV *gv; HV *stash; #line 145 "Symbol.c" SV * RETVAL; #line 91 "Symbol.xs" switch (SvTYPE(sv)) { default: if (!SvROK(sv)) { char *sym; if (SvGMAGICAL(sv)) { mg_get(sv); sym = SvPOKp(sv) ? SvPVX(sv) : Nullch; } else { STRLEN n_a; sym = SvPV(sv, n_a); } if(sym) cv = perl_get_cv(sym, TRUE); break; } cv = (CV*)SvRV(sv); if (SvTYPE(cv) == SVt_PVCV) break; case SVt_PVHV: case SVt_PVAV: croak("Not a CODE reference"); case SVt_PVCV: cv = (CV*)sv; break; case SVt_PVGV: if (!(cv = GvCVu((GV*)sv))) cv = sv_2cv(sv, &stash, &gv, TRUE); break; } if(!(RETVAL = cv_const_sv(cv))) XSRETURN_UNDEF; SvREADONLY_off(RETVAL); #line 186 "Symbol.c" ST(0) = RETVAL; sv_2mortal(ST(0)); } XSRETURN(1); } #ifdef __cplusplus extern "C" #endif XS(boot_Apache__Symbol); /* prototype to pass -Wmissing-prototypes */ XS(boot_Apache__Symbol) { #ifdef dVAR dVAR; dXSARGS; #else dXSARGS; #endif char* file = __FILE__; PERL_UNUSED_VAR(cv); /* -W */ PERL_UNUSED_VAR(items); /* -W */ XS_VERSION_BOOTCHECK ; newXS("Apache::Symbol::undef", XS_Apache__Symbol_undef, file); newXS("Apache::Symbol::sv_name", XS_Apache__Symbol_sv_name, file); newXS("Apache::Symbol::cv_const_sv", XS_Apache__Symbol_cv_const_sv, file); XSRETURN_YES; }