From 1a2c2c6ebcc46ffe598448d314facf85a288d168 Mon Sep 17 00:00:00 2001 From: Luigi Ballabio Date: Mon, 19 May 2003 09:13:12 +0000 Subject: [PATCH] *** empty log message *** git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@4793 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Lib/perl5/std_vector.i | 213 ++++++++++++++++++------------------ 1 file changed, 108 insertions(+), 105 deletions(-) diff --git a/SWIG/Lib/perl5/std_vector.i b/SWIG/Lib/perl5/std_vector.i index 7ff281dd5..e66a56f4f 100644 --- a/SWIG/Lib/perl5/std_vector.i +++ b/SWIG/Lib/perl5/std_vector.i @@ -76,7 +76,10 @@ namespace std { template class vector { %typemap(in) vector (std::vector* v) { - if (SvROK($input)) { + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,1) != -1) { + $1 = *v; + } else if (SvROK($input)) { AV *av = (AV *)SvRV($input); if (SvTYPE(av) != SVt_PVAV) SWIG_croak("Type error in argument $argnum of $symname. " @@ -95,9 +98,6 @@ namespace std { "Expected an array of " #T); } } - } else if (SWIG_ConvertPtr($input,(void **) &v, - $&1_descriptor,1) != -1){ - $1 = *v; } else { SWIG_croak("Type error in argument $argnum of $symname. " "Expected an array of " #T); @@ -107,7 +107,10 @@ namespace std { std::vector* v), const vector* (std::vector temp, std::vector* v) { - if (SvROK($input)) { + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,1) != -1) { + $1 = v; + } else if (SvROK($input)) { AV *av = (AV *)SvRV($input); if (SvTYPE(av) != SVt_PVAV) SWIG_croak("Type error in argument $argnum of $symname. " @@ -127,9 +130,6 @@ namespace std { } } $1 = &temp; - } else if (SWIG_ConvertPtr($input,(void **) &v, - $1_descriptor,1) != -1){ - $1 = v; } else { SWIG_croak("Type error in argument $argnum of $symname. " "Expected an array of " #T); @@ -150,66 +150,68 @@ namespace std { argvi++; } %typecheck(SWIG_TYPECHECK_VECTOR) vector { - /* native sequence? */ - if (SvROK($input)) { - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) == SVt_PVAV) { - SV **tv; - I32 len = av_len(av) + 1; - if (len == 0) { - /* an empty sequence can be of any type */ - $1 = 1; - } else { - /* check the first element only */ - T* obj; - tv = av_fetch(av, 0, 0); - if (SWIG_ConvertPtr(*tv, (void **)&obj, - $descriptor(T *),0) != -1) - $1 = 1; - else - $1 = 0; - } - } - } else { + { /* wrapped vector? */ std::vector* v; if (SWIG_ConvertPtr($input,(void **) &v, - $1_&descriptor,0) != -1) + $1_&descriptor,0) != -1) { $1 = 1; - else + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* obj; + tv = av_fetch(av, 0, 0); + if (SWIG_ConvertPtr(*tv, (void **)&obj, + $descriptor(T *),0) != -1) + $1 = 1; + else + $1 = 0; + } + } + } else { $1 = 0; + } } } %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, const vector* { - /* native sequence? */ - if (SvROK($input)) { - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) == SVt_PVAV) { - SV **tv; - I32 len = av_len(av) + 1; - if (len == 0) { - /* an empty sequence can be of any type */ - $1 = 1; - } else { - /* check the first element only */ - T* obj; - tv = av_fetch(av, 0, 0); - if (SWIG_ConvertPtr(*tv, (void **)&obj, - $descriptor(T *),0) != -1) - $1 = 1; - else - $1 = 0; - } - } - } else { + { /* wrapped vector? */ std::vector* v; if (SWIG_ConvertPtr($input,(void **) &v, - $1_descriptor,0) != -1) + $1_descriptor,0) != -1) { $1 = 1; - else + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + T* obj; + tv = av_fetch(av, 0, 0); + if (SWIG_ConvertPtr(*tv, (void **)&obj, + $descriptor(T *),0) != -1) + $1 = 1; + else + $1 = 0; + } + } + } else { $1 = 0; + } } } public: @@ -250,7 +252,10 @@ namespace std { %define specialize_std_vector(T,CHECK_T,TO_T,FROM_T) template<> class vector { %typemap(in) vector (std::vector* v) { - if (SvROK($input)) { + if (SWIG_ConvertPtr($input,(void **) &v, + $&1_descriptor,1) != -1){ + $1 = *v; + } else if (SvROK($input)) { AV *av = (AV *)SvRV($input); if (SvTYPE(av) != SVt_PVAV) SWIG_croak("Type error in argument $argnum of $symname. " @@ -267,9 +272,6 @@ namespace std { "Expected an array of " #T); } } - } else if (SWIG_ConvertPtr($input,(void **) &v, - $&1_descriptor,1) != -1){ - $1 = *v; } else { SWIG_croak("Type error in argument $argnum of $symname. " "Expected an array of " #T); @@ -279,7 +281,10 @@ namespace std { std::vector* v), const vector* (std::vector temp, std::vector* v) { - if (SvROK($input)) { + if (SWIG_ConvertPtr($input,(void **) &v, + $1_descriptor,1) != -1) { + $1 = v; + } else if (SvROK($input)) { AV *av = (AV *)SvRV($input); if (SvTYPE(av) != SVt_PVAV) SWIG_croak("Type error in argument $argnum of $symname. " @@ -298,9 +303,6 @@ namespace std { } } $1 = &temp; - } else if (SWIG_ConvertPtr($input,(void **) &v, - $1_descriptor,1) != -1){ - $1 = v; } else { SWIG_croak("Type error in argument $argnum of $symname. " "Expected an array of " #T); @@ -320,65 +322,66 @@ namespace std { argvi++; } %typecheck(SWIG_TYPECHECK_VECTOR) vector { - /* native sequence? */ - if (SvROK($input)) { - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) == SVt_PVAV) { - SV **tv; - I32 len = av_len(av) + 1; - if (len == 0) { - /* an empty sequence can be of any type */ - $1 = 1; - } else { - /* check the first element only */ - tv = av_fetch(av, 0, 0); - if (CHECK_T(*tv)) - $1 = 1; - else - $1 = 0; - } - } - } else { + { /* wrapped vector? */ std::vector* v; if (SWIG_ConvertPtr($input,(void **) &v, - $1_&descriptor,0) != -1) + $1_&descriptor,0) != -1) { $1 = 1; - else + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + tv = av_fetch(av, 0, 0); + if (CHECK_T(*tv)) + $1 = 1; + else + $1 = 0; + } + } + } else { $1 = 0; + } } } %typecheck(SWIG_TYPECHECK_VECTOR) const vector&, const vector* { - /* native sequence? */ - if (SvROK($input)) { - AV *av = (AV *)SvRV($input); - if (SvTYPE(av) == SVt_PVAV) { - SV **tv; - I32 len = av_len(av) + 1; - if (len == 0) { - /* an empty sequence can be of any type */ - $1 = 1; - } else { - /* check the first element only */ - tv = av_fetch(av, 0, 0); - if (CHECK_T(*tv)) - $1 = 1; - else - $1 = 0; - } - } - } else { + { /* wrapped vector? */ std::vector* v; if (SWIG_ConvertPtr($input,(void **) &v, - $1_descriptor,0) != -1) + $1_descriptor,0) != -1) { $1 = 1; - else + } else if (SvROK($input)) { + /* native sequence? */ + AV *av = (AV *)SvRV($input); + if (SvTYPE(av) == SVt_PVAV) { + SV **tv; + I32 len = av_len(av) + 1; + if (len == 0) { + /* an empty sequence can be of any type */ + $1 = 1; + } else { + /* check the first element only */ + tv = av_fetch(av, 0, 0); + if (CHECK_T(*tv)) + $1 = 1; + else + $1 = 0; + } + } + } else { $1 = 0; + } } } - // add specialized typemaps here public: vector(); vector(unsigned int size, const T& value=T());