The trac.osgeo.org does not answer so I'll put this here.

Hobu, would it be ok to have (int len, int *output) typemap. They can be used in GetHistogram method like this (note that the API is same for C# but it must use different typemaps. From Band.i:

#ifndef SWIGCSHARP
%feature( "kwargs" ) GetHistogram;
%apply (int len, int *output) {(int nBuckets, int *panHistogram)};
%apply (IF_ERROR_RETURN_NONE) { (CPLErr) };
#else
%apply (int inout[ANY]) {int *panHistogram};
#endif /* SWIGCSHARP */
 CPLErr GetHistogram( double dfMin=-0.5,
                    double dfMax=255.5,
                    int nBuckets=256, /* as in GDAL docs */
                    int *panHistogram = NULL,
                    int bIncludeOutOfRange = 0,
                    int bApproxOk = 1,
                    GDALProgressFunc callback = NULL,
                    void* callback_data=NULL ) {
   return GDALGetRasterHistogram(  self,
                               dfMin,
                               dfMax,
                               nBuckets,
                               panHistogram,
                               bIncludeOutOfRange,
                               bApproxOk,
                               callback,
                               callback_data);
 }
#ifndef SWIGCSHARP
%clear (int nBuckets, int *panHistogram);
%clear (CPLErr);
#else
%clear int *panHistogram;
#endif /* SWIGCSHARP */

And the typemaps for Perl: Note the slight abuse of check for malloc. This is tested and works.

%typemap(in,numinputs=1) (int len, int *output)
{
 /* %typemap(in,numinputs=1) (int len, int *output) */
 $1 = SvIV($input);
}
%typemap(check) (int len, int *output)
{
 /* %typemap(check) (int len, int *output) */
 if ($1 < 1) $1 = 1; /* stop idiocy */
 $2 = (int *)CPLMalloc( $1 * sizeof(int) );
}
%typemap(argout,fragment="CreateArrayFromIntArray") (int len, int *output)
{
 /* %typemap(argout) (int len, int *output) */
 $result = CreateArrayFromIntArray( $2, $1 );
 argvi++;
}
%typemap(freearg) (int len, int *output)
{
 /* %typemap(freearg) (int len, int *output) */
 CPLFree($2);
}


Ari

--
Prof. Ari Jolma
Geoinformatiikka / Geoinformatics
Teknillinen Korkeakoulu / Helsinki University of Technology
tel: +358 9 451 3886 address: POBox 1200, 02015 TKK, Finland
Email: ari.jolma at tkk.fi URL: http://www.tkk.fi/~jolma

_______________________________________________
gdal-dev mailing list
gdal-dev@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/gdal-dev

Reply via email to