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)
============================
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
[Chicken] Fix global variables of class member function pointers.
Other minor fixes, so all tests in the chicken test suite now pass

View file

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

View file

@ -60,7 +60,7 @@ SWIG_AsVal_dec(long)(SV *obj, long* val)
return SWIG_OK;
} else {
int dispatch = 0;
const char *nptr = SvPV(obj, PL_na);
const char *nptr = SvPV_nolen(obj);
if (nptr) {
char *endptr;
long v;
@ -120,7 +120,7 @@ SWIG_AsVal_dec(unsigned long)(SV *obj, unsigned long *val)
}
} else {
int dispatch = 0;
const char *nptr = SvPV(obj, PL_na);
const char *nptr = SvPV_nolen(obj);
if (nptr) {
char *endptr;
unsigned long v;
@ -183,7 +183,7 @@ SWIG_AsVal_dec(long long)(SV *obj, long long *val)
return SWIG_OK;
} else {
int dispatch = 0;
const char *nptr = SvPV(obj, PL_na);
const char *nptr = SvPV_nolen(obj);
if (nptr) {
char *endptr;
long long v;
@ -255,7 +255,7 @@ SWIG_AsVal_dec(unsigned long long)(SV *obj, unsigned long long *val)
}
} else {
int dispatch = 0;
const char *nptr = SvPV(obj, PL_na);
const char *nptr = SvPV_nolen(obj);
if (nptr) {
char *endptr;
unsigned long long v;
@ -308,7 +308,7 @@ SWIG_AsVal_dec(double)(SV *obj, double *val)
if (val) *val = (double) SvIV(obj);
return SWIG_AddCast(SWIG_OK);
} else {
const char *nptr = SvPV(obj, PL_na);
const char *nptr = SvPV_nolen(obj);
if (nptr) {
char *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;
if ((!obj) || (!SvOK(obj))) return SWIG_ERROR;
c = SvPV(obj, PL_na);
c = SvPV_nolen(obj);
/* Pointer values must start with leading underscore */
if (*c != '_') return SWIG_ERROR;
c++;

View file

@ -86,14 +86,14 @@ INPUT_TYPEMAP(unsigned char, SvUV);
%typemap(typecheck) bool &INPUT = bool;
%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;
}
%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) {
temp = strtoull(SvPV($input,PL_na), 0, 0);
temp = strtoull(SvPV_nolen($input), 0, 0);
$1 = &temp;
}
%typemap(typecheck) unsigned long long *INPUT = unsigned long long;