#if defined(_AI_LIB_) #include "AIUseCPA.h" #include "specif/AIOption.h" #include "AIMacros.h" #include "AI_Erm.h" #include "Convert.h" #include "EnumProc.h" #if defined(OPTIMIZED_COMMAND) #include "ProtProc.h" #endif #else #include #include "specif/AIOption.h" #include "ConvCst.h" #include "EnumProc.h" #include "ConvProc.h" #endif /* _AI_LIB_*/ #define C_MAX_SIZE_PROCEDURE_EDITOR_NAME 50 #define C_MAX_SIZE_PROCEDURE_SCRIPT_NAME 40 #define C_MAX_PROCEDURE_NB_PARAM 8/*Ylt passage de 6 à 8 arguments*/ typedef struct tdstProcedureEntry_ { #if defined(ACTIVE_EDITOR) /* Procedure string used in editor*/ char szProcedureEditorName[C_MAX_SIZE_PROCEDURE_EDITOR_NAME+1]; char szProcedureEditorName_En[C_MAX_SIZE_PROCEDURE_EDITOR_NAME+1]; #endif /* ACTIVE_EDITOR*/ #if defined (AI_USE_SCRIPT) /* Procedure string used in script*/ char szProcedureScriptName[C_MAX_SIZE_PROCEDURE_SCRIPT_NAME+1]; #endif /* AI_USE_SCRIPT */ #if defined(_AI_LIB_) /* pointer on Procedure function*/ tdp_fn_p_stProcedureFunctionPtr p_fn_p_stProcedureFunction; #endif #if defined (AI_USE_SCRIPT) || defined (U64_AIDEBUG) /* list of Procedure parameters (taken from szAutorizedTypeParam) in parameter*/ char szProcedureTypeParam[C_MAX_PROCEDURE_NB_PARAM+1]; #endif /* AI_USE_SCRIPT */ unsigned char bUltraProcedureFlag; #ifdef PROFILE_IA unsigned long ulCallCtr; unsigned long ulTimeCtr; unsigned long ulOwnTimeCtr; #endif /* PROFILE_IA*/ } tdstProcedureEntry; #ifdef PROFILE_IA extern unsigned long ulIndice; extern unsigned long p_ulTime[255]; extern FILE *file; #endif /* PROFILE_IA*/ tdstProcedureEntry a_stProcedureTable[eNbProcedure] #if defined(OPTIMIZED_COMMAND) = { #ifdef U64_AIDEBUG /* function pointers in Procedure.c, in params,ultra-able*/ #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { d,e,f }, #include "DefProc.h" } #else /* U64_AIDEBUG*/ #if defined (AI_USE_SCRIPT) /* Procedure initialisation*/ #if defined(_AI_LIB_) #if defined(ACTIVE_EDITOR) #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,c,d,e,f }, #else #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { c,d,e,f }, #endif /* ACTIVE_EDITOR*/ #else #if defined(ACTIVE_EDITOR) #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,c,e,f }, #else #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { c,e,f }, #endif /* ACTIVE_EDITOR*/ #endif /* _AI_LIB_*/ #include "DefProc.h" #undef M_DEFINE_PROCEDURE } #else /* AI_USE_SCRIPT */ /* Procedure initialisation*/ #if defined(_AI_LIB_) #if defined(ACTIVE_EDITOR) #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,d,f }, #else #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { d,f }, #endif /* ACTIVE_EDITOR*/ #else #if defined(ACTIVE_EDITOR) #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { b,english,f }, #else #define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) { f }, #endif /* ACTIVE_EDITOR*/ #endif /* _AI_LIB_*/ #include "DefProc.h" #undef M_DEFINE_PROCEDURE } #endif /* AI_USE_SCRIPT */ #endif /* U64_AIDEBUG*/ #endif /* OPTIMIZED_COMMAND*/ ; #if ! defined(OPTIMIZED_COMMAND) void fn_vSetProcedureUltraOperator(enum tdeProcedureId_ eProcId,unsigned char bFlag) { a_stProcedureTable[eProcId].bUltraProcedureFlag=bFlag; }; #endif /* OPTIMIZED_COMMAND*/ unsigned char fn_ucGetProcedureUltraOperator(enum tdeProcedureId_ eProcId) { return(a_stProcedureTable[eProcId].bUltraProcedureFlag); } #if defined(_AI_LIB_) tdp_fn_p_stProcedureFunctionPtr fn_p_fn_pGetProcedureFunctionPtr(enum tdeProcedureId_ eProcedureId) { return(a_stProcedureTable[eProcedureId].p_fn_p_stProcedureFunction); } #ifdef PROFILE_IA void fn_vProcSaveTime(unsigned long ulTime, enum tdeProcedureId_ eProcedureId) { /* if level != 0, then stop time count of last function*/ if (ulIndice != 0) { p_ulTime[ulIndice - 1] = (ulTime - p_ulTime[ulIndice - 1]); } /* set time for this new function and add indice*/ p_ulTime[ulIndice++] = ulTime; } void fn_vProcComputeTime(unsigned long ulCurrentTime, unsigned long ulTime, enum tdeProcedureId_ eProcedureId) { /* compute total time for this function*/ a_stProcedureTable[eProcedureId].ulCallCtr++; a_stProcedureTable[eProcedureId].ulTimeCtr += (ulCurrentTime - ulTime)/5; /* compute own time for this function*/ ulIndice--; /* compute the time for this function*/ a_stProcedureTable[eProcedureId].ulOwnTimeCtr += ((ulCurrentTime - p_ulTime[ulIndice]) / 5); p_ulTime[ulIndice] = 0; if (ulIndice != 0) { /* level != 0, then restart previous function time*/ p_ulTime[ulIndice-1] = ulCurrentTime - p_ulTime[ulIndice-1]; } } void dumpProc() { int i; char string[250]; strcpy(string,"x:\\cpa\\"); strcat(string,fn_p_szGetLevelName()); strcat(string,".txt"); file = fopen(string,"a+"); if (file == NULL) return; for (i=0;i<(long)eNbProcedure;i++) { if (a_stProcedureTable[i].ulCallCtr) { fprintf(file,"%s %i %i %i %i %i\n", a_stProcedureTable[i].szProcedureScriptName, a_stProcedureTable[i].ulCallCtr, a_stProcedureTable[i].ulTimeCtr, a_stProcedureTable[i].ulOwnTimeCtr, a_stProcedureTable[i].ulTimeCtr / a_stProcedureTable[i].ulCallCtr, a_stProcedureTable[i].ulOwnTimeCtr / a_stProcedureTable[i].ulCallCtr); } else { fprintf(file,"%s %i %i %i %i %i\n", a_stProcedureTable[i].szProcedureScriptName, 0, 0, 0, 0, 0); } } fclose(file); } void clearProc() { int i; for (i=0;i<(long)eNbProcedure;i++) { a_stProcedureTable[i].ulCallCtr = 0; a_stProcedureTable[i].ulTimeCtr = 0; a_stProcedureTable[i].ulOwnTimeCtr = 0; } } #endif /* PROFILE_IA*/ #endif /* _AI_LIB_*/ #ifndef _FIRE_DEADCODE_U64_ /* Added by RUC */ enum tdeProcedureId_ fn_eGetNbProcedure() { return(eNbProcedure); } #endif /* _FIRE_DEADCODE_U64_ */ /* Added by RUC */ #if defined(__DEBUG_AI__) || defined(ACTIVE_EDITOR) || defined(U64_AIDEBUG) char *szGetProcedureTypeInParamFromId(enum tdeProcedureId_ eProcedureId) { return(a_stProcedureTable[eProcedureId].szProcedureTypeParam); } #endif /* __DEBUG_AI__ ACTIVE_EDITOR*/ #if defined(ACTIVE_EDITOR) char *szGetProcedureTypeOutParamFromId(enum tdeProcedureId_ eProcedureId) { eProcedureId=eProcedureId; return(USE_NO_PARAM); } enum tdeProcedureId_ fn_eFindProcedureIdFromEditorName(char *szProcedure) { short wProcedureEntry; for(wProcedureEntry=0;wProcedureEntrylMaxLengthScriptName) { lMaxLengthScriptName=lLen; } #if defined(ACTIVE_EDITOR) if ((lLen=strlen(a_stProcedureTable[wProcedureEntry].szProcedureEditorName))>lMaxLengthEditorName) { lMaxLengthEditorName=lLen; } #endif /* ACTIVE_EDITOR*/ if ((lLen=strlen(a_stProcedureTable[wProcedureEntry].szProcedureTypeParam))>lMaxLengthParam) { lMaxLengthParam=lLen; } } #if !defined(U64) { if (lMaxLengthScriptName