46 lines
1.2 KiB
Text
46 lines
1.2 KiB
Text
|
#ifndef __MEMORY_H
|
||
|
#define __MEMORY_H
|
||
|
|
||
|
#include <stdio.h>
|
||
|
#include <stdlib.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
int count;
|
||
|
int size;
|
||
|
} MemoryHeader;
|
||
|
/*******************************************************************************
|
||
|
** ItemSize
|
||
|
*******************************************************************************/
|
||
|
inline int
|
||
|
ItemSize(void* memory)
|
||
|
{
|
||
|
return memory ? ((MemoryHeader*)memory)[-1].size : 0;
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
** NumberOf
|
||
|
*******************************************************************************/
|
||
|
inline int
|
||
|
NumberOf(void* memory)
|
||
|
{
|
||
|
return memory ? ((MemoryHeader*)memory)[-1].count : 0;
|
||
|
}
|
||
|
/*******************************************************************************
|
||
|
** MemorySize
|
||
|
*******************************************************************************/
|
||
|
inline int
|
||
|
MemorySize(void* memory)
|
||
|
{
|
||
|
return ItemSize(memory) * NumberOf(memory);
|
||
|
}
|
||
|
|
||
|
void* MemoryRealloc(void*, int, int);
|
||
|
void* MemoryAlloc(int count, int size);
|
||
|
void MemoryFree(void*);
|
||
|
void MemoryWrite(void*, FILE*);
|
||
|
void MemoryWrite(void*, int, int, FILE*);
|
||
|
void* MemoryRead(FILE*);
|
||
|
|
||
|
#endif
|