<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">P {
        WHITE-SPACE: pre-wrap
}
LI {
        WHITE-SPACE: pre-wrap
}
</style><style id="owaParaStyle">P {
        MARGIN-BOTTOM: 0px; MARGIN-TOP: 0px
}
</style>
</head>
<body style="FONT-SIZE: 9pt; FONT-FAMILY: 'Sans Serif'; FONT-WEIGHT: 400; FONT-STYLE: normal" fPStyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<p><font size="2"></p>
<div class="PlainText"><font face="Tahoma">Thank you both Sean and Even.</font></div>
<font face="Tahoma"></font></font>
<p></p>
<p><font size="2"><font face="Tahoma"></p>
<div class="PlainText"> </div>
<div class="PlainText">SWIG is too complicated for me, and I will find a work around.</div>
<div class="PlainText"><br>
Shawn<br>
</div>
</font></font>
<p></p>
<div style="FONT-SIZE: 16px; FONT-FAMILY: Times New Roman; COLOR: #000000">
<hr tabindex="-1">
<div id="divRpF917050" style="DIRECTION: ltr"><font color="#000000" size="2" face="Tahoma"><b>From:</b> Even Rouault [even.rouault@spatialys.com]<br>
<b>Sent:</b> November-27-17 2:10 PM<br>
<b>To:</b> gdal-dev@lists.osgeo.org<br>
<b>Cc:</b> Sean Gillies; Shawn Gong<br>
<b>Subject:</b> Re: [gdal-dev] pass gdal dataset as an argument from Python to C<br>
</font><br>
</div>
<div></div>
<div>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">On lundi 27 novembre 2017 11:46:50 CET Sean Gillies wrote:</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> I believe it's possible, yes, but it will be challenging. I'm not aware of</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> anybody else doing this.</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> In</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> https://github.com/OSGeo/gdal/blob/trunk/gdal/swig/python/extensions/gdal_wr</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> ap.cpp you can see examples of C++ functions that access the GDAL objects</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> referenced by Python objects. This isn't a stable public API by any means,</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> and therefore I hesitate to recommend it. Maybe Even would be able to</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> comment more on how much support there is for the SWIG-generated C++ Python</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> classes.</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">Yes should be doable by "importing" some SWIG_ methods from gdal_wrap.cpp. This might be</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">fragile in case the SWIG_ wrapping structures evolve.</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">Interesting bits:</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">SWIGINTERN PyObject *_wrap_Dataset_RasterXSize_get(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">PyObject *resultobj = 0; int bLocalUseExceptionsCode = bUseExceptions;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">GDALDatasetShadow *arg1 = (GDALDatasetShadow *) 0 ;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">void *argp1 = 0 ;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">int res1 = 0 ;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">PyObject * obj0 = 0 ;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">int result;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"></p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">if (!PyArg_ParseTuple(args,(char *)"O:Dataset_RasterXSize_get",&obj0)) SWIG_fail;</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_GDALDatasetShadow, 0 | 0 );</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">if (!SWIG_IsOK(res1)) {</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Dataset_RasterXSize_get" "', argument " "1"" of type '" "GDALDatasetShadow *""'");
</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">}</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">arg1 = reinterpret_cast< GDALDatasetShadow * >(argp1);</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">....</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">}</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">(GDALDatasetShadow* is an alias of GDALDataset*)</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">static PyMethodDef SwigMethods[] = {</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">{ (char *)"Dataset_RasterXSize_get", _wrap_Dataset_RasterXSize_get, METH_VARARGS, (char *)"Dataset_RasterXSize_get(Dataset self) -> int"},</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">}</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px"> </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">-- </p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">Spatialys - Geospatial professional services</p>
<p style="MARGIN: 0px; TEXT-INDENT: 0px">http://www.spatialys.com</p>
</div>
</div>
</div>
</body>
</html>