[Proj] Use of C++
Mateusz Loskot
mateusz at loskot.net
Wed May 23 11:30:16 PDT 2018
On 23 May 2018 at 19:59, Andrew Bell <andrew.bell.ia at gmail.com> wrote:
> That said, the issue I have with the GDAL API, which is mentioned as a
> model, is that it's complicated in that it's always unclear who owns what
> and what needs to be freed by the application, etc. It creates bugs and
> ambiguities. Whether the API is C or C++, allowing the library to manage
> data to the extent possible is desirable. Looking at the proj 4 API, there
> are only a few instances where you might need to look at the source code or
> documentation on this (proj_list..., a few calls that take non-const char *
> and a few that take char **), so not a bad starting point.
Since the discussion touches the aspect if/how choice of C++ affects API
discoverability and transparency [1], I'd only point out that costness of
pointer/pointee does not necessarily indicate ownership responsibility.
All three are perfectly delete/free-able:
char const* f1() { return new char{'\a'}; }
char* const f2() { return new char{'\a'}; }
char const* const f3() { return new char{'\a'}; }
Although I'm mostly C++11+ user, I agree with Andrew clean OOP interface
can be achieved using both, C or C++.
(GTK always served me as an excellent example of clean OOP in C.)
Finally, if Even's choice is C++, I'm fairly certain Even will not go
for equivalent
of GDAL's CPL strings, lists, etc. jugglers, but stick to C++ standard library.
[1] https://accu.org/index.php/journals/1572
Best regards,
--
Mateusz Loskot, http://mateusz.loskot.net
More information about the Proj
mailing list