/*========================================================================= * * Zooload.c - loading functions for ZOO file * * Version 1.0 * Revision date * *=======================================================================*/ #include "ZooLoad.h" #include "conventi.h" //--- Global statics -------------------------------------------------------- int gs_iNb=0; //-------------------------------------------------------------------- /**************************************************************************** * Description: register the loading function for the ZOO file * * Parameters: *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ void MLT_vInitZOOLoad() { SCR_fn_v_RdL0_RegisterCallback(M_CS, MLT_xLoadCS,SCR_CRC_c_RdL0_ForSection); SCR_fn_v_RdL0_RegisterCallback(M_AllCollideSets, MLT_xLoadAllCollideSets,SCR_CRC_c_RdL0_ForSection); gs_iNb = 0; } /**************************************************************************** * Description: load AllCollideSets section in ZOO file * * Parameters: p_stFile : script file pointer * szAction : section or entry name * szParams : parameters * cType : action type *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ SCR_tde_Anl_ReturnValue MLT_xLoadAllCollideSets(SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType) { MLT_tdstZoo *p_stZoo; switch (cType) { case SCR_EA_Anl_BeginSection: p_stZoo = (MLT_tdstZoo*)calloc(1,sizeof(MLT_tdstZoo)); SCR_M_RdL0_SetSectionLong(0,0,(unsigned long)p_stZoo); SCR_M_RdL0_SetContextLong(0,0,(unsigned long)p_stZoo); break; case SCR_EA_Anl_Entry: break; case SCR_EA_Anl_EndSection: break; } return SCR_ERV_Anl_NormalReturn; } /**************************************************************************** * Description: load CS sub-section in ZOO file * * Parameters: p_stFile : script file pointer * szAction : section or entry name * szParams : parameters * cType : action type *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ SCR_tde_Anl_ReturnValue MLT_xLoadCS(SCR_tdst_File_Description *p_fFile, char *szAction, char *szParams[], SCR_tde_Anl_Action cType) { MLT_tdstZoo *p_stZoo; xString sFile, sAction, sIdent; switch (cType) { case SCR_EA_Anl_BeginSection: SCR_M_RdL0_GetContextLong(-1,0,MLT_tdstZoo*,p_stZoo); SCR_fn_v_RdL0_SplitSectionName(SCR_M_RdL0_GetCompleteSectionNameR(0), sFile, sAction, sIdent); if (!MLT_bExistIn(p_stZoo->sCS, sIdent)) strcpy(p_stZoo->sCS[gs_iNb], sIdent); strcpy(p_stZoo->sZDR[gs_iNb], ""); strcpy(p_stZoo->sZDM[gs_iNb], ""); strcpy(p_stZoo->sZDE[gs_iNb], ""); strcpy(p_stZoo->sZDD[gs_iNb], ""); gs_iNb++; break; case SCR_EA_Anl_Entry: SCR_M_RdL0_GetContextLong(-1,0,MLT_tdstZoo*,p_stZoo); if (strcmp(szAction,M_ZOOActionZDR)==0) { strcpy(p_stZoo->sZDR[gs_iNb-1], szParams[0]); } if (strcmp(szAction,M_ZOOActionZDM)==0) { strcpy(p_stZoo->sZDM[gs_iNb-1], szParams[0]); } if (strcmp(szAction,M_ZOOActionZDE)==0) { strcpy(p_stZoo->sZDE[gs_iNb-1], szParams[0]); } if (strcmp(szAction,M_ZOOActionZDD)==0) { strcpy(p_stZoo->sZDD[gs_iNb-1], szParams[0]); } break; case SCR_EA_Anl_EndSection: break; } return SCR_ERV_Anl_NormalReturn; } /**************************************************************************** * Description: search given zone in the array * * Parameters: p_sArray : array of existing zones * sIdent1 : zone to search for *--------------------------------------------------------------------------- * Revision date: Author: *****************************************************************************/ BOOL MLT_bExistIn (xString *p_sArray, xString sIdent1) { int i; for (i=0; isCS[i])) return i; } return -1; }