Mercurial > hg > openttd
changeset 15161:4b00526d0be8 draft
(svn r19790) -Change: use the typed FOR_EACH_SET_BIT for CargoIDs (adf88)
author | rubidium <rubidium@openttd.org> |
---|---|
date | Tue, 11 May 2010 21:01:01 +0000 |
parents | 771499c17fd3 |
children | c5ccb53c4985 |
files | src/cargotype.h src/station_gui.cpp |
diffstat | 2 files changed, 19 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cargotype.h +++ b/src/cargotype.h @@ -150,6 +150,8 @@ if ((var = CargoSpec::Get(cargospec_index))->IsValid()) #define FOR_ALL_CARGOSPECS(var) FOR_ALL_CARGOSPECS_FROM(var, 0) +#define FOR_EACH_SET_CARGO_ID(var, cargo_bits) FOR_EACH_SET_BIT_EX(CargoID, var, uint, cargo_bits) + #define FOR_ALL_SORTED_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_cargo_specs_size; index++) #define FOR_ALL_SORTED_STANDARD_CARGOSPECS(var) for (uint8 index = 0; var = _sorted_cargo_specs[index], index < _sorted_standard_cargo_specs_size; index++)
--- a/src/station_gui.cpp +++ b/src/station_gui.cpp @@ -45,18 +45,18 @@ char string[512]; char *b = string; - for (CargoID i = 0; i < NUM_CARGO; i++) { + CargoID i; + FOR_EACH_SET_CARGO_ID(i, cargo_mask) { if (b >= lastof(string) - (1 + 2 * 4)) break; // ',' or ' ' and two calls to Utf8Encode() - if (HasBit(cargo_mask, i)) { - if (first) { - first = false; - } else { - /* Add a comma if this is not the first item */ - *b++ = ','; - *b++ = ' '; - } - b = InlineString(b, CargoSpec::Get(i)->name); + + if (first) { + first = false; + } else { + /* Add a comma if this is not the first item */ + *b++ = ','; + *b++ = ' '; } + b = InlineString(b, CargoSpec::Get(i)->name); } /* If first is still true then no cargo is accepted */ @@ -288,8 +288,8 @@ { Money diff = 0; - for (CargoID j = 0; j < NUM_CARGO; j++) { - if (!HasBit(cargo_filter, j)) continue; + CargoID j; + FOR_EACH_SET_CARGO_ID(j, cargo_filter) { if (!(*a)->goods[j].cargo.Empty()) diff += GetTransportedGoodsIncome((*a)->goods[j].cargo.Count(), 20, 50, j); if (!(*b)->goods[j].cargo.Empty()) diff -= GetTransportedGoodsIncome((*b)->goods[j].cargo.Count(), 20, 50, j); } @@ -303,8 +303,8 @@ byte maxr1 = 0; byte maxr2 = 0; - for (CargoID j = 0; j < NUM_CARGO; j++) { - if (!HasBit(cargo_filter, j)) continue; + CargoID j; + FOR_EACH_SET_CARGO_ID(j, cargo_filter) { if (HasBit((*a)->goods[j].acceptance_pickup, GoodsEntry::PICKUP)) maxr1 = max(maxr1, (*a)->goods[j].rating); if (HasBit((*b)->goods[j].acceptance_pickup, GoodsEntry::PICKUP)) maxr2 = max(maxr2, (*b)->goods[j].rating); } @@ -351,9 +351,9 @@ this->InitNested(desc, window_number); this->owner = (Owner)this->window_number; - for (uint i = 0; i < NUM_CARGO; i++) { - const CargoSpec *cs = CargoSpec::Get(i); - if (cs->IsValid() && HasBit(this->cargo_filter, i)) this->LowerWidget(SLW_CARGOSTART + i); + CargoID cid; + FOR_EACH_SET_CARGO_ID(cid, this->cargo_filter) { + if (CargoSpec::Get(cid)->IsValid()) this->LowerWidget(SLW_CARGOSTART + cid); } if (this->cargo_filter == this->cargo_filter_max) this->cargo_filter = _cargo_mask;