126 lines
3.9 KiB
C
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_*/
|
|
|