# mem_func.hpp File Reference

Functions related to memory operations. More...

`#include <string.h>`
`#include "math_func.hpp"`

Go to the source code of this file.

## Functions
template<typename T>
static FORCEINLINE void | MemCpyT (T *destination, const T *source, size_t num=1)
| Type-safe version of memcpy().
template<typename T>
static FORCEINLINE void | MemMoveT (T *destination, const T *source, size_t num=1)
| Type-safe version of memmove().
template<typename T>
static FORCEINLINE void | MemSetT (T *ptr, byte value, size_t num=1)
| Type-safe version of memset().
template<typename T>
static FORCEINLINE int | MemCmpT (const T *ptr1, const T *ptr2, size_t num=1)
| Type-safe version of memcmp().
template<typename T>
static FORCEINLINE void | MemReverseT (T *ptr1, T *ptr2)
| Type safe memory reverse operation.
template<typename T>
static FORCEINLINE void | MemReverseT (T *ptr, size_t num)
| Type safe memory reverse operation (overloaded).

## Detailed Description

Functions related to memory operations.

Definition in file mem_func.hpp.

## Function Documentation

template<typename T>

static FORCEINLINE int MemCmpT | ( | const T * | ptr1,
|  | const T * | ptr2,
|  | size_t | num = `1` |
| ) |  |  | `[inline, static]`

Type-safe version of memcmp().

Parameters:

  | ptr1 | Pointer to the first buffer
  | ptr2 | Pointer to the second buffer
  | num | Number of items to compare. (!not number of bytes!)

Returns:
  an int value indicating the relationship between the content of the two buffers

Definition at line 66 of file mem_func.hpp.

template<typename T>

static FORCEINLINE void MemCpyT | ( | T * | destination,
|  | const T * | source,
|  | size_t | num = `1` |
| ) |  |  | `[inline, static]`

Type-safe version of memcpy().

Parameters:

  | destination | Pointer to the destination buffer
  | source | Pointer to the source buffer
  | num | number of items to be copied. (!not number of bytes!)

Definition at line 26 of file mem_func.hpp.

Referenced by TownHouseChangeInfo().

template<typename T>

static FORCEINLINE void MemMoveT | ( | T * | destination,
|  | const T * | source,
|  | size_t | num = `1` |
| ) |  |  | `[inline, static]`

Type-safe version of memmove().

Parameters:

  | destination | Pointer to the destination buffer
  | source | Pointer to the source buffer
  | num | number of items to be copied. (!not number of bytes!)

Definition at line 39 of file mem_func.hpp.

template<typename T>

static FORCEINLINE void MemReverseT | ( | T * | ptr,
|  | size_t | num |
| ) |  |  | `[inline, static]`

Type safe memory reverse operation (overloaded).

Parameters:

  | ptr | Pointer to the block of memory.
  | num | The number of items we want to reverse.

Definition at line 97 of file mem_func.hpp.

References MemReverseT().

template<typename T>

static FORCEINLINE void MemReverseT | ( | T * | ptr1,
|  | T * | ptr2 |
| ) |  |  | `[inline, static]`

Type safe memory reverse operation.

Reverse a block of memory in steps given by the type of the pointers.

Parameters:

  | ptr1 | Start-pointer to the block of memory.
  | ptr2 | End-pointer to the block of memory.

Definition at line 80 of file mem_func.hpp.

References Swap().

Referenced by MemReverseT(), QSortT(), and GUIList< const Industry * >::ToggleSortOrder().

template<typename T>

static FORCEINLINE void MemSetT | ( | T * | ptr,
|  | byte | value,
|  | size_t | num = `1` |
| ) |  |  | `[inline, static]`

Type-safe version of memset().

Parameters:

  | ptr | Pointer to the destination buffer
  | value | Value to be set
  | num | number of items to be set (!not number of bytes!)

Definition at line 52 of file mem_func.hpp.

Referenced by IniFile::SaveToDisk().