Complete.Org: Mailing Lists: Archives: freeciv-dev: August 2001:
[Freeciv-Dev] Re: [PATCH] Small improvement at genlist and maphand
Home

[Freeciv-Dev] Re: [PATCH] Small improvement at genlist and maphand

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: rf13@xxxxxxxxxxxxxxxxxxxxxx
Cc: freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: [PATCH] Small improvement at genlist and maphand
From: Trent Piepho <xyzzy@xxxxxxxxxxxxx>
Date: Tue, 21 Aug 2001 03:59:03 -0700 (PDT)

On Tue, 21 Aug 2001, Raimar Falke wrote:
> There are further optimizations possible:
>  - what about passing struct tile * instead of (int x, int y)?
>  - what about using pointers instead of ids in structs?

Those are probably good ideas.  One thing you have to watch out for is
dangling pointers.  When a unit is deleted, you're not allowed to have any
pointers to it anymore.  The main purpose of the function game_remove_unit()
is to find all these pointers in the various lists and remove them.

If you stick pointers in other places, you need to be assured that you can
remove them when the unit/city goes away.  In some cases, like the GUI code,
this is very hard to do.  So you don't do it, and use an ID instead.

It does seem like the owner and homecity fields in the unit struct could be
changed to pointers.

BTW, game_remove_unit takes an ID as an argument!  Seems like this should be a
pointer.  I think that's because it used to be a higher level function that
got called from the network code.



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