alloc_func.hpp File Reference

Functions related to the allocation of memory. More...

Go to the source code of this file.

Defines

#define AllocaM(T, num_elements)   ((T*)alloca((num_elements) * sizeof(T)))
 alloca() has to be called in the parent function, so define AllocaM() as a macro

Functions

void NORETURN MallocError (size_t size)
 Function to exit with an error message after malloc() or calloc() have failed.
void NORETURN ReallocError (size_t size)
 Function to exit with an error message after realloc() have failed.
template<typename T >
static FORCEINLINE T * MallocT (size_t num_elements)
 Simplified allocation function that allocates the specified number of elements of the given type.
template<typename T >
static FORCEINLINE T * CallocT (size_t num_elements)
 Simplified allocation function that allocates the specified number of elements of the given type.
template<typename T >
static FORCEINLINE T * ReallocT (T *t_ptr, size_t num_elements)
 Simplified reallocation function that allocates the specified number of elements of the given type.

Detailed Description

Functions related to the allocation of memory.

Definition in file alloc_func.hpp.


Function Documentation

template<typename T >
static FORCEINLINE T* CallocT ( size_t  num_elements  )  [inline, static]

Simplified allocation function that allocates the specified number of elements of the given type.

It also explicitly casts it to the requested type.

Note:
throws an error when there is no memory anymore.
the memory contains all zero values.
Template Parameters:
T the type of the variable(s) to allocation.
Parameters:
num_elements the number of elements to allocate of the given type.
Returns:
NULL when num_elements == 0, non-NULL otherwise.

Definition at line 61 of file alloc_func.hpp.

References MallocError().

void NORETURN MallocError ( size_t  size  ) 

Function to exit with an error message after malloc() or calloc() have failed.

Parameters:
size number of bytes we tried to allocate

Definition at line 18 of file alloc_func.cpp.

References error().

Referenced by CallocT(), and MallocT().

template<typename T >
static FORCEINLINE T* MallocT ( size_t  num_elements  )  [inline, static]

Simplified allocation function that allocates the specified number of elements of the given type.

It also explicitly casts it to the requested type.

Note:
throws an error when there is no memory anymore.
the memory contains garbage data (i.e. possibly non-zero values).
Template Parameters:
T the type of the variable(s) to allocation.
Parameters:
num_elements the number of elements to allocate of the given type.
Returns:
NULL when num_elements == 0, non-NULL otherwise.

Definition at line 36 of file alloc_func.hpp.

References MallocError().

void NORETURN ReallocError ( size_t  size  ) 

Function to exit with an error message after realloc() have failed.

Parameters:
size number of bytes we tried to allocate

Definition at line 27 of file alloc_func.cpp.

References error().

Referenced by ReallocT().

template<typename T >
static FORCEINLINE T* ReallocT ( T *  t_ptr,
size_t  num_elements 
) [inline, static]

Simplified reallocation function that allocates the specified number of elements of the given type.

It also explicitly casts it to the requested type. It extends/shrinks the memory allocation given in t_ptr.

Note:
throws an error when there is no memory anymore.
the pointer to the data may change, but the data will remain valid.
Template Parameters:
T the type of the variable(s) to allocation.
Parameters:
t_ptr the previous allocation to extend/shrink.
num_elements the number of elements to allocate of the given type.
Returns:
NULL when num_elements == 0, non-NULL otherwise.

Definition at line 87 of file alloc_func.hpp.

References ReallocError().

Referenced by AllocateSpecToStation(), SmallVector< RefitOption, 32 >::Append(), SmallVector< RefitOption, 32 >::Compact(), DeallocateSpecFromStation(), DEFINE_NEWGRF_CLASS_METHOD(), GamelogChange(), GetNewEngine(), IniLoadFile::LoadFromDisk(), NetworkInitChatMessage(), NetworkReInitChatBoxSize(), SquirrelStd::require(), NetworkTCPSocketHandler::SendPacket(), and TranslateTTDPatchCodes().


Generated on Sun May 8 07:30:24 2011 for OpenTTD by  doxygen 1.6.1