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:
parent
0d7175fa1c
commit
c5fae8d592
5 changed files with 17 additions and 8 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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++;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue