[Freeciv-Dev] [RFC] enum cleanup
[Top] [All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
There is some code like
./common/unittype.c:368: for (i = 0; i < UCL_LAST; i++) {
./common/unittype.c:386: for(i=0; i<F_LAST; i++) {
./common/unittype.c:515: for(i=0; i<F_LAST; i++) {
./common/unittype.c:506: for(i=0; i<L_LAST; i++) {
./common/unittype.c:510: for(i=0; i<L_LAST; i++) {
./common/improvement.c:143: for (ret_id = 0; ret_id < EFR_LAST; ret_id++) {
./common/improvement.c:176: for (ret_id = 0; ret_id < EFT_LAST; ret_id++) {
./common/improvement.c:302: for (i=0;i<EFR_LAST;i++) implist[i]=NULL;
./common/improvement.c:338: for (i=0;i<EFR_LAST;i++) {
./common/improvement.c:350: for (i=0;i<EFR_LAST;i++) {
./common/improvement.c:547: for (i=0; i<EFR_LAST; i++)
./common/improvement.c:560: for (j=0; j<EFR_LAST; j++) {
To be type safe this has to be replaced with:
for(i = X_FIRST; i < X_LAST; i++)
The X_FIRST and X_LAST has to be part of the enum and not integers. So
things like:
#define L_FIRST 64 /* should be >= F_LAST */
#define B_LAST MAX_NUM_ITEMS
have to go.
Another thing:
enum effect_range_id {
EFR_NONE,
EFR_BUILDING,
EFR_CITY,
EFR_ISLAND,
EFR_PLAYER,
EFR_WORLD,
EFR_LAST /* keep this last */
};
typedef enum effect_range_id Eff_Range_id;
Should be replaced with
typedef enum {
EFR_NONE,
EFR_BUILDING,
EFR_CITY,
EFR_ISLAND,
EFR_PLAYER,
EFR_WORLD,
EFR_LAST /* keep this last */
} Eff_Range_id;
Since the named enum is never used in the code.
And last but not least: there is
typedef int Impr_Type_id;
which is used in the code. And there is
enum improvement_type_id {
B_AIRPORT=0, B_AQUEDUCT, B_BANK, B_BARRACKS, B_BARRACKS2, B_BARRACKS3,
B_CATHEDRAL, B_CITY, B_COASTAL, B_COLOSSEUM, B_COURTHOUSE, B_FACTORY,
B_GRANARY, B_HARBOUR, B_HYDRO, B_LIBRARY, B_MARKETPLACE, B_MASS, B_MFG,
B_NUCLEAR, B_OFFSHORE, B_PALACE, B_POLICE, B_PORT, B_POWER,
B_RECYCLING, B_RESEARCH, B_SAM, B_SDI, B_SEWER, B_SOLAR, B_SCOMP,
B_SMODULE, B_SSTRUCTURAL, B_STOCK, B_SUPERHIGHWAYS, B_SUPERMARKET, B_TEMPLE,
B_UNIVERSITY,
B_APOLLO, B_ASMITHS, B_COLLOSSUS, B_COPERNICUS, B_CURE, B_DARWIN, B_EIFFEL,
B_GREAT, B_WALL, B_HANGING, B_HOOVER, B_ISAAC, B_BACH, B_RICHARDS,
B_LEONARDO, B_LIGHTHOUSE, B_MAGELLAN, B_MANHATTEN, B_MARCO, B_MICHELANGELO,
B_ORACLE, B_PYRAMIDS, B_SETI, B_SHAKESPEARE, B_LIBERTY, B_SUNTZU,
B_UNITED, B_WOMENS,
B_CAPITAL, B_LAST_ENUM
};
These two should be merged into
typedef enum {...} Impr_Type_id.
Raimar
--
email: rf13@xxxxxxxxxxxxxxxxx
"When C++ is your hammer, everything looks like a thumb."
-- Steven M. Haflich
- [Freeciv-Dev] [RFC] enum cleanup,
Raimar Falke <=
|
|