Mercurial > hg > openttd
changeset 4976:f4ef69ec4950 draft
(svn r6979) Use the pool macros for the Industry pool
author | tron <tron@openttd.org> |
---|---|
date | Sat, 28 Oct 2006 11:32:45 +0000 |
parents | 806e348f1bc1 |
children | 2a013c9cf049 |
files | industry.h industry_cmd.c oldloader.c openttd.c |
diffstat | 4 files changed, 11 insertions(+), 34 deletions(-) [+] |
line wrap: on
line diff
--- a/industry.h +++ b/industry.h @@ -80,7 +80,7 @@ const IndustrySpec *GetIndustrySpec(IndustryType thistype); -extern MemoryPool _industry_pool; +DECLARE_POOL(Industry, Industry, 3, 8000) /** * Check if an Industry really exists. @@ -90,22 +90,6 @@ return industry->xy != 0; } -/** - * Get the pointer to the industry with index 'index' - */ -static inline Industry *GetIndustry(uint index) -{ - return (Industry*)GetItemFromPool(&_industry_pool, index); -} - -/** - * Get the current size of the IndustryPool - */ -static inline uint16 GetIndustryPoolSize(void) -{ - return _industry_pool.total_items; -} - VARDEF int _total_industries; static inline IndustryID GetIndustryArraySize(void) @@ -150,7 +134,7 @@ i->xy = 0; } -#define FOR_ALL_INDUSTRIES_FROM(i, start) for (i = GetIndustry(start); i != NULL; i = (i->index + 1 < GetIndustryPoolSize()) ? GetIndustry(i->index + 1) : NULL) if (IsValidIndustry(i)) +#define FOR_ALL_INDUSTRIES_FROM(i, start) for (i = GetIndustry(start); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) if (IsValidIndustry(i)) #define FOR_ALL_INDUSTRIES(i) FOR_ALL_INDUSTRIES_FROM(i, 0) VARDEF const Industry** _industry_sort;
--- a/industry_cmd.c +++ b/industry_cmd.c @@ -32,12 +32,6 @@ static byte _industry_sound_ctr; static TileIndex _industry_sound_tile; -enum { - /* Max industries: 64000 (8 * 8000) */ - INDUSTRY_POOL_BLOCK_SIZE_BITS = 3, /* In bits, so (1 << 3) == 8 */ - INDUSTRY_POOL_MAX_BLOCKS = 8000, -}; - /** * Called if a new block is added to the industry-pool */ @@ -47,11 +41,10 @@ /* We don't use FOR_ALL here, because FOR_ALL skips invalid items. * TODO - This is just a temporary stage, this will be removed. */ - for (i = GetIndustry(start_item); i != NULL; i = (i->index + 1 < GetIndustryPoolSize()) ? GetIndustry(i->index + 1) : NULL) i->index = start_item++; + for (i = GetIndustry(start_item); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) i->index = start_item++; } -/* Initialize the industry-pool */ -MemoryPool _industry_pool = { "Industry", INDUSTRY_POOL_MAX_BLOCKS, INDUSTRY_POOL_BLOCK_SIZE_BITS, sizeof(Industry), &IndustryPoolNewBlock, NULL, 0, 0, NULL }; +DEFINE_POOL(Industry, Industry, IndustryPoolNewBlock, NULL) /** * Retrieve the type for this industry. Although it is accessed by a tile, @@ -1369,7 +1362,7 @@ /* We don't use FOR_ALL here, because FOR_ALL skips invalid items. * TODO - This is just a temporary stage, this will be removed. */ - for (i = GetIndustry(0); i != NULL; i = (i->index + 1 < GetIndustryPoolSize()) ? GetIndustry(i->index + 1) : NULL) { + for (i = GetIndustry(0); i != NULL; i = (i->index + 1U < GetIndustryPoolSize()) ? GetIndustry(i->index + 1U) : NULL) { IndustryID index = i->index; if (IsValidIndustry(i)) continue; @@ -1383,7 +1376,7 @@ } /* Check if we can add a block to the pool */ - return AddBlockToPool(&_industry_pool) ? AllocateIndustry() : NULL; + return AddBlockToPool(&_Industry_pool) ? AllocateIndustry() : NULL; } static void DoCreateNewIndustry(Industry *i, TileIndex tile, int type, const IndustryTileTable *it, const Town *t, byte owner) @@ -1848,8 +1841,8 @@ void InitializeIndustries(void) { - CleanPool(&_industry_pool); - AddBlockToPool(&_industry_pool); + CleanPool(&_Industry_pool); + AddBlockToPool(&_Industry_pool); _total_industries = 0; _industry_sort_dirty = true; @@ -1924,7 +1917,7 @@ while ((index = SlIterateArray()) != -1) { Industry *i; - if (!AddBlockIfNeeded(&_industry_pool, index)) + if (!AddBlockIfNeeded(&_Industry_pool, index)) error("Industries: failed loading savegame: too many industries"); i = GetIndustry(index);