On Tue, May 30, 2006 at 05:32:19PM +0000, Angus Leeming wrote:
> Andre Poenitz <[EMAIL PROTECTED]> writes:
> > > +void InsetCaption::setLabel(LCursor & cur) const
> > > +{
> > > + // Set caption label _only_ if the cursor is in _this_ float:
> > > + if (cur.top().text() == &text_) {
> > > + string s;
> > > + size_t i = cur.depth();
> > > + while (i > 0) {
> > > + --i;
>
> > Probably not your doing, but: Indentation of the loop is off.
> > Apart from it can be shortened by two lines:
> > for (size_t i = cur.depth(); i--; )
>
> Now you're just being evil, André ;-) At least be explicit about the exit
> condition. I *think* that your code is equivalent to:
>
> for (size_t i = cur.depth(); i > 0; i--)
>
> I *think* I've convinced myself that the two for statements are the same, but
> I've definitely bruised some brain cells in the process.
Probably the ones you'd have needed... Or I lost some of mine...
My loop's first iteration has i == depth() - 1, yours i == depth().
Depending on the loop contents this might make a difference.
Andre', considering 'for (size_t i = cur.depth(); i--; )' being an
idiom.
PS: And of course,
'for (int i = (int) cur.depth(); --i >= 0; )'
produce the tightest code on any compiler I know.
Which means, that std::<stuff>::size() returning 'size_t' instead
of a signed type violates the "don't waste cycles on features you don't
need" principle.
PPS: Does it show that I've been forced to use disassemblers lately?
PPPS: Qt could be much faster.