Doubts about in_avail vs showmanyc

Paolo Carlini pcarlini@unitus.it
Wed Mar 5 08:38:00 GMT 2003


Nathan Myers wrote:

>This should end up as:
>  
>
>>    inline streamsize
>>    in_avail()
>>    {
>>      streamsize __ret = this->egptr() - this->gptr();
>>      return (__ret != 0) ? __ret : this->showmanyc();
>>    }
>>    
>>
>In other words, in_avail() doesn't care if there's anything in some
>putback cell; if there is, that's what's available without a call to
>underflow(), and that's what this->gptr() points to, so that's all it
>reports.  In general, you can cut and _cut_ and *cut* the members of
>basic_streambuf<> until they are really easy to understand (and fast).
>Put all complexity into the virtuals of the derived classes where 
>speed is less important, because time spent there is amortized over
>many characters.  
>
>Note that there's no need to test for null pointers because if
>one is 0, the others are 0 too and the difference is 0.
>
Thanks Nathan for this reply and the other.

In general, "cutting and cutting" really scares me, since, until I'm 
completely sure to understand
the smallest details, I'm _so_ afraid to broke something: I keep asking 
myself: "if someone put
this here, there must be a reason!". A basic example are those checks 
for null pointers: there are
many of them!

You'll have to review attentively any patch I wrote in the near future 
and, in case, reassure me
that I'm doing the right thing.

Paolo.



More information about the Libstdc++ mailing list