Complete.Org: Mailing Lists: Archives: freeciv-dev: August 2001:
[Freeciv-Dev] Re: improper access of iterators
Home

[Freeciv-Dev] Re: improper access of iterators

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Jason Dorje Short <jshort@xxxxxxxxxxxxx>
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: improper access of iterators
From: Raimar Falke <hawk@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Mon, 27 Aug 2001 07:17:29 +0200
Reply-to: rf13@xxxxxxxxxxxxxxxxxxxxxx

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.


[Prev in Thread] Current Thread [Next in Thread]