<div dir="ltr">Andrew,<div><br></div><div>My take:</div><div><br></div><div>GDAL is a not a place to look for good modern C++ code.  And there is a of old style C++ baked into the APIs, so drivers are particularly tough.</div><div><br></div><div>You can look for use of unique_ptr for some code that is heading in that direction.</div><div><br></div><div>The other general problem with C++ code in GDAL is that it wasn't designed with C++ testing in mind.  I've broken headers out of some of the drivers so I can skip past the GDALOpen/Identify interfaces and test inside the member functions.</div><div><br></div><div>You can look through <a href="https://github.com/schwehr/gdal-autotest2/tree/master/cpp">https://github.com/schwehr/gdal-autotest2/tree/master/cpp</a> but most of that code is pretty different as it is mostly tests.</div><div><br></div><div>GEOS is starting to modernize so you can look some there, but also isn't particularly strong C++11 (yet)<br></div><div><br></div><div>A good place to start is with project style guides.  There are many around with different takes.  The one I work to is:</div><div><br></div><div><a href="https://google.github.io/styleguide/cppguide.html">https://google.github.io/styleguide/cppguide.html</a><br></div><div><br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jan 6, 2018 at 3:58 AM, Andrew C Aitchison <span dir="ltr"><<a href="mailto:andrew@aitchison.me.uk" target="_blank">andrew@aitchison.me.uk</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Fri, 5 Jan 2018, Kurt Schwehr wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
* Passing char *psz yada all over the place in pure C++ code.  A const<br>
std::string is usually not a noticeable expense and is a lot safer<br>
* CPLString when std::string will do just fine.  And we can write free<br>
functions to operate on strings.  I'm generally bothered by subclassing of<br>
std::string as CPLString.  After reading large amounts of C++ code, I think<br>
it adds more confusion than it ever helps over having clean free<br>
functions.  Interop and analysis with CPLString's is no fun.<br>
<br>
<a href="https://stackoverflow.com/questions/6006860/why-should-one-not-derive-from-c-std-string-class" rel="noreferrer" target="_blank">https://stackoverflow.com/ques<wbr>tions/6006860/why-should-one-<wbr>not-derive-from-c-std-string-<wbr>class</a><br>
</blockquote>
<br></span>
Can you point me to some good examples of good pure C++ code in GDAL<br>
- ideally driver code ? The driver tutorial<br>
  <a href="http://www.gdal.org/gdal_drivertut.html" rel="noreferrer" target="_blank">http://www.gdal.org/gdal_drive<wbr>rtut.html</a><br>
is full of pszFilename and other psz variables.<br>
<br>
When I taught myself C++ in 1992 std::string did not exist,<br>
and my gdal work is my only C++ practice since 1993.<br>
In my exploration of gdal code I have seen very little use of std::string<br>
and plenty of CPLString; it would be a great help to have good examples to copy.<span class="HOEnZb"><font color="#888888"><br>
<br>
-- <br>
Andrew C. Aitchison                                     Cambridge, UK<br>
                        <a href="mailto:andrew@aitchison.me.uk" target="_blank">andrew@aitchison.me.uk</a><br>
<br>
<br>
</font></span></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">--<div><a href="http://schwehr.org" target="_blank">http://schwehr.org</a></div></div>
</div>