<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body text="#000000" bgcolor="#FFFFFF">
<p><br>
</p>
<br>
<div class="moz-cite-prefix">On 12/27/2017 8:37 AM, Darafei "Komяpa"
Praliaskouski wrote:<br>
</div>
<blockquote type="cite"
cite="mid:CAC8Q8tKfbwcDw_hUQQVS=MRt35wT_torimPEijdH9ByP=uiU5A@mail.gmail.com">
<div dir="ltr">
<div>Hi,</div>
<div><br>
</div>
<div>On my weighted median PR Dan Baston asked why do I use
size_t as loop/array index even though PostGIS point array
size is limited to 32-bit:</div>
<div><a
href="https://github.com/postgis/postgis/pull/176#discussion_r158592196"
moz-do-not-send="true">https://github.com/postgis/postgis/pull/176#discussion_r158592196</a> <br>
</div>
<div><br>
</div>
<div>I've brought that habit from <a href="http://maps.me"
moz-do-not-send="true">maps.me</a> development team. Maps.me
is cross-compiled for a set of architectures of modern Android
devices (from MIPS through ARMs to x86_64).</div>
<div><br>
</div>
<div>size_t is convenient as counter/index variable because of:</div>
<div><br>
</div>
<div> - it's unsigned. Any -1 becomes large enough to trigger
segfault, address sanitizer and any kind of static code
validators.</div>
<div><br>
</div>
<div> - it's type returned by sizeof(). You can't safely have an
array larger than largest possible sizeof(array) of your
compiler. (By standard you may be limited to 65536 elements -
I don't expect PostGIS to be working in 16 bit systems, and
uint32_t as counter won't help there to store longer arrays
anyway).<br>
<br>
</div>
<div> - it's aligned with system architecture, being 32bit on
32bit systems and 64bit on 64-bit systems. Adding/subtracting
it from pointers don't normally require compiler to perform
implicit type casting. This is not required by standard but it
is this way in practice.</div>
<div><br>
</div>
<div> - after some time of adopting such arrangement you see
size_t variable and immediately know it's a positive counter
that might be used as array index. :)<br>
<br>
If you think this change causes problems, let me know.<br>
<br>
Could it be that we want this everywhere? :)</div>
</div>
<br>
</blockquote>
<br>
<br>
I've been in the habit of using size_t from C++, where it's what all
the STL size-related operators use, and thus what you get when you
use auto.<br>
</body>
</html>