# oldpool.h File Reference

Base for the old pool. More...

`#include "core/math_func.hpp"`

Go to the source code of this file.

## Data Structures

struct | OldMemoryPoolBase
| Stuff for dynamic vehicles. More...
struct | OldMemoryPool< T >
struct | PoolItemIndexLess< T >
| Template providing a predicate to allow STL containers of pointers to pool items to be sorted by index. More...
struct | PoolItem< T, Tid, Tpool >
| Generalization for all pool items that are saved in the savegame. More...

## Defines

#define | OLD_POOL_ENUM(name, type, block_size_bits, max_blocks)
#define | OLD_POOL_ACCESSORS(name, type)
#define | DECLARE_OLD_POOL(name, type, block_size_bits, max_blocks)
#define | DEFINE_OLD_POOL(name, type, new_block_proc, clean_block_proc)
#define | DEFINE_OLD_POOL_GENERIC(name, type)
#define | STATIC_OLD_POOL(name, type, block_size_bits, max_blocks, new_block_proc, clean_block_proc)

## Typedefs

typedef void | OldMemoryPoolNewBlock (uint start_item)
typedef void | OldMemoryPoolCleanBlock (uint start_item, uint end_item)

## Functions

template<typename T, OldMemoryPool< T > * Tpool>
static void | PoolNewBlock (uint start_item)
| Generic function to initialize a new block in a pool.
template<typename T, OldMemoryPool< T > * Tpool>
static void | PoolCleanBlock (uint start_item, uint end_item)
| Generic function to free a new block in a pool.

## Detailed Description

Base for the old pool.

Definition in file oldpool.h.

## Define Documentation

#define DECLARE_OLD_POOL | ( | name,
|  | type,
|  | block_size_bits,
|  | max_blocks |  | ) |

Value:

    OLD_POOL_ENUM(name, type, block_size_bits, max_blocks) \
      extern OldMemoryPool<type> _##name##_pool; \
      OLD_POOL_ACCESSORS(name, type)

Definition at line 333 of file oldpool.h.

#define DEFINE_OLD_POOL | ( | name,
|  | type,
|  | new_block_proc,
|  | clean_block_proc |  | ) |

Value:

    OldMemoryPool<type> _##name##_pool( \
        #name, name##_POOL_MAX_BLOCKS, name##_POOL_BLOCK_SIZE_BITS, sizeof(type), \
        new_block_proc, clean_block_proc);

Definition at line 339 of file oldpool.h.

#define DEFINE_OLD_POOL_GENERIC | ( | name,
|  | type |  | ) |

Value:

    OldMemoryPool<type> _##name##_pool( \
        #name, name##_POOL_MAX_BLOCKS, name##_POOL_BLOCK_SIZE_BITS, sizeof(type), \
        PoolNewBlock<type, &_##name##_pool>, PoolCleanBlock<type, &_##name##_pool>); \
        template type *PoolItem<type, type##ID, &_##name##_pool>::AllocateSafeRaw(uint &first); \
        template bool PoolItem<type, type##ID, &_##name##_pool>::CanAllocateItem(uint count);

Definition at line 344 of file oldpool.h.

#define OLD_POOL_ACCESSORS | ( | name,
|  | type |  | ) |

Value:

    static inline type *Get##name(uint index) { return _##name##_pool.Get(index);  } \
      static inline uint Get##name##PoolSize()  { return _##name##_pool.GetSize(); }

Definition at line 328 of file oldpool.h.

#define OLD_POOL_ENUM | ( | name,
|  | type,
|  | block_size_bits,
|  | max_blocks |  | ) |

Value:

    enum { \
        name##_POOL_BLOCK_SIZE_BITS = block_size_bits, \
        name##_POOL_MAX_BLOCKS      = max_blocks \
      };

Definition at line 321 of file oldpool.h.

#define STATIC_OLD_POOL | ( | name,
|  | type,
|  | block_size_bits,
|  | max_blocks,
|  | new_block_proc,
|  | clean_block_proc |  | ) |

Value:

    OLD_POOL_ENUM(name, type, block_size_bits, max_blocks) \
      static DEFINE_OLD_POOL(name, type, new_block_proc, clean_block_proc) \
      OLD_POOL_ACCESSORS(name, type)

Definition at line 352 of file oldpool.h.

## Function Documentation

template<typename T, OldMemoryPool< T > * Tpool>

static void PoolCleanBlock | ( | uint | start_item,
|  | uint | end_item |
| ) |  |  | `[inline, static]`

Generic function to free a new block in a pool.

Parameters:

  | start_item | the first item that needs to be cleaned
  | end_item | the last item that needs to be cleaned

Definition at line 150 of file oldpool.h.

template<typename T, OldMemoryPool< T > * Tpool>

static void PoolNewBlock | ( | uint | start_item | ) | `[inline, static]`

Generic function to initialize a new block in a pool.

Parameters:

  | start_item | the first item that needs to be initialized

Definition at line 136 of file oldpool.h.