/* ////////////////////////////////////////////////////////////////////// AI Debug main file ////////////////////////////////////////////////////////////////////// File Name : AID_Main.h Date : November 15, 1996 Author : Albert PAIS ////////////////////////////////////////////////////////////////////// Purpose : This file defines structures and prototypes used by differents components of the AI debugger ////////////////////////////////////////////////////////////////////// */ #if !defined(__AIDMAIN_TYPES__) #define __AIDMAIN_TYPES__ #if !defined(ONLY_TYPES) #define AIDMAIN_UNDEF #define ONLY_TYPES #endif /* !ONLY_TYPES */ /* ------------------------------------------------------------------------------------------ INCLUDE FILES : ------------------------------------------------------------------------------------------ */ #if defined(AIDMAIN_UNDEF) #undef ONLY_TYPES #undef AIDMAIN_UNDEF #endif /* !AIDMAIN_UNDEF */ /* ------------------------------------------------------------------------------------------ TYPE DECLARATION : ------------------------------------------------------------------------------------------ */ #endif /* !__AIDMAIN_TYPES__ */ #if !defined(ONLY_TYPES) #if !defined(__AIDMAIN_VARS__) #define __AIDMAIN_VARS__ #undef EXTERN #undef extern #if !defined(GLOBALS) #define EXTERN extern #else /* !GLOBALS */ #define EXTERN #endif /* !GLOBALS */ /* ------------------------------------------------------------------------------------------ VARIABLES DEFINITION : ------------------------------------------------------------------------------------------ */ #ifdef ACTIVE_AIDEBUG /* For AI debugger*/ #define AIDebug_C_ucIsReflex ((unsigned char)0) #define AIDebug_C_ucIsAI ((unsigned char)1) #endif /* ACTIVE_AIDEBUG For AI debugger*/ #endif /* !__AIDMAIN_VARS__ */ #if !defined (__AIDMAIN_PROTOS__) #define __AIDMAIN_PROTOS__ /* ------------------------------------------------------------------------------------------ MACROS DECLARATION: ------------------------------------------------------------------------------------------ */ #ifdef ACTIVE_AIDEBUG /* For AI debugger*/ /* getting a slot from a structure :*/ #define AIDebug_M_GetSlot(_p_stObject,_SlotName)\ ((_p_stObject)->m_##_SlotName) /* memory for AIDebug module :*/ #define AIDebug_M_xAlloc(_Var,_Type,_Size,_ErrorCode,_FailureDo)\ if(_Size)\ {\ Mmg_M_SetModeAlloc4Ch(AIDebug,E_ucDynamic,C_ucMmgDefaultChannel);\ _Var = (_Type)Mmg_fn_p_vAlloc4Ch(_Size,C_ucMmgDefaultChannel);\ if(Erm_M_uwCheckError(Mmg,C_ucErmDefaultChannel)) /*** DR Mmg instead of Mem ***/ \ {/* An error occured : initialisation failure*/ \ Erm_M_ClearLastError(C_ucErmDefaultChannel); \ Erm_M_UpdateLastError \ ( \ AIDebug, /* Module 's name*/ \ C_ucErmDefaultChannel, /*mutli-thread channel*/ \ _ErrorCode, /* error code */ \ C_lErmNoDebugData, /* long for debugging data */\ C_ucErmOpenInfoWindow, /* open window ?*/ \ C_ucAllowStopForDebug,/* wether to stop or not for debugging */\ NULL \ ); \ /* error ::*/ \ (_Var) = (_Type)NULL;\ _FailureDo;\ }\ } #define AIDebug_M_xReAlloc(_Var,_Type,_Size,_ErrorCode,_FailureDo)\ if(_Size)\ {\ Mmg_M_SetModeAlloc4Ch(AIDebug,E_ucDynamic,C_ucMmgDefaultChannel);\ _Var = (_Type)Mmg_fn_p_vRealloc4Ch((void*)(_Var),_Size,C_ucMmgDefaultChannel);\ if(Erm_M_uwCheckError(Mmg,C_ucErmDefaultChannel))\ {/* An error occured : initialisation failure*/ \ Erm_M_ClearLastError(C_ucErmDefaultChannel); \ Erm_M_UpdateLastError \ ( \ AIDebug, /* Module 's name*/ \ C_ucErmDefaultChannel, /*mutli-thread channel*/ \ _ErrorCode, /* error code */ \ C_lErmNoDebugData, /* long for debugging data */\ C_ucErmOpenInfoWindow, /* open window ?*/ \ C_ucAllowStopForDebug,/* wether to stop or not for debugging */\ NULL \ ); \ /* error ::*/ \ (_Var) = (_Type)NULL;\ _FailureDo;\ }\ } #define AIDebug_M_xFree(_Var,_Type,_ErrorCode,_FailureDo)\ if(_Var)\ {\ Mmg_M_SetModeAlloc4Ch(AIDebug,E_ucDynamic,C_ucMmgDefaultChannel);\ Mmg_fn_vFree4Ch((void*)(_Var),C_ucMmgDefaultChannel);\ (_Var) = (_Type)NULL;\ if(Erm_M_uwCheckError(Mmg,C_ucErmDefaultChannel))/*** DR Mmg instead of Mem ***/\ {\ /* handle error :*/\ Erm_M_ClearLastError(C_ucErmDefaultChannel);\ Erm_M_UpdateLastError\ (\ AIDebug, /* Module 's name*/\ C_ucErmDefaultChannel, /*mutli-thread channel*/\ _ErrorCode, /* error code */\ C_lErmNoDebugData, /* long for debugging data */\ C_ucErmOpenInfoWindow, /* open window ?*/\ C_ucAllowStopForDebug,/* wether to stop or not for debugging */\ NULL \ );\ _FailureDo;\ }\ } #define AIDebug_M_MainInitialisation()\ AIDebug_fnv_InitMain();\ if(Erm_M_uwCheckError(AIDebug,C_ucErmDefaultChannel))\ Erm_M_ClearLastError(C_ucErmDefaultChannel); /* ------------------------------------------------------------------------------------------ FUNCTIONS PROTOTYPES : ------------------------------------------------------------------------------------------ */ /* main initialisation function*/ void AIDebug_fnv_InitMain(void); #else /* ACTIVE_AIDEBUG For AI debugger*/ #define AIDebug_M_MainInitialisation() #endif /* ACTIVE_AIDEBUG For AI debugger*/ #endif /* !__AIDMAIN_PROTOS__ */ #endif /* !ONLY_TYPES */