| Server IP : 164.138.27.172 / Your IP : 216.73.216.143 Web Server : nginx/1.27.4 System : Linux cookingdream 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64 User : www-adm ( 1001) PHP Version : 8.3.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /home/jonasn/.cpan/build/Geo-IP-1.51-0/ |
Upload File : |
/*
* This file was generated automatically by ExtUtils::ParseXS version 3.34 from the
* contents of IP.xs. Do not edit this file, edit IP.xs instead.
*
* ANY CHANGES MADE HERE WILL BE LOST!
*
*/
#line 1 "IP.xs"
#ifdef __cplusplus
extern "C" {
#endif
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
#include "ppport.h"
#include "GeoIP.h"
#include "GeoIPCity.h"
/* if we're built against a version of geoip-api-c that doesn't define this,
* the flag should be harmless (as long as it doesn't clash with another
* flag using the same bit position). */
#ifndef GEOIP_SILENCE
#define GEOIP_SILENCE 16
#endif
#ifdef __cplusplus
}
#endif
#line 33 "IP.c"
#ifndef PERL_UNUSED_VAR
# define PERL_UNUSED_VAR(var) if (0) var = var
#endif
#ifndef dVAR
# define dVAR dNOOP
#endif
/* This stuff is not part of the API! You have been warned. */
#ifndef PERL_VERSION_DECIMAL
# define PERL_VERSION_DECIMAL(r,v,s) (r*1000000 + v*1000 + s)
#endif
#ifndef PERL_DECIMAL_VERSION
# define PERL_DECIMAL_VERSION \
PERL_VERSION_DECIMAL(PERL_REVISION,PERL_VERSION,PERL_SUBVERSION)
#endif
#ifndef PERL_VERSION_GE
# define PERL_VERSION_GE(r,v,s) \
(PERL_DECIMAL_VERSION >= PERL_VERSION_DECIMAL(r,v,s))
#endif
#ifndef PERL_VERSION_LE
# define PERL_VERSION_LE(r,v,s) \
(PERL_DECIMAL_VERSION <= PERL_VERSION_DECIMAL(r,v,s))
#endif
/* XS_INTERNAL is the explicit static-linkage variant of the default
* XS macro.
*
* XS_EXTERNAL is the same as XS_INTERNAL except it does not include
* "STATIC", ie. it exports XSUB symbols. You probably don't want that
* for anything but the BOOT XSUB.
*
* See XSUB.h in core!
*/
/* TODO: This might be compatible further back than 5.10.0. */
#if PERL_VERSION_GE(5, 10, 0) && PERL_VERSION_LE(5, 15, 1)
# undef XS_EXTERNAL
# undef XS_INTERNAL
# if defined(__CYGWIN__) && defined(USE_DYNAMIC_LOADING)
# define XS_EXTERNAL(name) __declspec(dllexport) XSPROTO(name)
# define XS_INTERNAL(name) STATIC XSPROTO(name)
# endif
# if defined(__SYMBIAN32__)
# define XS_EXTERNAL(name) EXPORT_C XSPROTO(name)
# define XS_INTERNAL(name) EXPORT_C STATIC XSPROTO(name)
# endif
# ifndef XS_EXTERNAL
# if defined(HASATTRIBUTE_UNUSED) && !defined(__cplusplus)
# define XS_EXTERNAL(name) void name(pTHX_ CV* cv __attribute__unused__)
# define XS_INTERNAL(name) STATIC void name(pTHX_ CV* cv __attribute__unused__)
# else
# ifdef __cplusplus
# define XS_EXTERNAL(name) extern "C" XSPROTO(name)
# define XS_INTERNAL(name) static XSPROTO(name)
# else
# define XS_EXTERNAL(name) XSPROTO(name)
# define XS_INTERNAL(name) STATIC XSPROTO(name)
# endif
# endif
# endif
#endif
/* perl >= 5.10.0 && perl <= 5.15.1 */
/* The XS_EXTERNAL macro is used for functions that must not be static
* like the boot XSUB of a module. If perl didn't have an XS_EXTERNAL
* macro defined, the best we can do is assume XS is the same.
* Dito for XS_INTERNAL.
*/
#ifndef XS_EXTERNAL
# define XS_EXTERNAL(name) XS(name)
#endif
#ifndef XS_INTERNAL
# define XS_INTERNAL(name) XS(name)
#endif
/* Now, finally, after all this mess, we want an ExtUtils::ParseXS
* internal macro that we're free to redefine for varying linkage due
* to the EXPORT_XSUB_SYMBOLS XS keyword. This is internal, use
* XS_EXTERNAL(name) or XS_INTERNAL(name) in your code if you need to!
*/
#undef XS_EUPXS
#if defined(PERL_EUPXS_ALWAYS_EXPORT)
# define XS_EUPXS(name) XS_EXTERNAL(name)
#else
/* default to internal */
# define XS_EUPXS(name) XS_INTERNAL(name)
#endif
#ifndef PERL_ARGS_ASSERT_CROAK_XS_USAGE
#define PERL_ARGS_ASSERT_CROAK_XS_USAGE assert(cv); assert(params)
/* prototype to pass -Wmissing-prototypes */
STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params);
STATIC void
S_croak_xs_usage(const CV *const cv, const char *const params)
{
const GV *const gv = CvGV(cv);
PERL_ARGS_ASSERT_CROAK_XS_USAGE;
if (gv) {
const char *const gvname = GvNAME(gv);
const HV *const stash = GvSTASH(gv);
const char *const hvname = stash ? HvNAME(stash) : NULL;
if (hvname)
Perl_croak_nocontext("Usage: %s::%s(%s)", hvname, gvname, params);
else
Perl_croak_nocontext("Usage: %s(%s)", gvname, params);
} else {
/* Pants. I don't think that it should be possible to get here. */
Perl_croak_nocontext("Usage: CODE(0x%" UVxf ")(%s)", PTR2UV(cv), params);
}
}
#undef PERL_ARGS_ASSERT_CROAK_XS_USAGE
#define croak_xs_usage S_croak_xs_usage
#endif
/* NOTE: the prototype of newXSproto() is different in versions of perls,
* so we define a portable version of newXSproto()
*/
#ifdef newXS_flags
#define newXSproto_portable(name, c_impl, file, proto) newXS_flags(name, c_impl, file, proto, 0)
#else
#define newXSproto_portable(name, c_impl, file, proto) (PL_Sv=(SV*)newXS(name, c_impl, file), sv_setpv(PL_Sv, proto), (CV*)PL_Sv)
#endif /* !defined(newXS_flags) */
#if PERL_VERSION_LE(5, 21, 5)
# define newXS_deffile(a,b) Perl_newXS(aTHX_ a,b,file)
#else
# define newXS_deffile(a,b) Perl_newXS_deffile(aTHX_ a,b)
#endif
#line 177 "IP.c"
XS_EUPXS(XS_Geo__IP_region_name_by_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_region_name_by_code)
{
dVAR; dXSARGS;
if (items != 3)
croak_xs_usage(cv, "CLASS, country_code, region");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
char * country_code = (char *)SvPVbyte_nolen (ST(1))
;
char * region = (char *)SvPVbyte_nolen (ST(2))
;
const char * RETVAL;
dXSTARG;
#line 33 "IP.xs"
RETVAL = (const char *) GeoIP_region_name_by_code(country_code, region);
#line 196 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_continent_code_by_country_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_continent_code_by_country_code)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "CLASS, country_code");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
char * country_code = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
#line 42 "IP.xs"
RETVAL = (const char *) GeoIP_country_continent[GeoIP_id_by_code(country_code)];
#line 218 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_time_zone); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_time_zone)
{
dVAR; dXSARGS;
if (items != 3)
croak_xs_usage(cv, "CLASS, country_code, region");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
char * country_code = (char *)SvPVbyte_nolen (ST(1))
;
char * region = (char *)SvPVbyte_nolen (ST(2))
;
const char * RETVAL;
dXSTARG;
#line 52 "IP.xs"
RETVAL = (const char *) GeoIP_time_zone_by_country_and_region(country_code, region);
#line 242 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_new); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_new)
{
dVAR; dXSARGS;
if (items < 1 || items > 2)
croak_xs_usage(cv, "CLASS, flags = 0");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
int flags;
#line 61 "IP.xs"
GeoIP * gi;
#line 261 "IP.c"
GeoIP * RETVAL;
if (items < 2)
flags = 0;
else {
flags = (int)SvIV(ST(1))
;
}
#line 63 "IP.xs"
gi = GeoIP_new(flags | GEOIP_SILENCE);
if ( gi )
GeoIP_set_charset(gi, GEOIP_CHARSET_ISO_8859_1);
RETVAL = gi;
#line 275 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_open_type); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_open_type)
{
dVAR; dXSARGS;
if (items < 2 || items > 3)
croak_xs_usage(cv, "CLASS, type, flags = 0");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
int type = (int)SvIV(ST(1))
;
int flags;
#line 76 "IP.xs"
GeoIP * gi;
#line 301 "IP.c"
GeoIP * RETVAL;
if (items < 3)
flags = 0;
else {
flags = (int)SvIV(ST(2))
;
}
#line 78 "IP.xs"
gi = GeoIP_open_type(type, flags | GEOIP_SILENCE);
if ( gi )
GeoIP_set_charset(gi, GEOIP_CHARSET_ISO_8859_1);
RETVAL = gi;
#line 315 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_open); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_open)
{
dVAR; dXSARGS;
if (items < 2 || items > 3)
croak_xs_usage(cv, "CLASS, filename, flags = 0");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
char * filename = (char *)SvPVbyte_nolen (ST(1))
;
int flags;
#line 91 "IP.xs"
GeoIP * gi;
#line 341 "IP.c"
GeoIP * RETVAL;
if (items < 3)
flags = 0;
else {
flags = (int)SvIV(ST(2))
;
}
#line 93 "IP.xs"
gi = ( filename != NULL ) ? GeoIP_open(filename, flags | GEOIP_SILENCE) : NULL;
if ( gi )
GeoIP_set_charset(gi, GEOIP_CHARSET_ISO_8859_1);
RETVAL = gi;
#line 355 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_id_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_id_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::id_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 105 "IP.xs"
RETVAL = GeoIP_id_by_addr(gi,addr);
#line 389 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_id_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_id_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::id_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 114 "IP.xs"
RETVAL = GeoIP_id_by_name(gi,name);
#line 418 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_database_edition); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_database_edition)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gi");
{
GeoIP * gi;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::database_edition() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 122 "IP.xs"
RETVAL = GeoIP_database_edition(gi);
#line 445 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_database_info); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_database_info)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gi");
{
GeoIP * gi;
char * RETVAL;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::database_info() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 130 "IP.xs"
RETVAL = GeoIP_database_info(gi);
#line 471 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
if(RETVAL != NULL) {
RETVALSV = newSVpv(RETVAL, strlen(RETVAL));
free(RETVAL);
sv_2mortal(RETVALSV);
}
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code_by_ipnum_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code_by_ipnum_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, ptr");
{
GeoIP * gi;
char * ptr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code_by_ipnum_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 139 "IP.xs"
RETVAL = GeoIP_country_code_by_ipnum_v6(gi,*(geoipv6_t*)ptr);
#line 509 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code_by_addr_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code_by_addr_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code_by_addr_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 148 "IP.xs"
RETVAL = GeoIP_country_code_by_addr_v6(gi,addr);
#line 538 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code_by_name_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code_by_name_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code_by_name_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 157 "IP.xs"
RETVAL = GeoIP_country_code_by_name_v6(gi,name);
#line 567 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code3_by_ipnum_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code3_by_ipnum_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, ptr");
{
GeoIP * gi;
char * ptr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code3_by_ipnum_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 166 "IP.xs"
RETVAL = GeoIP_country_code3_by_ipnum_v6(gi,*(geoipv6_t*)ptr);
#line 596 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code3_by_addr_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code3_by_addr_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code3_by_addr_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 175 "IP.xs"
RETVAL = GeoIP_country_code3_by_addr_v6(gi,addr);
#line 625 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code3_by_name_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code3_by_name_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code3_by_name_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 184 "IP.xs"
RETVAL = GeoIP_country_code3_by_name_v6(gi,name);
#line 654 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_name_by_name_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_name_by_name_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_name_by_name_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 193 "IP.xs"
RETVAL = GeoIP_country_name_by_name_v6(gi,name);
#line 683 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_name_by_ipnum_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_name_by_ipnum_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, ptr");
{
GeoIP * gi;
char * ptr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_name_by_ipnum_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 202 "IP.xs"
RETVAL = GeoIP_country_name_by_ipnum_v6(gi,*(geoipv6_t*)ptr);
#line 712 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_name_by_addr_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_name_by_addr_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_name_by_addr_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 211 "IP.xs"
RETVAL = GeoIP_country_name_by_addr_v6(gi,addr);
#line 741 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 220 "IP.xs"
RETVAL = GeoIP_country_code_by_addr(gi,addr);
#line 770 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 229 "IP.xs"
RETVAL = GeoIP_country_code_by_name(gi,name);
#line 799 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code3_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code3_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code3_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 238 "IP.xs"
RETVAL = GeoIP_country_code3_by_addr(gi,addr);
#line 828 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_code3_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_code3_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_code3_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 247 "IP.xs"
RETVAL = GeoIP_country_code3_by_name(gi,name);
#line 857 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_name_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_name_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_name_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 256 "IP.xs"
RETVAL = GeoIP_country_name_by_addr(gi,addr);
#line 886 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_country_name_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_country_name_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::country_name_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 265 "IP.xs"
RETVAL = GeoIP_country_name_by_name(gi,name);
#line 915 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_name_by_ipnum_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_name_by_ipnum_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, ptr");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * ptr = (char *)SvPVbyte_nolen (ST(1))
;
#line 274 "IP.xs"
char * n;
#line 936 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::name_by_ipnum_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 276 "IP.xs"
ST(0) = sv_newmortal();
n = GeoIP_name_by_ipnum_v6(gi,*(geoipv6_t*)ptr);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
#line 958 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_name_by_addr_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_name_by_addr_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 294 "IP.xs"
char * n;
#line 979 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::name_by_addr_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 296 "IP.xs"
ST(0) = sv_newmortal();
n = GeoIP_name_by_addr_v6(gi,addr);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
#line 1001 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_name_by_name_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_name_by_name_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
#line 314 "IP.xs"
char * n;
#line 1022 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::name_by_name_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 316 "IP.xs"
ST(0) = sv_newmortal();
n = GeoIP_name_by_name_v6(gi,name);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
#line 1044 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_org_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_org_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 334 "IP.xs"
char * n;
#line 1065 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::org_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 336 "IP.xs"
ST(0) = sv_newmortal();
n = GeoIP_org_by_addr(gi,addr);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
#line 1087 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_org_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_org_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
#line 354 "IP.xs"
char * n;
#line 1108 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::org_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 356 "IP.xs"
ST(0) = sv_newmortal();
n = GeoIP_org_by_name(gi,name);
if ( n != NULL ) {
ST(0) = newSVpv(n, strlen(n));
free(n);
#if defined(sv_utf8_decode)
if ( GeoIP_charset(gi) == GEOIP_CHARSET_UTF8 )
SvUTF8_on(ST(0));
#endif
sv_2mortal(ST(0));
}
XSRETURN(1);
#line 1130 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_range_by_ip); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_range_by_ip)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
const char * addr = (const char *)SvPV_nolen(ST(1))
;
#line 375 "IP.xs"
char ** r;
#line 1151 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::range_by_ip() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 377 "IP.xs"
r = GeoIP_range_by_ip(gi,addr);
if (r != NULL){
EXTEND(SP,2);
PUSHs( sv_2mortal( newSVpv(r[0], 0) ) );
PUSHs( sv_2mortal( newSVpv(r[1], 0) ) );
if ( r[0] )
free(r[0]);
if ( r[1] )
free(r[1]);
free(r);
}
#line 1173 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_region_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_region_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 395 "IP.xs"
GeoIPRegion * gir;
#line 1194 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::region_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 397 "IP.xs"
gir = GeoIP_region_by_addr(gi,addr);
if (gir){
EXTEND(SP,2);
( gir->country_code[0] == '\0' && gir->country_code[1] == '\0' )
? PUSHs ( sv_newmortal() )
: PUSHs ( sv_2mortal( newSVpv(gir->country_code, 2) ) );
( gir->region[0] == '\0' && gir->region[1] == '\0' )
? PUSHs ( sv_newmortal() )
: PUSHs( sv_2mortal( newSVpv(gir->region, 2) ) );
GeoIPRegion_delete(gir);
}
#line 1218 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_region_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_region_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, name");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIP * gi;
char * name = (char *)SvPVbyte_nolen (ST(1))
;
#line 417 "IP.xs"
GeoIPRegion * gir;
#line 1239 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::region_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 419 "IP.xs"
gir = GeoIP_region_by_name(gi,name);
if (gir){
EXTEND(SP,2);
( gir->country_code[0] == '\0' && gir->country_code[1] == '\0' )
? PUSHs ( sv_newmortal() )
: PUSHs ( sv_2mortal( newSVpv(gir->country_code, 2) ) );
( gir->region[0] == '\0' && gir->region[1] == '\0' )
? PUSHs ( sv_newmortal() )
: PUSHs( sv_2mortal( newSVpv(gir->region, 2) ) );
GeoIPRegion_delete(gir);
}
#line 1263 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP_record_by_ipnum_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_record_by_ipnum_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, ipnum");
{
GeoIP * gi;
char * ipnum = (char *)SvPVbyte_nolen (ST(1))
;
#line 439 "IP.xs"
char * CLASS = "Geo::IP::Record";
#line 1282 "IP.c"
GeoIPRecord * RETVAL;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::record_by_ipnum_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 441 "IP.xs"
RETVAL = GeoIP_record_by_ipnum_v6(gi,*(geoipv6_t*)ipnum);
#line 1294 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_record_by_addr_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_record_by_addr_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 450 "IP.xs"
char * CLASS = "Geo::IP::Record";
#line 1318 "IP.c"
GeoIPRecord * RETVAL;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::record_by_addr_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 452 "IP.xs"
RETVAL = GeoIP_record_by_addr_v6(gi,addr);
#line 1330 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_record_by_name_v6); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_record_by_name_v6)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 461 "IP.xs"
char * CLASS = "Geo::IP::Record";
#line 1354 "IP.c"
GeoIPRecord * RETVAL;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::record_by_name_v6() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 463 "IP.xs"
RETVAL = GeoIP_record_by_name_v6(gi,addr);
#line 1366 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_record_by_addr); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_record_by_addr)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 472 "IP.xs"
char * CLASS = "Geo::IP::Record";
#line 1390 "IP.c"
GeoIPRecord * RETVAL;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::record_by_addr() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 474 "IP.xs"
RETVAL = GeoIP_record_by_addr(gi,addr);
#line 1402 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_record_by_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_record_by_name)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, addr");
{
GeoIP * gi;
char * addr = (char *)SvPVbyte_nolen (ST(1))
;
#line 483 "IP.xs"
char * CLASS = "Geo::IP::Record";
#line 1426 "IP.c"
GeoIPRecord * RETVAL;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::record_by_name() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 485 "IP.xs"
RETVAL = GeoIP_record_by_name(gi,addr);
#line 1438 "IP.c"
{
SV * RETVALSV;
RETVALSV = sv_newmortal();
sv_setref_pv( RETVALSV, (char *)CLASS, (void*)RETVAL );
ST(0) = RETVALSV;
}
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_enable_teredo); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_enable_teredo)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, tf");
{
GeoIP * gi;
int tf = (int)SvIV(ST(1))
;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::enable_teredo() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 494 "IP.xs"
RETVAL = GeoIP_enable_teredo(gi, tf);
#line 1472 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_teredo); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_teredo)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gi");
{
GeoIP * gi;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::teredo() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 502 "IP.xs"
RETVAL = GeoIP_teredo(gi);
#line 1499 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_set_charset); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_set_charset)
{
dVAR; dXSARGS;
if (items != 2)
croak_xs_usage(cv, "gi, charset");
{
GeoIP * gi;
int charset = (int)SvIV(ST(1))
;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::set_charset() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 511 "IP.xs"
RETVAL = GeoIP_set_charset(gi, charset);
#line 1528 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_lib_version); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_lib_version)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "CLASS");
{
char * CLASS = (char *)SvPVbyte_nolen (ST(0))
;
const char * RETVAL;
dXSTARG;
#line 519 "IP.xs"
RETVAL = GeoIP_lib_version();
#line 1548 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_charset); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_charset)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gi");
{
GeoIP * gi;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::charset() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 527 "IP.xs"
RETVAL = GeoIP_charset(gi);
#line 1575 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_last_netmask); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_last_netmask)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gi");
{
GeoIP * gi;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::last_netmask() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 535 "IP.xs"
RETVAL = GeoIP_last_netmask(gi);
#line 1602 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP_DESTROY); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP_DESTROY)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gi");
{
GeoIP * gi;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gi = (GeoIP *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::DESTROY() -- gi is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 543 "IP.xs"
GeoIP_delete(gi);
#line 1627 "IP.c"
}
XSRETURN_EMPTY;
}
XS_EUPXS(XS_Geo__IP__Record_country_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_country_code)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::country_code() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 551 "IP.xs"
RETVAL = (const char *)gir->country_code;
#line 1653 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_country_code3); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_country_code3)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::country_code3() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 559 "IP.xs"
RETVAL = (const char *)gir->country_code3;
#line 1680 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_country_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_country_name)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::country_name() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 567 "IP.xs"
RETVAL = (const char *)gir->country_name;
#line 1707 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_region); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_region)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::region() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 575 "IP.xs"
RETVAL = (const char *)gir->region;
#line 1734 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_region_name); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_region_name)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::region_name() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 583 "IP.xs"
RETVAL = (const char *) GeoIP_region_name_by_code(gir->country_code, gir->region);
#line 1761 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_time_zone); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_time_zone)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::time_zone() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 591 "IP.xs"
RETVAL = (const char *) GeoIP_time_zone_by_country_and_region(gir->country_code, gir->region);
#line 1788 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_city); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_city)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
PERL_UNUSED_VAR(ax); /* -Wall */
SP -= items;
{
GeoIPRecord * gir;
#line 599 "IP.xs"
SV * n;
#line 1807 "IP.c"
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::city() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 601 "IP.xs"
n = newSVpv( gir->city ? gir->city : "", 0);
#if defined(sv_utf8_decode)
if ( gir->charset == GEOIP_CHARSET_UTF8 )
SvUTF8_on(n);
#endif
sv_2mortal(n);
ST(0) = n;
XSRETURN(1);
#line 1825 "IP.c"
PUTBACK;
return;
}
}
XS_EUPXS(XS_Geo__IP__Record_postal_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_postal_code)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::postal_code() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 614 "IP.xs"
RETVAL = (const char *)gir->postal_code;
#line 1852 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record__latitude); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record__latitude)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
float RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::_latitude() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 622 "IP.xs"
RETVAL = gir->latitude;
#line 1879 "IP.c"
XSprePUSH; PUSHn((double)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record__longitude); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record__longitude)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
float RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::_longitude() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 630 "IP.xs"
RETVAL = gir->longitude;
#line 1906 "IP.c"
XSprePUSH; PUSHn((double)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_dma_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_dma_code)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::dma_code() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 638 "IP.xs"
RETVAL = gir->dma_code;
#line 1934 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_metro_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_metro_code)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::metro_code() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 647 "IP.xs"
RETVAL = gir->dma_code; /* we can NOT use metro_code here. metro_code may be not present in older CAPI's */
#line 1961 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_area_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_area_code)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
int RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::area_code() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 655 "IP.xs"
RETVAL = gir->area_code;
#line 1988 "IP.c"
XSprePUSH; PUSHi((IV)RETVAL);
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_continent_code); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_continent_code)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
const char * RETVAL;
dXSTARG;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::continent_code() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 663 "IP.xs"
RETVAL = (const char *)gir->continent_code;
#line 2015 "IP.c"
sv_setpv(TARG, RETVAL); XSprePUSH; PUSHTARG;
}
XSRETURN(1);
}
XS_EUPXS(XS_Geo__IP__Record_DESTROY); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record_DESTROY)
{
dVAR; dXSARGS;
if (items != 1)
croak_xs_usage(cv, "gir");
{
GeoIPRecord * gir;
if( sv_isobject(ST(0)) && (SvTYPE(SvRV(ST(0))) == SVt_PVMG) )
gir = (GeoIPRecord *)SvIV((SV*)SvRV( ST(0) ));
else{
warn( "Geo::IP::Record::DESTROY() -- gir is not a blessed SV reference" );
XSRETURN_UNDEF;
}
;
#line 671 "IP.xs"
GeoIPRecord_delete(gir);
#line 2040 "IP.c"
}
XSRETURN_EMPTY;
}
XS_EUPXS(XS_Geo__IP__Record__XScompiled); /* prototype to pass -Wmissing-prototypes */
XS_EUPXS(XS_Geo__IP__Record__XScompiled)
{
dVAR; dXSARGS;
if (items != 0)
croak_xs_usage(cv, "");
{
#line 676 "IP.xs"
XSRETURN_YES;
#line 2055 "IP.c"
}
XSRETURN_EMPTY;
}
#ifdef __cplusplus
extern "C"
#endif
XS_EXTERNAL(boot_Geo__IP); /* prototype to pass -Wmissing-prototypes */
XS_EXTERNAL(boot_Geo__IP)
{
#if PERL_VERSION_LE(5, 21, 5)
dVAR; dXSARGS;
#else
dVAR; dXSBOOTARGSXSAPIVERCHK;
#endif
#if (PERL_REVISION == 5 && PERL_VERSION < 9)
char* file = __FILE__;
#else
const char* file = __FILE__;
#endif
PERL_UNUSED_VAR(file);
PERL_UNUSED_VAR(cv); /* -W */
PERL_UNUSED_VAR(items); /* -W */
#if PERL_VERSION_LE(5, 21, 5)
XS_VERSION_BOOTCHECK;
# ifdef XS_APIVERSION_BOOTCHECK
XS_APIVERSION_BOOTCHECK;
# endif
#endif
newXS_deffile("Geo::IP::region_name_by_code", XS_Geo__IP_region_name_by_code);
newXS_deffile("Geo::IP::continent_code_by_country_code", XS_Geo__IP_continent_code_by_country_code);
newXS_deffile("Geo::IP::time_zone", XS_Geo__IP_time_zone);
newXS_deffile("Geo::IP::new", XS_Geo__IP_new);
newXS_deffile("Geo::IP::open_type", XS_Geo__IP_open_type);
newXS_deffile("Geo::IP::open", XS_Geo__IP_open);
newXS_deffile("Geo::IP::id_by_addr", XS_Geo__IP_id_by_addr);
newXS_deffile("Geo::IP::id_by_name", XS_Geo__IP_id_by_name);
newXS_deffile("Geo::IP::database_edition", XS_Geo__IP_database_edition);
newXS_deffile("Geo::IP::database_info", XS_Geo__IP_database_info);
newXS_deffile("Geo::IP::country_code_by_ipnum_v6", XS_Geo__IP_country_code_by_ipnum_v6);
newXS_deffile("Geo::IP::country_code_by_addr_v6", XS_Geo__IP_country_code_by_addr_v6);
newXS_deffile("Geo::IP::country_code_by_name_v6", XS_Geo__IP_country_code_by_name_v6);
newXS_deffile("Geo::IP::country_code3_by_ipnum_v6", XS_Geo__IP_country_code3_by_ipnum_v6);
newXS_deffile("Geo::IP::country_code3_by_addr_v6", XS_Geo__IP_country_code3_by_addr_v6);
newXS_deffile("Geo::IP::country_code3_by_name_v6", XS_Geo__IP_country_code3_by_name_v6);
newXS_deffile("Geo::IP::country_name_by_name_v6", XS_Geo__IP_country_name_by_name_v6);
newXS_deffile("Geo::IP::country_name_by_ipnum_v6", XS_Geo__IP_country_name_by_ipnum_v6);
newXS_deffile("Geo::IP::country_name_by_addr_v6", XS_Geo__IP_country_name_by_addr_v6);
newXS_deffile("Geo::IP::country_code_by_addr", XS_Geo__IP_country_code_by_addr);
newXS_deffile("Geo::IP::country_code_by_name", XS_Geo__IP_country_code_by_name);
newXS_deffile("Geo::IP::country_code3_by_addr", XS_Geo__IP_country_code3_by_addr);
newXS_deffile("Geo::IP::country_code3_by_name", XS_Geo__IP_country_code3_by_name);
newXS_deffile("Geo::IP::country_name_by_addr", XS_Geo__IP_country_name_by_addr);
newXS_deffile("Geo::IP::country_name_by_name", XS_Geo__IP_country_name_by_name);
newXS_deffile("Geo::IP::name_by_ipnum_v6", XS_Geo__IP_name_by_ipnum_v6);
newXS_deffile("Geo::IP::name_by_addr_v6", XS_Geo__IP_name_by_addr_v6);
newXS_deffile("Geo::IP::name_by_name_v6", XS_Geo__IP_name_by_name_v6);
newXS_deffile("Geo::IP::org_by_addr", XS_Geo__IP_org_by_addr);
newXS_deffile("Geo::IP::org_by_name", XS_Geo__IP_org_by_name);
newXS_deffile("Geo::IP::range_by_ip", XS_Geo__IP_range_by_ip);
newXS_deffile("Geo::IP::region_by_addr", XS_Geo__IP_region_by_addr);
newXS_deffile("Geo::IP::region_by_name", XS_Geo__IP_region_by_name);
newXS_deffile("Geo::IP::record_by_ipnum_v6", XS_Geo__IP_record_by_ipnum_v6);
newXS_deffile("Geo::IP::record_by_addr_v6", XS_Geo__IP_record_by_addr_v6);
newXS_deffile("Geo::IP::record_by_name_v6", XS_Geo__IP_record_by_name_v6);
newXS_deffile("Geo::IP::record_by_addr", XS_Geo__IP_record_by_addr);
newXS_deffile("Geo::IP::record_by_name", XS_Geo__IP_record_by_name);
newXS_deffile("Geo::IP::enable_teredo", XS_Geo__IP_enable_teredo);
newXS_deffile("Geo::IP::teredo", XS_Geo__IP_teredo);
newXS_deffile("Geo::IP::set_charset", XS_Geo__IP_set_charset);
newXS_deffile("Geo::IP::lib_version", XS_Geo__IP_lib_version);
newXS_deffile("Geo::IP::charset", XS_Geo__IP_charset);
newXS_deffile("Geo::IP::last_netmask", XS_Geo__IP_last_netmask);
newXS_deffile("Geo::IP::DESTROY", XS_Geo__IP_DESTROY);
newXS_deffile("Geo::IP::Record::country_code", XS_Geo__IP__Record_country_code);
newXS_deffile("Geo::IP::Record::country_code3", XS_Geo__IP__Record_country_code3);
newXS_deffile("Geo::IP::Record::country_name", XS_Geo__IP__Record_country_name);
newXS_deffile("Geo::IP::Record::region", XS_Geo__IP__Record_region);
newXS_deffile("Geo::IP::Record::region_name", XS_Geo__IP__Record_region_name);
newXS_deffile("Geo::IP::Record::time_zone", XS_Geo__IP__Record_time_zone);
newXS_deffile("Geo::IP::Record::city", XS_Geo__IP__Record_city);
newXS_deffile("Geo::IP::Record::postal_code", XS_Geo__IP__Record_postal_code);
newXS_deffile("Geo::IP::Record::_latitude", XS_Geo__IP__Record__latitude);
newXS_deffile("Geo::IP::Record::_longitude", XS_Geo__IP__Record__longitude);
newXS_deffile("Geo::IP::Record::dma_code", XS_Geo__IP__Record_dma_code);
newXS_deffile("Geo::IP::Record::metro_code", XS_Geo__IP__Record_metro_code);
newXS_deffile("Geo::IP::Record::area_code", XS_Geo__IP__Record_area_code);
newXS_deffile("Geo::IP::Record::continent_code", XS_Geo__IP__Record_continent_code);
newXS_deffile("Geo::IP::Record::DESTROY", XS_Geo__IP__Record_DESTROY);
newXS_deffile("Geo::IP::Record::_XScompiled", XS_Geo__IP__Record__XScompiled);
#if PERL_VERSION_LE(5, 21, 5)
# if PERL_VERSION_GE(5, 9, 0)
if (PL_unitcheckav)
call_list(PL_scopestack_ix, PL_unitcheckav);
# endif
XSRETURN_YES;
#else
Perl_xs_boot_epilog(aTHX_ ax);
#endif
}