/**
* @file nstdc_mem.h
* @brief メモリに関するモジュール
* @author Nomura Kei
* @copyright 2003 - 2017 Nomura Kei
* License: New BSD License (3-cclause BSD license)
*/
#ifndef NSTDC_MEM_H
#define NSTDC_MEM_H
#include <nstdc.h>
/**
* メモリの種別.
*/
typedef enum {
NSTDC_ALLOC_TYPE_ALLOC = 0xA6090000UL;
NSTDC_ALLOC_TYPE_ALLOC_NEW = 0xA609F001UL;
NSTDC_ALLOC_TYPE_ALLOC_NEW_ARRAY = 0xA609FF02UL;
NSTDC_ALLOC_TYPE_DELETED = 0xA609FFF3UL;
} NstdcAllocType;
/**
* メモリ管理情報.
*/
typedef struct MemoryInfoStruct {
struct MemoryInfoStruct* _prev;
struct MemoryInfoStruct* _next;
const char* filename; /**< メモリ確保ファイル名 */
int line; /**< メモリ確保行番号 */
const char* func; /**< メモリ確保関数 */
MemoryAllocType type; /**< メモリ種別 */
size_t size; /**< 確保したメモリサイズ */
void* data; /**< 確保したメモリ領域へのポインタ */
} MemoryInfo;
#if __cplusplus
extern "C" {
#endif
void nstdc_set_memhandler(void (*handler)(MemoryInfo* info));
#if __cplusplus
}
#endif
#endif /* NSTDC_MEM_H */