On 06/02/2014 11:27 AM, Kinkie wrote:
>>> + //fixme: account for buf_.size()
>>> + bool neg = false;
>>> + const char *s = buf_.rawContent();
>>> + const char *end = buf_.rawContent() + buf_.length();
>>
>> Could you please explain what the above comment means? There is no
>> SBuf::size() AFAICT.
>
> length() is an alias of size(). Changed to size() to avoid confusion
The above code already accounts for .length() or .size(), right? What is
there to fix? Is it a bug (XXX) or just an future improvement note (TODO)?
>>> + * At least one terminating delimiter is required. \0 may be passed
>>> + * as a delimiter to treat end of buffer content as the end of token.
>>
>>> + if (tokenLen == SBuf::npos && !delimiters['\0']) {
>>
>> The above is from the actually committed code (not the code posted for
>> review). Please remove \0 as a special case. As far as I can tell, the
>> reason it was added is already covered well enough by the existing API.
>> The addition of this special case is likely to just confuse and break
>> things. For example, adding \0 to delimiters for the purpose of
>> disabling this special case will also tell Tokenizer to skip \0
>> characters in input, which is often wrong.
>
> I'll let Amos argue for this as he's the one who has the clearest
> picture of the use case.
> Given your objection, my 2c suggestion to address the need is to
> either have two token() methods, one which requires a separator at the
> end of a token and one which doesn't, or to have a bool flag passed to
> the method.
I hope neither is needed, but I will wait for the "use case" discussion.
BTW, if possible, please work on your proposal to avoid these kind of
rushed commits of knowingly contested code.
Thank you,
Alex.