Use more efficient SvPV_nolen(x) instead of SvPV(x,PL_na)

git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10058 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
William S Fulton 2007-10-28 16:52:49 +00:00
commit c5fae8d592
5 changed files with 17 additions and 8 deletions

View file

@ -1,5 +1,10 @@
Version 1.3.32 (in progress) Version 1.3.32 (in progress)
============================ ============================
10/28/2007: wsfulton
[Perl] Use more efficient SvPV_nolen(x) instead of SvPV(x,PL_na) if SvPV_nolen is
supported.
10/26/2007: wuzzeb 10/26/2007: wuzzeb
[Chicken] Fix global variables of class member function pointers. [Chicken] Fix global variables of class member function pointers.
Other minor fixes, so all tests in the chicken test suite now pass Other minor fixes, so all tests in the chicken test suite now pass

View file

@ -80,6 +80,10 @@ extern "C" {
# endif # endif
#endif /* !INT2PTR */ #endif /* !INT2PTR */
#ifndef SvPV_nolen
# define SvPV_nolen(x) SvPV(x,PL_na)
#endif
#ifndef get_sv #ifndef get_sv
# define get_sv perl_get_sv # define get_sv perl_get_sv
#endif #endif

View file

@ -60,7 +60,7 @@ SWIG_AsVal_dec(long)(SV *obj, long* val)
return SWIG_OK; return SWIG_OK;
} else { } else {
int dispatch = 0; int dispatch = 0;
const char *nptr = SvPV(obj, PL_na); const char *nptr = SvPV_nolen(obj);
if (nptr) { if (nptr) {
char *endptr; char *endptr;
long v; long v;
@ -120,7 +120,7 @@ SWIG_AsVal_dec(unsigned long)(SV *obj, unsigned long *val)
} }
} else { } else {
int dispatch = 0; int dispatch = 0;
const char *nptr = SvPV(obj, PL_na); const char *nptr = SvPV_nolen(obj);
if (nptr) { if (nptr) {
char *endptr; char *endptr;
unsigned long v; unsigned long v;
@ -183,7 +183,7 @@ SWIG_AsVal_dec(long long)(SV *obj, long long *val)
return SWIG_OK; return SWIG_OK;
} else { } else {
int dispatch = 0; int dispatch = 0;
const char *nptr = SvPV(obj, PL_na); const char *nptr = SvPV_nolen(obj);
if (nptr) { if (nptr) {
char *endptr; char *endptr;
long long v; long long v;
@ -255,7 +255,7 @@ SWIG_AsVal_dec(unsigned long long)(SV *obj, unsigned long long *val)
} }
} else { } else {
int dispatch = 0; int dispatch = 0;
const char *nptr = SvPV(obj, PL_na); const char *nptr = SvPV_nolen(obj);
if (nptr) { if (nptr) {
char *endptr; char *endptr;
unsigned long long v; unsigned long long v;
@ -308,7 +308,7 @@ SWIG_AsVal_dec(double)(SV *obj, double *val)
if (val) *val = (double) SvIV(obj); if (val) *val = (double) SvIV(obj);
return SWIG_AddCast(SWIG_OK); return SWIG_AddCast(SWIG_OK);
} else { } else {
const char *nptr = SvPV(obj, PL_na); const char *nptr = SvPV_nolen(obj);
if (nptr) { if (nptr) {
char *endptr; char *endptr;
double v = strtod(nptr, &endptr); double v = strtod(nptr, &endptr);

View file

@ -356,7 +356,7 @@ SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_
const char *c = 0; const char *c = 0;
if ((!obj) || (!SvOK(obj))) return SWIG_ERROR; if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
c = SvPV(obj, PL_na); c = SvPV_nolen(obj);
/* Pointer values must start with leading underscore */ /* Pointer values must start with leading underscore */
if (*c != '_') return SWIG_ERROR; if (*c != '_') return SWIG_ERROR;
c++; c++;

View file

@ -86,14 +86,14 @@ INPUT_TYPEMAP(unsigned char, SvUV);
%typemap(typecheck) bool &INPUT = bool; %typemap(typecheck) bool &INPUT = bool;
%typemap(in) long long *INPUT($*1_ltype temp), long long &INPUT($*1_ltype temp) { %typemap(in) long long *INPUT($*1_ltype temp), long long &INPUT($*1_ltype temp) {
temp = strtoll(SvPV($input,PL_na), 0, 0); temp = strtoll(SvPV_nolen($input), 0, 0);
$1 = &temp; $1 = &temp;
} }
%typemap(typecheck) long long *INPUT = long long; %typemap(typecheck) long long *INPUT = long long;
%typemap(typecheck) long long &INPUT = long long; %typemap(typecheck) long long &INPUT = long long;
%typemap(in) unsigned long long *INPUT($*1_ltype temp), unsigned long long &INPUT($*1_ltype temp) { %typemap(in) unsigned long long *INPUT($*1_ltype temp), unsigned long long &INPUT($*1_ltype temp) {
temp = strtoull(SvPV($input,PL_na), 0, 0); temp = strtoull(SvPV_nolen($input), 0, 0);
$1 = &temp; $1 = &temp;
} }
%typemap(typecheck) unsigned long long *INPUT = unsigned long long; %typemap(typecheck) unsigned long long *INPUT = unsigned long long;