(svn r6977) Use the pool macros for the EngineRenew pool

This commit is contained in:
tron 2006-10-28 11:08:52 +00:00
parent da500bc3e6
commit 1a4a7984a7
3 changed files with 11 additions and 33 deletions

View File

@ -450,13 +450,9 @@ bool IsEngineBuildable(uint engine, byte type)
* Engine Replacement stuff
************************************************************************/
static void EngineRenewPoolNewBlock(uint start_item); /* Forward declare for initializer of _engine_renew_pool */
enum {
ENGINE_RENEW_POOL_BLOCK_SIZE_BITS = 3,
ENGINE_RENEW_POOL_MAX_BLOCKS = 8000,
};
static void EngineRenewPoolNewBlock(uint start_item);
MemoryPool _engine_renew_pool = { "EngineRe", ENGINE_RENEW_POOL_MAX_BLOCKS, ENGINE_RENEW_POOL_BLOCK_SIZE_BITS, sizeof(EngineRenew), &EngineRenewPoolNewBlock, NULL, 0, 0, NULL };
DEFINE_POOL(EngineRenew, EngineRenew, EngineRenewPoolNewBlock, NULL)
static void EngineRenewPoolNewBlock(uint start_item)
{
@ -464,7 +460,7 @@ static void EngineRenewPoolNewBlock(uint start_item)
/* 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 (er = GetEngineRenew(start_item); er != NULL; er = (er->index + 1 < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1) : NULL) {
for (er = GetEngineRenew(start_item); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) {
er->index = start_item++;
er->from = INVALID_ENGINE;
}
@ -477,7 +473,7 @@ static EngineRenew *AllocateEngineRenew(void)
/* 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 (er = GetEngineRenew(0); er != NULL; er = (er->index + 1 < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1) : NULL) {
for (er = GetEngineRenew(0); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) {
if (IsValidEngineRenew(er)) continue;
er->to = INVALID_ENGINE;
@ -486,7 +482,7 @@ static EngineRenew *AllocateEngineRenew(void)
}
/* Check if we can add a block to the pool */
if (AddBlockToPool(&_engine_renew_pool)) return AllocateEngineRenew();
if (AddBlockToPool(&_EngineRenew_pool)) return AllocateEngineRenew();
return NULL;
}
@ -603,7 +599,7 @@ static void Load_ERNW(void)
while ((index = SlIterateArray()) != -1) {
EngineRenew *er;
if (!AddBlockIfNeeded(&_engine_renew_pool, index))
if (!AddBlockIfNeeded(&_EngineRenew_pool, index))
error("EngineRenews: failed loading savegame: too many EngineRenews");
er = GetEngineRenew(index);
@ -670,6 +666,6 @@ const ChunkHandler _engine_chunk_handlers[] = {
void InitializeEngines(void)
{
/* Clean the engine renew pool and create 1 block in it */
CleanPool(&_engine_renew_pool);
AddBlockToPool(&_engine_renew_pool);
CleanPool(&_EngineRenew_pool);
AddBlockToPool(&_EngineRenew_pool);
}

View File

@ -236,15 +236,7 @@ typedef struct EngineRenew EngineRenew;
* placed here so the only exception to this rule, the saveload code, can use
* it.
*/
extern MemoryPool _engine_renew_pool;
/**
* Get the current size of the EngineRenewPool
*/
static inline uint16 GetEngineRenewPoolSize(void)
{
return _engine_renew_pool.total_items;
}
DECLARE_POOL(EngineRenew, EngineRenew, 3, 8000)
/**
* Check if a EngineRenew really exists.
@ -259,19 +251,9 @@ static inline void DeleteEngineRenew(EngineRenew *er)
er->from = INVALID_ENGINE;
}
#define FOR_ALL_ENGINE_RENEWS_FROM(er, start) for (er = GetEngineRenew(start); er != NULL; er = (er->index + 1 < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1) : NULL) if (er->from != INVALID_ENGINE) if (IsValidEngineRenew(er))
#define FOR_ALL_ENGINE_RENEWS_FROM(er, start) for (er = GetEngineRenew(start); er != NULL; er = (er->index + 1U < GetEngineRenewPoolSize()) ? GetEngineRenew(er->index + 1U) : NULL) if (er->from != INVALID_ENGINE) if (IsValidEngineRenew(er))
#define FOR_ALL_ENGINE_RENEWS(er) FOR_ALL_ENGINE_RENEWS_FROM(er, 0)
/**
* DO NOT USE outside of engine.c. Is
* placed here so the only exception to this rule, the saveload code, can use
* it.
*/
static inline EngineRenew *GetEngineRenew(uint16 index)
{
return (EngineRenew*)GetItemFromPool(&_engine_renew_pool, index);
}
/**
* A list to group EngineRenew directives together (such as per-player).

View File

@ -1273,7 +1273,7 @@ static void *IntToReference(uint index, SLRefType rt)
return GetRoadStop(index);
}
case REF_ENGINE_RENEWS: {
if (!AddBlockIfNeeded(&_engine_renew_pool, index))
if (!AddBlockIfNeeded(&_EngineRenew_pool, index))
error("EngineRenews: failed loading savegame: too many EngineRenews");
return GetEngineRenew(index);
}