reman3/Rayman_X/cpa/public/GEO/MMGGEO.h

223 lines
7.0 KiB
C

/*****************************************
// //
// Management of the Module : GEO //
// //
// File Name : MmgGEO.h //
// Date : 03/02/97 //
// Author : Philippe Vimont //
// //
*****************************************/
#ifndef __GEO_MMGGEO_H__
#define __GEO_MMGGEO_H__
/*#include <malloc.h>*/
#ifdef __cplusplus
extern "C" {
#endif
#include "ERM.h"
#include "MMG.h"
#include "errgeo.h"
#include "TMP.h"
#ifdef U64
#include "GLD/Specif/DisplMsg.h"
#include "ZeMem.h"
#endif
/* For DLLs who are using this module : */
#undef CPA_EXPORT
#if defined(CPA_WANTS_IMPORT)
#define CPA_EXPORT __declspec(dllimport)
#elif defined(CPA_WANTS_EXPORT)
#define CPA_EXPORT __declspec(dllexport)
#else
#define CPA_EXPORT
#endif
typedef enum e_ucGEOStaticBlocks_{
E_ucGEOBlock1,
E_ucGEOBlock2,
E_ucGEOBlock3,
E_ucGEOBlock4,
//XB 16/06/99
E_ucGEOBlock5,
//End XB 16/06/99
E_ucGEOMaxBlocksNb /* maximum number of static block, You have to follow this syntax 'E_uc+ Abbreviation Module +MaxBlocksNb' */
} e_ucGEOStaticBlocks;
#undef __MMGGEO_EXTERN
#ifndef __DeclareGlobalVariableMmgGEO_h__
#define __MMGGEO_EXTERN extern /*external declaration*/
#else /*__DeclareGlobalVariableErrGEO_h__*/
#define __MMGGEO_EXTERN /*replace by nothing : we have to declare*/
#endif /*__DeclareGlobalVariableErrGEO_h__*/
__MMGGEO_EXTERN CPA_EXPORT unsigned char g_ucGEOMMemMallocMode /*number of identification of the Erm module*/
#if defined(__DeclareGlobalVariableMmgGEO_h__) && !defined(CPA_WANTS_IMPORT)
= E_ucDynamic
#endif /*__DeclareGlobalVariableErrGEO_h__&& CPA_WANTS_IMPORT*/
;
__MMGGEO_EXTERN CPA_EXPORT unsigned char GEO_g_bDynamicAllocation;
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
__MMGGEO_EXTERN CPA_EXPORT struct tdstBlockInfo_ GEO_g_stMyBlockInfo;
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
#ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */
__MMGGEO_EXTERN CPA_EXPORT struct tdstBlockInfo_ g_a_stGEOBlocksInfo[E_ucGEOMaxBlocksNb];
#endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */
#ifdef __DYNAMIC_MALLOC_ALLOWED__
#ifdef __DEBUG_MALLOC_MODE__
__MMGGEO_EXTERN CPA_EXPORT struct tdstDynInfo_ g_stGEODynInfo;
#endif /*__DEBUG_MALLOC_MODE__*/
#endif /*__DYNAMIC_MALLOC_ALLOWED__*/
#define GEO_C_ActionMalloc 0
#define GEO_C_ActionRealloc 1
#define GEO_C_ActionFree 2
#define GEO_C_CanNotUseDynamic 0
#define GEO_C_CanUseDynamic 1
#define GEO_C_UseDynamic 2
#define M_GEOInitMem() Mmg_M_SetModeAlloc4Ch( GEO , g_ucGEOMMemMallocMode ,C_ucMmgDefaultChannel)
/* XB
#define GEO_M_CPAMallocAlign8( Var, cast, ulSize, error) \
{\
if ( (ulSize)!=0 )\
{\
Mmg_M_SetModeAlloc4Ch( GEO , g_ucGEOMMemMallocMode+2,C_ucMmgDefaultChannel); \
(Var) = (cast)Mmg_fn_p_vAlloc4Ch(ulSize,C_ucMmgDefaultChannel);\
memset(Var,0,ulSize);\
}\
}
*/
#if !defined(U64)
#define GEO_M_CPAMalloc( Var, cast, ulSize, error) \
{\
if ( (ulSize)!=0 )\
{\
if (GEO_g_bDynamicAllocation!=GEO_C_UseDynamic)\
{\
M_GEOInitMem();\
(Var) = (cast)Mmg_fn_p_vAlloc4Ch(ulSize,C_ucMmgDefaultChannel);\
}\
if (GEO_g_bDynamicAllocation==GEO_C_UseDynamic||(GEO_g_bDynamicAllocation==GEO_C_CanUseDynamic&&(Var)==NULL))\
{\
Erm_M_ClearLastError ( C_ucErmDefaultChannel );\
if (GEO_g_bDynamicAllocation==GEO_C_CanUseDynamic)\
{\
Erm_M_UpdateLastError( GEO, C_ucErmDefaultChannel,E_uwGEODebugDynamicAllocation, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL);\
Erm_M_ClearLastError ( C_ucErmDefaultChannel );\
GEO_g_bDynamicAllocation=GEO_C_UseDynamic;\
}\
Mmg_M_SetModeAlloc4Ch( GEO , E_ucDynamic , C_ucMmgDefaultChannel);\
(Var) = (cast)Mmg_fn_p_vAlloc4Ch(ulSize,C_ucMmgDefaultChannel);\
}\
if ((Var) == NULL)\
{\
Erm_M_ClearLastError ( C_ucErmDefaultChannel );\
Erm_M_UpdateLastError( GEO, C_ucErmDefaultChannel, (error), C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL);\
}\
memset((Var),0,ulSize);\
GEO_fn_vMemoryLogFile((Var),GEO_C_ActionMalloc,__FILE__,__LINE__,ulSize); \
}\
}
#define GEO_M_CPARealloc( Var, OldVar, cast, ulSize, error) \
{\
if ( (ulSize)!=0 )\
{\
M_GEOInitMem();\
(Var) = (cast)Mmg_fn_p_vRealloc4Ch(OldVar,ulSize,C_ucMmgDefaultChannel);\
if (GEO_g_bDynamicAllocation==GEO_C_UseDynamic||(GEO_g_bDynamicAllocation==GEO_C_CanUseDynamic&&(Var)==NULL))\
{\
Erm_M_ClearLastError ( C_ucErmDefaultChannel );\
if (GEO_g_bDynamicAllocation==GEO_C_CanUseDynamic)\
{\
Erm_M_UpdateLastError( GEO, C_ucErmDefaultChannel,E_uwGEODebugDynamicAllocation, C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL);\
Erm_M_ClearLastError ( C_ucErmDefaultChannel );\
GEO_g_bDynamicAllocation=GEO_C_UseDynamic;\
}\
GEO_M_CPAMalloc( (Var), cast, (ulSize), (error));\
memcpy((Var),(OldVar),(ulSize));\
GEO_M_CPAFree((OldVar));\
}\
if ((Var)==NULL)\
{\
Erm_M_ClearLastError ( C_ucErmDefaultChannel );\
Erm_M_UpdateLastError( GEO, C_ucErmDefaultChannel, (error), C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL );\
}\
GEO_fn_vMemoryLogFile((Var),GEO_C_ActionRealloc,__FILE__,__LINE__,ulSize); \
}\
}
#define GEO_M_CPAFree( Var ) \
{\
M_GEOInitMem();\
GEO_fn_vMemoryLogFile((Var),GEO_C_ActionFree,__FILE__,__LINE__,0); \
if (GEO_g_bDynamicAllocation!=GEO_C_CanNotUseDynamic)\
{\
Mmg_fn_vGiveInformationBlock(Erm_M_ucGiveModuleId(GEO),(unsigned char)g_ucGEOMMemMallocMode,&GEO_g_stMyBlockInfo);\
if ((void*)(Var)<(void*)GEO_g_stMyBlockInfo.p_cBeginBlock||(void*)(Var)>(void*)GEO_g_stMyBlockInfo.p_cEndBlock)\
Mmg_M_SetModeAlloc4Ch(GEO,E_ucDynamic,C_ucMmgDefaultChannel);\
}\
Mmg_fn_vFree4Ch((void*)(Var),C_ucMmgDefaultChannel);\
if ( Erm_M_uwCheckError(Mmg, C_ucErmDefaultChannel) )\
{\
Erm_M_ClearLastError(C_ucErmDefaultChannel);\
Erm_M_UpdateLastError(GEO, C_ucErmDefaultChannel, E_uwGEOCanNotFree , C_lErmNoDebugData, C_ucErmOpenInfoWindow, C_ucAllowStopForDebug, NULL);\
}\
(Var) = NULL;\
}
#else /* U64 */
/* XB 22/06/99 */
void *GEO_fn_pvMalloc(unsigned long _ulSize);
#define GEO_M_CPAMalloc( Var, cast, ulSize, error) Var=(cast)GEO_fn_pvMalloc(ulSize);
void *GEO_fn_pvMallocAlign8(unsigned long _ulSize);
#define GEO_M_CPAMallocAlign8( Var, cast, ulSize, error) Var=(cast)GEO_fn_pvMallocAlign8(ulSize);
void *GEO_fn_pvMallocLDD(unsigned long _ulSize);
#define GEO_M_CPAMallocLDD( Var, cast, ulSize, error) Var=(cast)GEO_fn_pvMallocLDD(ulSize);
/* End XB 22/06/99 */
#endif /* U64 */
#define GEO_M_ucGetMemMallocMode() (g_ucGEOMMemMallocMode)
/*#define GEO_M_CPAMalloc( Var, cast, ulSize, error) \
Var = (cast)malloc(ulSize);
#define GEO_M_CPARealloc( Var, OldVar, cast, ulSize, error) \
Var = (cast)realloc(ulSize);\
memset(Var,0,ulSize);
#define GEO_M_CPAFree( Var ) \
free ((void*)var);\*/
/* ANNECY - MT 11/05/98 {*/
#define GEO_M_TMPMalloc(Var,cast,Size) (Var) = (cast) TMP_M_p_Malloc( Size )
#define GEO_M_TMPFree(Var) TMP_M_Free( Var )
/* END ANNECY MT }*/
#ifdef __cplusplus
};
#endif /* __cplusplus */
#endif /* __MMGGEO_H__*/