[Freeciv-Dev] (PR#9828) RFC: remove unnecessary dataio functions
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: |
undisclosed-recipients: ; |
Subject: |
[Freeciv-Dev] (PR#9828) RFC: remove unnecessary dataio functions |
From: |
"Jason Short" <jdorje@xxxxxxxxxxxxxxxxxxxxx> |
Date: |
Thu, 26 Aug 2004 17:06:15 -0700 |
Reply-to: |
rt@xxxxxxxxxxx |
<URL: http://rt.freeciv.org/Ticket/Display.html?id=9828 >
Lots of times arrays in the packets code are implemented as
packets.def:
type EFFECT = effect(struct impr_effect)
PACKET_XXX_YYY=...
EFFECT effects[255];
END
dataio.c:
dio_put_effect(...)
{
...
}
dio_get_effect(...)
{
}
this is just ugly: it makes it hard to change anything because you never
get any warning when things break (this has happened to me several
times). And it conceals the dataio code that actually is necessary
(although I'm not quite sure which that is).
packets.def should be able to handle this. And in fact it can: you just
have to split up the array. In the new code, the dataio.c code is
removed and packets.def becomes
PACKET_XXX_YYY
SINT32 effect_field1[255];
BOOL effect_field2[255];
UINT8 effect_field3[255];
and the packet-sending and packet-receiving code is changed to
initialize each packet.
The delta generator _should_ have support for multi-field arrays. But
since it does not, I think the latter way to do it is quite a bit better.
Note that in the effects patch, Vasco made an entirely new packet to
send the effects data rather than use dataio code. IMO this is inferior
to using split arrays (as above). But it does show how the dataio
system is hard to use.
jason
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Freeciv-Dev] (PR#9828) RFC: remove unnecessary dataio functions,
Jason Short <=
|
|