Am 21.10.13 00:05, schrieb Christoph Badura: > On Tue, Oct 15, 2013 at 06:01:29PM -0300, Lourival Vieira Neto wrote: >>> Also, having to switch mentally between zero-based arrays in the kernel C >>> code and 1-based arrays in the Lua code make my head ache. >> It's something that doesn't bug me so much.. But, if necessary it >> could be changed to 0-based in this userdata. > > When you create your own data structures, I guess it is a wash. You have > to adjust +/-1 in infrequent circumstances in either scenario. > > But in this case you are creating a special purpose language that operates > in universe of zero-based array. And that's not only the kernel code. > Every Internet protocol specification that I remember is using zero-based > indexing. For someone dealing with both sides (the world and your lua > library), it makes the difference between constantly having to be alert > to remember to do the offset adjustment. That is a lot more mental work > for anyone working with this library. > > If you use 1-based indices talking to protocol people will be funny too: > > ``Anyone know why the flags in byte 6 of this packet are funny?'' > ``Sure, that's most likely because the flags are in byte 5.'' > > I think it is worth thinking hard about this. > > From a cursory reading of the Wireshark Lua API, it seems to me they are > using 0-based indices too.
It probably depends whether you are access a Lua table (where you'd expect 1-based) or if you are accessin an in-kernel datastructure that is not strictly a Lua table. If a Lua function is to mimick an existing C function, it might be better indeed to use 0-based access, to not confuse developers who are probably familiar with the corresponding C function. As this is mostly a matter of taste/source of confusion, it should be documented. A man page for a Lua function that offers the same or similar functionality as a C function should state whether it's 0-based or 1-based, imo. [...]
