Nicolas Pennequin wrote:

* Make rtc_tags const too.
Whay do you mean ? the array ? all_tags isn't const... But maybe I should make them both const ?

Yes, arrays with constant data should be const. :)

* Use for loops where appropriate (like searching the rtc_tags or
all_tags arrays).
Not sure that'll be better. The whiles always end anyway and a for that doesn't do all its iterations might be considered "unclean".

It's common with early termination of for loops, so I don't see that as unclean. Rather, when I first looked at the rtc_tags search loop, I didn't realize what it was, because it was a while rather than a for.

* How is show_sb_on_wps set to false? By clearing the wps_data struct
somewhere?
Yes, the whole wps_data is cleared when the WPS is reset. Maybe that's not a very clear way of doing things ?

Not bad as such. I noticed that function only set the field to true, but I couldn't (easily) see where it was set to false. A comment stating that it defaults to false would be enough.

* Is there any sane way to avoid the gotos in wps_parse? E.g., by
calling a function or something?
I've removed one of them by factoring out another blob of dublicate code (the "skip end of line" loop). To me, the other one seems the cleanest way of doing what's needed, and it was said quite recently that goto's weren't disallowed, and even encouraged when a good solution. I feel this goto is the right solution here.

Yes, gotos can be acceptable (especially for error handling), but having it jump around within a switch should be discouraged, IMHO, particularly if the goto label almost look like another "case" statement. :) Reducing the indent of the labels would help, to make it clear there's something unusual going on.

* Consider manual common subexpression elimination in some places, like
in the conditionals in draw_progress_bar. In my experience, GCC doesn't
always do it where you might expect it to, and it can increase
readability (shorter expressions).
What's "manual common subexpression elimination" ?

An optimization technique used by compilers, where if a subexpression (e.g., "a * b" in ("a * b + c * d") is used in several places, the compiler does the calculation once, and stores the result in a temporary variable, which it then uses in place of that sub-expression.

The case I was referring to in draw_progress_bar is the "state->id3->length" thing, which is used in 6 places. replacing that with a "len" field could increase readability and perhaps save a few bytes.

Maybe not worth it here, but as an example, there's an if-statement in filetree.c where the expression "(dptr->attr & TREE_ATTR_MASK)" is used 12 times. Last time I checked (on m68k-elf, using gcc 3.4.x), that expression was actually executed 12 times.

About, the archos player, what should I do ? Can I commit without really checking the progressbars but making sure the default WPS works fine (in the sim) ? There aren't any custom WPSs in the wiki anyway and it seems there aren't many testers out there.

Since you can't test it, there's not much you can do - unless someone volunteers to test the patch for you.

  Magnus

Reply via email to