572 lines
16 KiB
C
572 lines
16 KiB
C
/*---------------------------------------------------------------------------*/
|
||
/* Convert.c : Convert Id <-> string (mainly usefull for editor)*/
|
||
/* creation : 17/01/1997 (Olivier Couvreur)*/
|
||
/* modify : 29/01/1997 (Fabien Morales) Vertex param*/
|
||
/* modify : 31/01/1997 (Olivier Couvreur) lint verification*/
|
||
/* modify : 12/02/1997 (Fabien Morales) Module & DsgVarId param types*/
|
||
/* modify : 19/02/1997 (Olivier Couvreur) types checking functions (for editor)*/
|
||
/* modify : 26/02/1997 (Olivier Couvreur) new functions for editor type checking */
|
||
/* modify : 11/03/1997 (Olivier Couvreur) functions for editor transfered from several modules*/
|
||
/* modify : 25/03/1997 (Olivier Couvreur) ACTIVE_EDITOR support*/
|
||
/* modify : 21/05/1997 (Olivier Couvreur) HitPoints support*/
|
||
/* modify : 27/05/1997 (Olivier Couvreur) ZDD + ZDE stuff*/
|
||
/* modify : 27/06/1997 (Olivier Couvreur) Operators,Functions,Procedures,Conditions use functions pointers !*/
|
||
/*---------------------------------------------------------------------------*/
|
||
#include "AIUseCPA.h"
|
||
|
||
#include "specif/AIOption.h"
|
||
#include "AIMacros.h"
|
||
#include "AI_Erm.h"
|
||
|
||
#include "GsParam.h"
|
||
|
||
/* so that exported functions are effectively exported !*/
|
||
#include "Convert.h"
|
||
|
||
#if defined(ACTIVE_EDITOR)
|
||
#include "specif/ActTable.h"
|
||
#endif /* ACTIVE_EDITOR*/
|
||
|
||
#if !defined(OPTIMIZED_COMMAND)
|
||
/**********************************************************************/
|
||
/* list of all allowed char for defining types*/
|
||
char szAutorizedTypeParam[]= \
|
||
C_LONG_PARAM \
|
||
C_REAL_PARAM \
|
||
C_PERSO_PARAM \
|
||
C_VECTOR_PARAM \
|
||
C_MODULE_PARAM \
|
||
C_WAYPOINT_PARAM \
|
||
C_LIST_PARAM \
|
||
C_BOOLEAN_PARAM \
|
||
C_ACTION_PARAM \
|
||
C_ZDE_PERSO_PARAM \
|
||
C_ZDD_PERSO_PARAM \
|
||
C_ZDM_PERSO_PARAM \
|
||
C_ZDE_MODULE_PARAM \
|
||
C_ZDD_MODULE_PARAM \
|
||
C_BUTTON_PARAM \
|
||
C_STRING_PARAM \
|
||
C_MAP_PARAM \
|
||
C_MASK_PARAM \
|
||
C_MASK_PARAM \
|
||
C_SURFACE_PARAM \
|
||
C_LIPSYNCHRO_PARAM \
|
||
C_OBJECTTABLE_PARAM \
|
||
C_SECTOR_PARAM \
|
||
C_ENV_PARAM \
|
||
C_FAMILY_PARAM \
|
||
C_COMPORT_PARAM \
|
||
C_MY_REFLEX_COMPORT_PARAM \
|
||
C_MY_INTELL_COMPORT_PARAM \
|
||
C_REFLEX_COMPORT_PARAM \
|
||
C_INTELL_COMPORT_PARAM \
|
||
C_SOUNDEVENT_PARAM \
|
||
C_ALWAYS_PARAM \
|
||
C_POWER_PARAM \
|
||
C_PERSO_PARAM_ONLY \
|
||
C_FONT_PARAM \
|
||
C_TEXT_PARAM \
|
||
C_PARTICLEGENERATOR_PARAM \
|
||
C_GMT_PARAM \
|
||
C_MODEL_PARAM \
|
||
C_ARRAY_PARAM \
|
||
C_SUPEROBJECT_PARAM \
|
||
/*ANNECY CT 22/01/98 {*/
|
||
C_LIGHT_PARAM \
|
||
/*ENANNECY CT}*/
|
||
/*ANNECY Bart 02/02/98 {*/
|
||
C_CAPS_PARAM \
|
||
C_GRAPH_PARAM \
|
||
/*ENDANNECY Bart }*/
|
||
C_ZDR_PERSO_PARAM
|
||
;
|
||
|
||
/* return a pointer on a string containing all valid chars to define types*/
|
||
char *fn_szGetAutorizedTypeParam(void)
|
||
{
|
||
return (&szAutorizedTypeParam[0]);
|
||
}
|
||
|
||
/* check if a string contains only valid chars*/
|
||
unsigned char fn_ucCheckTypeParam(char *szTypeParam)
|
||
{
|
||
unsigned char Ok=0;
|
||
|
||
if (strlen(szTypeParam)<=C_MAX_NB_PARAM)
|
||
{
|
||
unsigned char i;
|
||
Ok=1;
|
||
for (i=0;((i<strlen(szTypeParam)) && (Ok==1));i++)
|
||
{
|
||
Ok=(unsigned char) (strchr(fn_szGetAutorizedTypeParam(),toupper(szTypeParam[i]))!=NULL);
|
||
}
|
||
}
|
||
|
||
if (!Ok)
|
||
{
|
||
M_AIFatalError(E_uwAIFatalWrongParamAction);
|
||
}
|
||
return(Ok);
|
||
}
|
||
#endif /* !OPTIMIZED_COMMAND*/
|
||
|
||
|
||
/**********************************************************************/
|
||
|
||
|
||
#if defined(ACTIVE_EDITOR)
|
||
/* check if two types are compatible*/
|
||
/* c1=c2*/
|
||
/* c1=toupper(c2)*/
|
||
/* l|l*/
|
||
/* L|l,L*/
|
||
/* x|x,l*/
|
||
/* X|l,L,x,X*/
|
||
/* Perso_Only=Perso*/
|
||
/* My_XX=XX (where XX is rul or rfx)*/
|
||
ACP_tdxBool fn_bIsCompatibleType(char c1,char c2)
|
||
{
|
||
if ((c1==c2) || (c1==(char) toupper(c2)) )
|
||
{
|
||
return(TRUE);
|
||
}
|
||
else if
|
||
(
|
||
(toupper(c1)==STRING1_TO_CHAR(C_REAL_PARAM)) &&
|
||
(toupper(c2)==STRING1_TO_CHAR(C_LONG_PARAM))
|
||
)
|
||
{
|
||
if(
|
||
(c1==STRING1_TO_CHAR(C_REAL_PARAM)) ||
|
||
(c2==STRING1_TO_CHAR(C_ADDR_LONG_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
}
|
||
else if
|
||
(
|
||
(c1==STRING1_TO_CHAR(C_PERSO_PARAM_ONLY)) &&
|
||
(c2==STRING1_TO_CHAR(C_PERSO_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
else if
|
||
(
|
||
(c1==STRING1_TO_CHAR(C_REFLEX_COMPORT_PARAM)) &&
|
||
(c2==STRING1_TO_CHAR(C_MY_REFLEX_COMPORT_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
else if
|
||
(
|
||
(c1==STRING1_TO_CHAR(C_INTELL_COMPORT_PARAM)) &&
|
||
(c2==STRING1_TO_CHAR(C_MY_INTELL_COMPORT_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
else if
|
||
(
|
||
(toupper(c2)==STRING1_TO_CHAR(C_COMPORT_PARAM)) &&
|
||
(
|
||
(c1==STRING1_TO_CHAR(C_INTELL_COMPORT_PARAM)) ||
|
||
(c1==STRING1_TO_CHAR(C_MY_INTELL_COMPORT_PARAM)) ||
|
||
(c1==STRING1_TO_CHAR(C_REFLEX_COMPORT_PARAM)) ||
|
||
(c1==STRING1_TO_CHAR(C_MY_REFLEX_COMPORT_PARAM))
|
||
)
|
||
)
|
||
{
|
||
return(TRUE);
|
||
}
|
||
else if
|
||
(
|
||
(toupper(c1)==STRING1_TO_CHAR(C_STRING_PARAM)) &&
|
||
(toupper(c2)==STRING1_TO_CHAR(C_TEXT_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
else if
|
||
(
|
||
(toupper(c1)==STRING1_TO_CHAR(C_TEXT_PARAM)) &&
|
||
(toupper(c2)==STRING1_TO_CHAR(C_STRING_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
|
||
return(FALSE);
|
||
}
|
||
|
||
/* check if two types are compatible for affectation*/
|
||
ACP_tdxBool fn_bIsCompatibleTypeForAffect(char c1,char c2)
|
||
{
|
||
if (c1==tolower(c2))
|
||
{
|
||
return TRUE;
|
||
}
|
||
else if
|
||
(
|
||
(c1==STRING1_TO_CHAR(C_ADDR_REAL_PARAM))
|
||
&&(toupper(c2)==STRING1_TO_CHAR(C_LONG_PARAM))
|
||
)
|
||
{
|
||
return TRUE;
|
||
}
|
||
|
||
return FALSE;
|
||
}
|
||
|
||
|
||
/* check if two string type are compatible*/
|
||
ACP_tdxBool fn_bIsCompatibleStringType(char *szType1,char *szType2)
|
||
{
|
||
size_t l=strlen(szType1);
|
||
|
||
if (l!=strlen(szType2))
|
||
{
|
||
return(FALSE);
|
||
}
|
||
else
|
||
{
|
||
size_t i;
|
||
for (i=0;i<l;i++)
|
||
{
|
||
if (!fn_bIsCompatibleType(szType1[i],szType2[i]))
|
||
return(FALSE);
|
||
}
|
||
}
|
||
return(TRUE);
|
||
}
|
||
|
||
ACP_tdxBool fn_bIsCompatibleStringTypeForAffect(char *szType1,char *szType2)
|
||
{
|
||
size_t l=strlen(szType1);
|
||
|
||
if (l!=strlen(szType2))
|
||
{
|
||
return(FALSE);
|
||
}
|
||
else
|
||
{
|
||
size_t i;
|
||
for (i=0;i<l;i++)
|
||
{
|
||
if (!fn_bIsCompatibleTypeForAffect(szType1[i],szType2[i]))
|
||
return(FALSE);
|
||
}
|
||
}
|
||
return(TRUE);
|
||
}
|
||
|
||
/*/
|
||
// get compatible type (c1 left, c2 right)
|
||
char fn_cGetCompatibleType(char c1,char c2)
|
||
{
|
||
if (c1==c2)
|
||
{
|
||
return(c1);
|
||
}
|
||
else
|
||
{
|
||
if(
|
||
(c1==(char) (*((char *) C_REAL_PARAM)) )
|
||
||(c2==(char) (*((char *) C_REAL_PARAM)) )
|
||
)
|
||
{
|
||
return( (char) (*((char *) C_REAL_PARAM)) );
|
||
}
|
||
return(c1);
|
||
}
|
||
}
|
||
|
||
// idem for a string
|
||
#define C_MAX_SIZE_INFOPARAM_NAME 50
|
||
char g_szStringType[C_MAX_SIZE_INFOPARAM_NAME+1];
|
||
char *fn_szGetCompatibleStringType(char *szType1,char *szType2)
|
||
{
|
||
size_t l=strlen(szType1);
|
||
g_szStringType[0]=0;
|
||
g_szStringType[l]=0;
|
||
if (l==strlen(szType2) )
|
||
{
|
||
size_t i;
|
||
for (i=0;i<l;i++)
|
||
{
|
||
g_szStringType[i]=fn_cGetCompatibleType(szType1[i],szType2[i]);
|
||
}
|
||
}
|
||
return(&g_szStringType[0]);
|
||
}
|
||
*/
|
||
#endif /* ACTIVE_EDITOR*/
|
||
|
||
/**********************************************************************/
|
||
#if defined(ACTIVE_EDITOR)
|
||
unsigned char fn_ucGetDefaultActionTableNbEntries()
|
||
{
|
||
return(DEFAULT_ACTION_TABLE_NB_ENTRIES);
|
||
}
|
||
|
||
unsigned char fn_ucGetMinActionTableNbEntries()
|
||
{
|
||
return(MIN_ACTION_TABLE_NB_ENTRIES);
|
||
}
|
||
|
||
unsigned char fn_ucGetMaxActionTableNbEntries()
|
||
{
|
||
return(MAX_ACTION_TABLE_NB_ENTRIES);
|
||
}
|
||
#endif /* ACTIVE_EDITOR*/
|
||
|
||
/**********************************************************************/
|
||
#if defined(ACTIVE_EDITOR)
|
||
/*
|
||
typedef struct tdstTypeConversionTableEntry_
|
||
{
|
||
enum tdeVariableType_ eType;
|
||
char szStringType[2];
|
||
} tdstTypeConversionTableEntry;
|
||
|
||
static tdstTypeConversionTableEntry a_stTypeConversiontable[]=
|
||
{
|
||
{E_vt_None, C_NO_PARAM},
|
||
{E_vt_Boolean, C_ADDR_BOOLEAN_PARAM},
|
||
{E_vt__128To127, C_ADDR_LONG_PARAM},
|
||
{E_vt_0To255, C_ADDR_LONG_PARAM},
|
||
{E_vt__32768To32767, C_ADDR_LONG_PARAM},
|
||
{E_vt_0To65535, C_ADDR_LONG_PARAM},
|
||
{E_vt_Integer, C_ADDR_LONG_PARAM},
|
||
{E_vt_PositiveInteger, C_ADDR_LONG_PARAM},
|
||
{E_vt_Float, C_ADDR_REAL_PARAM},
|
||
{E_vt_WayPoint, C_ADDR_WAYPOINT_PARAM},
|
||
{E_vt_Way, C_ADDR_LONG_PARAM},
|
||
{E_vt_Perso, C_ADDR_PERSO_PARAM},
|
||
{E_vt_List, C_ADDR_LIST_PARAM},
|
||
//{E_vt_1bit, C_ADDR_LONG_PARAM},
|
||
//{E_vt_2bit, C_ADDR_LONG_PARAM},
|
||
//{E_vt_3bit, C_ADDR_LONG_PARAM},
|
||
//{E_vt_4bit, C_ADDR_LONG_PARAM},
|
||
//{E_vt_5bit, C_ADDR_LONG_PARAM},
|
||
//{E_vt_6bit, C_ADDR_LONG_PARAM},
|
||
//{E_vt_7bit, C_ADDR_LONG_PARAM},
|
||
{E_vt_MetaActionReturn, C_ADDR_LONG_PARAM},
|
||
{E_vt_Vector, C_ADDR_VECTOR_PARAM},
|
||
{E_vt_Module, C_ADDR_LONG_PARAM},
|
||
{E_vt_DsgVarId, C_ADDR_LONG_PARAM},
|
||
{E_vt_Button, C_BUTTON_PARAM},
|
||
{E_vt_Mask, C_MASK_PARAM},
|
||
{E_vt_Text, C_ADDR_TEXT_PARAM},
|
||
{E_vt_GameMaterial, C_ADDR_GMT_PARAM},
|
||
{E_vt_Action, C_ADDR_ACTION_PARAM},
|
||
//{E_vt_Comport, C_ADDR_COMPORT_PARAM}
|
||
{E_vt_Array, C_ADDR_ARRAY_PARAM}
|
||
|
||
};
|
||
|
||
|
||
int fn_TypeConversionSize()
|
||
{
|
||
return(sizeof(a_stTypeConversiontable)/sizeof(a_stTypeConversiontable[0]));
|
||
}
|
||
|
||
char *fn_szFindStringTypeFromVariableType(tdeVariableType eType)
|
||
{
|
||
int i;
|
||
for(i=0;i<fn_TypeConversionSize();i++)
|
||
{
|
||
if (a_stTypeConversiontable[i].eType==eType)
|
||
{
|
||
return(a_stTypeConversiontable[i].szStringType);
|
||
}
|
||
}
|
||
return(USE_NO_PARAM);
|
||
}
|
||
*/
|
||
|
||
ACP_tdxBool IsADDRType(char cType)
|
||
{
|
||
return((ACP_tdxBool) islower((int) cType) );
|
||
}
|
||
|
||
char fn_cConvertToADDRType(char cType)
|
||
{
|
||
return((char) tolower((int) cType) );
|
||
}
|
||
|
||
char fn_cConvertFromADDRType(char cType)
|
||
{
|
||
return((char) toupper((int) cType) );
|
||
}
|
||
|
||
#endif /* ACTIVE_EDITOR*/
|
||
|
||
/**********************************************************************************************************************/
|
||
/* for multilanguage support : old aiinfo.c */
|
||
#if defined(ACTIVE_EDITOR)
|
||
|
||
/* C'est pour virer Proc,Cond,Action etc...*/
|
||
static char *fn_szConvertString(char *str)
|
||
{
|
||
char *ptr;
|
||
if ((ptr=strchr(str,'_'))!=NULL)
|
||
{
|
||
ptr++;
|
||
}
|
||
else
|
||
{
|
||
ptr=str;
|
||
}
|
||
return(ptr);
|
||
}
|
||
|
||
/* C'est pour Xavier qui veut que les noms des conditions <> <= >= etc soit les m<>mes en anglais et en francais !!!*/
|
||
static char *fn_szConvertConditionString(char *str1,char *str2)
|
||
{
|
||
if (!isalpha(str2[0]))
|
||
{
|
||
return(fn_szConvertString(str2));
|
||
}
|
||
return(fn_szConvertString(str1));
|
||
}
|
||
|
||
/* C'est pour Xavier qui veut qu'il y ait bijection entre les mots cl<63>s et les types des variables designers*/
|
||
/* C'est pour Xavier qui veut que les noms des types des variables commencent par une lettre !!!*/
|
||
static char TempChar[200];
|
||
static char *fn_szConvertDsgVarString(char *str1,char *str2)
|
||
{
|
||
if (!strnicmp(str2,"Type",4))
|
||
{
|
||
sprintf(&TempChar[0],"%sType",str1);
|
||
return(fn_szConvertString(&TempChar[0]));
|
||
}
|
||
else if ((isdigit(str1[0])) || (str1[0]=='_') )
|
||
{
|
||
sprintf(&TempChar[0],"Integer%s",str1);
|
||
return(&TempChar[0]);
|
||
}
|
||
return(str1);
|
||
}
|
||
|
||
void fn_vWriteAILangue()
|
||
{
|
||
FILE *fp;
|
||
|
||
if ((fp=fopen(AI_MULTI_LANGUAGE_SCRIPT,"wt"))!=NULL)
|
||
{
|
||
#define M_BAR "------------------------------------------------------------------"
|
||
|
||
#define M_WRITE_ALL_COMMAND_START(title,nb) fprintf(fp,";%s\n;%s\n;%s\n{%s:(%d)\n",M_BAR,title,M_BAR,title,nb);
|
||
#define M_WRITE_ALL_COMMAND_END() fprintf(fp,"}\n\n");
|
||
|
||
#define M_WRITE_ONE_COMMAND(title,key,fr,gb) \
|
||
fprintf(fp,"\t{%s:%s\n",title,key); \
|
||
fprintf(fp,"\t\t%s(%s)\n",AI_FRENCH,fr); \
|
||
fprintf(fp,"\t\t%s(%s)\n",AI_ENGLISH,gb); \
|
||
fprintf(fp,"\t}\n\n");
|
||
|
||
/* MetaActions*/
|
||
#define M_WRITE_ALL_METAACTIONS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_METAACTIONS,nb)
|
||
#define M_WRITE_ONE_METAACTION(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_METAACTION,key,fr,gb)
|
||
|
||
M_WRITE_ALL_METAACTIONS(fn_eGetNbMetaAction())
|
||
/*#define M_DEFINE_METAACTION(a,b,c,d,e,f) M_WRITE_ONE_METAACTION(c,b,fn_szConvertString(c))*/
|
||
#define M_DEFINE_METAACTION(a,b,english,c,d,e,f) M_WRITE_ONE_METAACTION(c,b,english)
|
||
#include "DefAct.h"
|
||
#undef M_DEFINE_METAACTION
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* Procedures*/
|
||
#define M_WRITE_ALL_PROCEDURES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_PROCEDURES,nb)
|
||
#define M_WRITE_ONE_PROCEDURE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_PROCEDURE,key,fr,gb)
|
||
|
||
M_WRITE_ALL_PROCEDURES(fn_eGetNbProcedure())
|
||
/*#define M_DEFINE_PROCEDURE(a,b,c,d,e,f) M_WRITE_ONE_PROCEDURE(c,b,fn_szConvertString(c))*/
|
||
#define M_DEFINE_PROCEDURE(a,b,english,c,d,e,f) M_WRITE_ONE_PROCEDURE(c,b,english)
|
||
#include "DefProc.h"
|
||
#undef M_DEFINE_PROCEDURE
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* Functions*/
|
||
#define M_WRITE_ALL_FUNCTIONS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_FUNCTIONS,nb)
|
||
#define M_WRITE_ONE_FUNCTION(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_FUNCTION,key,fr,gb)
|
||
|
||
M_WRITE_ALL_FUNCTIONS(fn_eGetNbFunc())
|
||
/*#define M_DEFINE_FUNCTION(a,b,c,d,e,f,g) M_WRITE_ONE_FUNCTION(c,b,fn_szConvertString(c))*/
|
||
#define M_DEFINE_FUNCTION(a,b,english,c,d,e,f,g) M_WRITE_ONE_FUNCTION(c,b,english)
|
||
#include "DefFunc.h"
|
||
#undef M_DEFINE_FUNCTION
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* Conditions*/
|
||
#define M_WRITE_ALL_CONDITIONS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_CONDITIONS,nb)
|
||
#define M_WRITE_ONE_CONDITION(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_CONDITION,key,fr,gb)
|
||
|
||
M_WRITE_ALL_CONDITIONS(fn_eGetNbCond())
|
||
/*#define M_DEFINE_CONDITION(a,b,c,d,e,f) M_WRITE_ONE_CONDITION(c,b,fn_szConvertConditionString(c,b))*/
|
||
#define M_DEFINE_CONDITION(a,b,english,c,d,e,f) M_WRITE_ONE_CONDITION(c,b,english)
|
||
#include "DefCond.h"
|
||
#undef M_DEFINE_CONDITION
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* KeyWords*/
|
||
#define M_WRITE_ALL_KEYWORDS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_KEYWORDS,nb)
|
||
#define M_WRITE_ONE_KEYWORD(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_KEYWORD,key,fr,gb)
|
||
|
||
M_WRITE_ALL_KEYWORDS(fn_eGetNbKeyWord())
|
||
/*#define M_DEFINE_KEYWORD(a,b,c,d,e,f) M_WRITE_ONE_KEYWORD(c,b,fn_szConvertString(c))*/
|
||
#define M_DEFINE_KEYWORD(a,b,english,c,d,e,f) M_WRITE_ONE_KEYWORD(c,b,english)
|
||
#include "DefKey.h"
|
||
#undef M_DEFINE_KEYWORD
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* Fields*/
|
||
#define M_WRITE_ALL_FIELDS(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_FIELDS,nb)
|
||
#define M_WRITE_ONE_FIELD(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_FIELD,key,fr,gb)
|
||
|
||
M_WRITE_ALL_FIELDS(fn_eGetNbField())
|
||
/*#define M_DEFINE_FIELD(a,b,c,d,e,f) M_WRITE_ONE_FIELD(c,b,fn_szConvertString(c))*/
|
||
#define M_DEFINE_FIELD(a,b,english,c,d,e,f) M_WRITE_ONE_FIELD(c,b,english)
|
||
#include "DefFild.h"
|
||
#undef M_DEFINE_FIELD
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* Designer variables*/
|
||
#define M_WRITE_ALL_DSGVAR_TYPES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_DSGVAR_TYPES,nb)
|
||
#define M_WRITE_ONE_DSGVAR_TYPE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_DSGVAR_TYPE,key,fr,gb)
|
||
|
||
M_WRITE_ALL_DSGVAR_TYPES(fn_eGetNbDsgVarType())
|
||
#define M_DEFINE_DSGVAR_TYPE(a,b,c,d,e,f,g,h,i,j) M_WRITE_ONE_DSGVAR_TYPE(c,b,fn_szConvertDsgVarString(c,b))
|
||
#include "DefVar.h"
|
||
#undef M_DEFINE_DSGVAR_TYPE
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* SAI Type*/
|
||
#define M_WRITE_ALL_DSGVAR_SAVE_TYPES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_DSGVAR_SAVE_TYPES,nb)
|
||
#define M_WRITE_ONE_DSGVAR_SAVE_TYPE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_DSGVAR_SAVE_TYPE,key,fr,gb)
|
||
|
||
M_WRITE_ALL_DSGVAR_SAVE_TYPES(fn_ucGetSaveTypeNumber())
|
||
#define M_DEFINE_DSGVAR_SAVE_TYPE(a,b,c) M_WRITE_ONE_DSGVAR_SAVE_TYPE(b,a,b)
|
||
#include "DefSAI.h"
|
||
#undef M_DEFINE_DSGVAR_SAVE_TYPE
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
/* OTI Type*/
|
||
#define M_WRITE_ALL_DSGVAR_INIT_TYPES(nb) M_WRITE_ALL_COMMAND_START(AI_ALL_DSGVAR_INIT_TYPES,nb)
|
||
#define M_WRITE_ONE_DSGVAR_INIT_TYPE(key,fr,gb) M_WRITE_ONE_COMMAND(AI_ONE_DSGVAR_INIT_TYPE,key,fr,gb)
|
||
|
||
M_WRITE_ALL_DSGVAR_INIT_TYPES(fn_ucGetInitTypeNumber())
|
||
#define M_DEFINE_DSGVAR_INIT_TYPE(a,b,c) M_WRITE_ONE_DSGVAR_INIT_TYPE(b,a,b)
|
||
#include "DefOTI.h"
|
||
#undef M_DEFINE_DSGVAR_INIT_TYPE
|
||
M_WRITE_ALL_COMMAND_END()
|
||
|
||
fclose(fp);
|
||
}
|
||
}
|
||
#endif /* ACTIVE_EDITOR*/
|