reman3/Rayman_X/cpa/public/MRC/MACROMRC.H

126 lines
3.9 KiB
C

/*////////////////////////////////////////////////////////////////*/
/**/
/* Interface between MRC BigFile module and the ERM and MMG modules*/
/* Yan Marchal, 97/07/21*/
/**/
/*////////////////////////////////////////////////////////////////*/
#ifndef _MACROMRC_H_
#define _MACROMRC_H_
/*////////////////////////////////////////////////////////////////*/
/**/
/* With the ERM module*/
/**/
/*////////////////////////////////////////////////////////////////*/
#include "ErrMrc.h"
/* To display an error message*/
#define M_MrcError(_ucError) \
{\
Erm_M_ClearLastError(C_ucErmDefaultChannel);\
Erm_M_UpdateLastError(Mrc, C_ucErmDefaultChannel, _ucError, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL);\
}
/*////////////////////////////////////////////////////////////////*/
/**/
/* With the MMG module, to deal with blocks and modes of allocation*/
/**/
/*////////////////////////////////////////////////////////////////*/
#include "MmgMrc.h"
/* To initialize a static block of memory*/
/* (4 entries to fill the block)*/
#define M_MrcInitBlock(_ucMode, _ulSize) \
{\
Mmg_M_InitBlock(Mrc, _ucMode, _ulSize+16);\
if (Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel)){\
M_MrcError(E_uwMrcWarningCanNotInitBlock);\
}\
}
/* To reinitialize a static block of memory*/
#define M_MrcReinitBlock(_ucMode) \
{\
Mmg_M_FreeBlock(Mrc, _ucMode);\
if (Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel)){\
M_MrcError(E_uwMrcWarningCanNotFreeBlock);\
}\
}
/* To delete a static block of memory*/
#define M_MrcDeleteBlock(_ucMode) \
{\
Mmg_M_DeleteBlock(Mrc, _ucMode);\
if (Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel)){\
M_MrcError(E_uwMrcWarningCanNotDeleteBlock);\
}\
}
/* To know if a static block of memory is being used*/
#define M_MrcBlockIsInUse(_ucMode) \
(g_a_stMrcBlocksInfo[_ucMode].p_cBeginBlock!=NULL)
/* To set the current block or mode of allocation*/
#define M_MrcSetModeAlloc(_ucMode) \
Mmg_M_SetModeAlloc4Ch(Mrc, _ucMode, C_ucMmgDefaultChannel)
/*////////////////////////////////////////////////////////////////*/
/**/
/* With the MMG module, to allocate, reallocate and free memory*/
/**/
/*////////////////////////////////////////////////////////////////*/
/* To allocate memory in the current block or mode*/
#define M_MrcAllocWithoutSetMode(_xVar, _cast, _ulSize)\
{\
_xVar = (_cast) Mmg_fn_p_vAlloc4Ch(_ulSize, C_ucMmgDefaultChannel);\
if (Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel)){\
M_MrcError(E_uwMrcWarningCanNotAlloc);\
}\
}
/* To allocate memory in a given block or mode*/
#define M_MrcAlloc(_ucMode, _xVar, _cast, _ulSize)\
{\
M_MrcSetModeAlloc(_ucMode);\
M_MrcAllocWithoutSetMode(_xVar, _cast, _ulSize);\
}
/* To reallocate memory in the current block or mode*/
#define M_MrcReallocWithoutSetMode(_xVar, _pAdrSrc, _cast, _ulSize)\
{\
_xVar = (_cast) Mmg_fn_p_vRealloc4Ch(_pAdrSrc, _ulSize, C_ucMmgDefaultChannel);\
if (Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel)){\
M_MrcError(E_uwMrcWarningCanNotAlloc);\
}\
}
/* To reallocate memory in a given block or mode*/
#define M_MrcRealloc(_ucMode, _xVar, _pAdrSrc, _cast, _ulSize)\
{\
M_MrcSetModeAlloc(_ucMode);\
M_MrcReallocWithoutSetMode(_xVar, _pAdrSrc, _cast, _ulSize);\
}
/* To free memory from the current block or mode*/
#define M_MrcFreeWithoutSetMode(_pAdr) \
{\
Mmg_fn_vFree4Ch(_pAdr, C_ucMmgDefaultChannel);\
if (Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel)){\
M_MrcError(E_uwMrcWarningCanNotFree);\
}\
}
/* To free memory from a given block or mode*/
#define M_MrcFree(_ucMode, _pAdr) \
{\
M_MrcSetModeAlloc(_ucMode);\
M_MrcFreeWithoutSetMode(_pAdr);\
}
#endif /* _MACROMRC_H_*/