Hi Igor, I am also used to the 0-based when dealing with C-stuff.
Cheers, #Luc 2012/9/3 Marten Feldtmann <[email protected]> > Hello Igor, > > 0-based - because it's oriented towards C structures (and therefore memory > oriented). > > Another way to see this is: it's not an index, its an byte-offset from the > beginning of the memory. Therefore I would not name the parameter as > something like index, but more like zeroBasedOffset. By the way: > VASmalltalk does it the same way. > > The same problem might occur, when dealing with pointers to array of > primitive data types in ByteArray or instances of NBExternalAddress. > > Even here I would suggest using zero based index structures - though it is > contrary to Smalltalk typical 0ne-based array index. In VASmalltalk this > situation is zero-based access and the parameter is not a byte index, but a > data element index. And an index of "0" returns the start of the array (and > the first element). > > Marten > > Am 03.09.2012 02:28, schrieb Igor Stasenko: > > Hi, there >> >> >> i added a bunch of accessors to ByteArray and NBExternalAddress which >> having uniform look: >> >> nb<type>At: >> nb<type>At: put: >> >> where types are: >> >> {U}Int<8/16/32/64> >> or >> Float<32/64> >> >> the problem is that indexes in ByteArray are 1-based, >> but in NBExternalAddress is 0-based. >> >> And there's already different places in code which following these rules. >> But i feel like this should be uniform (so same piece of code can be >> used for either bytearrays or external addresses), >> to avoid confusion and mistakes. >> >> i just not sure which one to leave: 1-based or 0-based ? >> >> From one side, all collections in smalltalk is 1-based.. >> but from other side accessing memory at 1-based offset looks also >> unnatural. >> >> What you think? >> >>
