pmd-red/include/memory.h
2025-12-18 07:14:45 -05:00

44 lines
1.2 KiB
C

#ifndef GUARD_MEMORY_H
#define GUARD_MEMORY_H
enum MemAllocGroup
{
// Only used for the Title Menu file
MEMALLOC_GROUP_0,
// Used for quicksave and save
MEMALLOC_GROUP_5 = 5,
// Used for "ground" and script files?
MEMALLOC_GROUP_6,
// Used for the dungeon loading?
MEMALLOC_GROUP_7,
// Used for menus and credits?
MEMALLOC_GROUP_8,
// Used for "effect" files?
MEMALLOC_GROUP_11 = 11,
// Only used for dungeon mon sprites
MEMALLOC_GROUP_12,
};
void InitHeap(void);
void MemoryClear8(void *dest, s32 size);
void MemoryClear16(u16 *dest, s32 size);
void MemoryFill8(void *dest, u8 value, s32 size);
void MemoryFill16(u16 *dest, u16 value, s32 size);
void MemoryCopy8(void *dest, const void *src, s32 size);
void MemoryCopy32(u32 *dest, const u32 *src, s32 size);
// group: See enum "MemAllocGroup"
void *MemoryAlloc(s32 size, s32 group);
void MemoryFree(void *a);
#define FREE_AND_SET_NULL(ptr) \
{ \
MemoryFree(ptr); \
ptr = NULL; \
}
#define TRY_FREE_AND_SET_NULL(ptr) if (ptr != NULL) FREE_AND_SET_NULL(ptr)
#endif // GUARD_MEMORY_H