From 613d9ea57ae30f015806308786423c4aab447cc3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Quelin?= Date: Tue, 15 Jan 2008 19:26:22 +0100 Subject: [PATCH] convert rest of AV* self to use SV* --- XS.xs | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/XS.xs b/XS.xs index 16702f5..48839ab 100644 --- a/XS.xs +++ b/XS.xs @@ -143,9 +143,14 @@ copy( vec, ... ) # IV get_dims( self ) - AV* self; + SV* self; + PREINIT: + AV* my_array; CODE: - RETVAL = av_len(self) + 1; + /* fetch the underlying array of the object */ + my_array = (AV*)SvRV(self); + + RETVAL = av_len(my_array) + 1; OUTPUT: RETVAL @@ -157,12 +162,19 @@ get_dims( self ) # IV get_component( self, dim ) - AV* self; + SV* self; IV dim; + PREINIT: + AV* my_array; CODE: - if ( dim < 0 || dim > av_len(self) ) + /* fetch the underlying array of the object */ + my_array = (AV*)SvRV(self); + + /* sanity checks */ + if ( dim < 0 || dim > av_len(my_array) ) croak( "No such dimension!" ); - RETVAL = SvIV( *av_fetch(self, dim, 0) ); + + RETVAL = SvIV( *av_fetch(my_array, dim, 0) ); OUTPUT: RETVAL @@ -322,15 +334,20 @@ _substract_inplace( v1, v2, variant ) # IV _compare( v1, v2, variant ) - AV* v1; - AV* v2; + SV* v1; + SV* v2; SV* variant; INIT: IV dimv1, dimv2, i, val1, val2; + AV* v1_array; + AV* v2_array; CODE: - dimv1 = av_len(v1); - dimv2 = av_len(v2); + /* fetch the underlying array of the object */ + v1_array = (AV*)SvRV(v1); + v2_array = (AV*)SvRV(v2); + dimv1 = av_len(v1_array); + dimv2 = av_len(v2_array); /* sanity checks */ if ( dimv1 != dimv2 ) @@ -338,8 +355,8 @@ _compare( v1, v2, variant ) RETVAL = 0; for ( i=0 ; i<=dimv1; i++ ) { - val1 = SvIV( *av_fetch(v1, i, 0) ); - val2 = SvIV( *av_fetch(v2, i, 0) ); + val1 = SvIV( *av_fetch(v1_array, i, 0) ); + val2 = SvIV( *av_fetch(v2_array, i, 0) ); if ( val1 != val2 ) { RETVAL = 1; break; -- 2.11.4.GIT