[Freeciv-Dev] Re: improper access of iterators
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
On Sun, Aug 26, 2001 at 07:08:01PM -0400, Jason Dorje Short wrote:
> Raimar Falke wrote:
> >
> > On Sun, Aug 26, 2001 at 05:40:42PM -0400, Justin Moore wrote:
>
> > for(;;) {
> > int changed=0;
> > unit_list_iterate(pcity->units_supported, punit)
> > if (some_condition) {
> > handle_unit_disband_safe(pplayer, &pack);
> > city_refresh(pcity);
> > ai_fix_unhappy(pcity);
> > changed=1;
> > break;
> > }
> > unit_list_iterate_end;
> > if(changed) break;
> > }
> >
> > This looks save to me but is a bit ugly.
>
> The same can be accomplished with a single GOTO:
>
> start_over:
> unit_list_iterate(pcity->units_supported, punit)
> if (some_condition) {
> handle_unit_disband_safe(pplayer, &pack, &myiter);
> city_refresh(pcity);
> ai_fix_unhappy(pcity);
> goto start_over; /* use of goto saves ugly loop */
> }
> unit_list_iterate_end;
Nice.
Raimar
--
email: rf13@xxxxxxxxxxxxxxxxx
1) Customers cause problems.
2) Marketing is trying to create more customers.
Therefore:
3) Marketing is evil.
|
|