<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 30 Apr 2018, at 21:45, Kurt Schwehr <<a href="mailto:schwehr@gmail.com" class="">schwehr@gmail.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">Thanks for the proj_coord().  I meant to look that up, but got interrupted by a poopy diaper.
<div class=""><br class="">
</div>
<div class="">I would be happy to create a draft document for people to comment on.  It will be slow going as I only get little bits of time here and there for the next week.</div>
<div class=""><br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>Thanks. Please take your time - we are in no rush.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div dir="ltr" class="">
<div class="">I do have to say that I don't like removing the math.h from the main file.   The cost is small and it frees you to refactor other headers without wide ranging changes each time.</div>
<div class=""><br class="">
</div>
</div>
</div>
</blockquote>
<div><br class="">
</div>
<div>So you like it better if both math.h and proj_math.h are included? math.h is not included that many places today already as it is included in projects.h.</div>
<div>I figured it would be better to just include proj_math.h as.a rule of thumb when needing math functions since it would ensure that the C99 math functions</div>
<div>are handled correctly. Apart from this special case I absolutely agree that it is a good idea to include headers for the functions you need. At the moment</div>
<div>most of the common standard library headers are included in projects.h and not in the files where they are needed. That should be changed when projects.h</div>
<div>is removed from the public API.</div>
<br class="">
<blockquote type="cite" class="">
<div class="">
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Mon, Apr 30, 2018 at 6:00 AM, Kristian Evers <span dir="ltr" class="">
<<a href="mailto:kreve@sdfe.dk" target="_blank" class="">kreve@sdfe.dk</a>></span> wrote:<br class="">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word;line-break:after-white-space" class="">Kurt,
<div class=""><br class="">
</div>
<div class="">I think it looks good. I tried compiling the code and again I had the problem with declarations like</div>
<div class=""><br class="">
</div>
<div class=""><span class="m_-8580915385391752522Apple-tab-span" style="white-space:pre-wrap"></span>XY xy = {0.0, 0.0};</div>
<div class=""><br class="">
</div>
<div class="">I’ve fixed those in a fork of your gist. See revision 2 in [0] for a proposed solution that I think</div>
<div class="">is in line with your ideas</div>
<div class=""><br class="">
</div>
<div class="">I like how you’ve separated includes from the standard library on the PROJ internal includes. On</div>
<div class="">a related note (for those who don’t already know) I have recently introduced the proj_math.h</div>
<div class="">header which is intended as a PROJ replacement of math.h. proj_math.h’s purpose in life is to</div>
<div class="">make sure that we can use C99 math functions on systems where they are not available.</div>
<div class="">proj_math.h includes math.h and defines functions such as isnan() and hypot(). This way they</div>
<div class="">can be used as you would on a C99-compatible system as long as proj_math.h is included.</div>
<div class="">See revision 3 in [0].</div>
<div class=""><br class="">
</div>
<div class="">Would you be willing to write up a simple style guide for PROJ based on the ideas you have presented in</div>
<div class="">this thread?</div>
<div class="">
<div class=""><br class="">
</div>
<div class="">/Kristian</div>
<div class=""><br class="">
</div>
<div class="">[0] <a href="https://gist.github.com/kbevers/17ec703942646e401b28a0975b28771d/revisions" target="_blank" class="">https://gist.github.com/<wbr class="">kbevers/<wbr class="">17ec703942646e401b28a0975b2877<wbr class="">1d/revisions</a></div>
<div class="">
<div class="h5">
<div class=""><br class="">
<blockquote type="cite" class="">
<div class="">On 24 Apr 2018, at 12:05, Mateusz Loskot <<a href="mailto:mateusz@loskot.net" target="_blank" class="">mateusz@loskot.net</a>> wrote:</div>
<br class="m_-8580915385391752522Apple-interchange-newline">
<div class="">
<div class="">On 24 April 2018 at 11:45, Thomas Knudsen <<a href="mailto:knudsen.thomas@gmail.com" target="_blank" class="">knudsen.thomas@gmail.com</a>> wrote:<br class="">
<blockquote type="cite" class="">
<blockquote type="cite" class="">In C too, but since C99.<br class="">
</blockquote>
<br class="">
AFAIK this only applies to the "for (int i = 0;  i < n; i++)" syntax.<br class="">
<br class="">
while (...) {<br class="">
   int i = 123, j = 345;<br class="">
   k = i + j;<br class="">
}<br class="">
<br class="">
has been correct (and imho, preferable) syntax since K&R C<br class="">
</blockquote>
<br class="">
AFAIK, it's about compound statement.<br class="">
C89 requires declaration at the top of blocks, while C99 lifts that:<br class="">
<br class="">
$ cat test.c<br class="">
int main()<br class="">
{<br class="">
   int i = 0;<br class="">
   while (i < 10)<br class="">
   {<br class="">
       int j = 345;<br class="">
       i = i + j;<br class="">
   }<br class="">
<br class="">
   {<br class="">
       int z = 0;<br class="">
       z = 1;<br class="">
   }<br class="">
   int x = 1;<br class="">
}<br class="">
<br class="">
$ gcc -std=c89 -pedantic test.c<br class="">
test.c: In function ‘main’:<br class="">
test.c:14:5: warning: ISO C90 forbids mixed declarations and code<br class="">
[-Wdeclaration-after-<wbr class="">statement]<br class="">
    int x = 1;<br class="">
    ^~~<br class="">
<br class="">
$ gcc -std=c99 -pedantic test.c<br class="">
$<br class="">
<br class="">
<br class="">
Best regards,<br class="">
-- <br class="">
Mateusz Loskot, <a href="http://mateusz.loskot.net/" target="_blank" class="">http://mateusz.loskot.net</a><br class="">
______________________________<wbr class="">_________________<br class="">
Proj mailing list<br class="">
<a href="mailto:Proj@lists.maptools.org" target="_blank" class="">Proj@lists.maptools.org</a><br class="">
<a href="http://lists.maptools.org/mailman/listinfo/proj" target="_blank" class="">http://lists.maptools.org/<wbr class="">mailman/listinfo/proj</a></div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</div>
<br class="">
______________________________<wbr class="">_________________<br class="">
Proj mailing list<br class="">
<a href="mailto:Proj@lists.maptools.org" class="">Proj@lists.maptools.org</a><br class="">
<a href="http://lists.maptools.org/mailman/listinfo/proj" rel="noreferrer" target="_blank" class="">http://lists.maptools.org/<wbr class="">mailman/listinfo/proj</a><br class="">
</blockquote>
</div>
<br class="">
<br clear="all" class="">
<div class=""><br class="">
</div>
-- <br class="">
<div class="gmail_signature" data-smartmail="gmail_signature">--
<div class=""><a href="http://schwehr.org/" target="_blank" class="">http://schwehr.org</a></div>
</div>
</div>
_______________________________________________<br class="">
Proj mailing list<br class="">
<a href="mailto:Proj@lists.maptools.org" class="">Proj@lists.maptools.org</a><br class="">
http://lists.maptools.org/mailman/listinfo/proj</div>
</blockquote>
</div>
<br class="">
</body>
</html>