reman3/Rayman_X/cpa/tempgrp/TIA/Src/edir_flx.cpp

2938 lines
83 KiB
C++

//BEGIN ROMTEAM Cristi Petrescu 98-04-
#include "stdafx.h"
#include <afxtempl.h>
typedef enum {begin_french, begin_english, begin_dsgvar} tdeBegin;
// I made this a class just for using CList to build stacks.
class CPA_EdIR_DefineContext
{
public:
char *m_pcIndex;
struct yy_buffer_state *m_bufLexContext;
};
class CPA_EdIR_DefineContextStack : public CList <CPA_EdIR_DefineContext *, CPA_EdIR_DefineContext *>
{
public:
void m_fn_vDestroyAndRemoveAllEntries (void);
};
//END ROMTEAM Cristi Petrescu 98-04-
#include <io.h> //for read()
#include "EdIRbis.hpp"
#include "EdIRDVLs.hpp"
#include "EdIRMacL.hpp"
#include "EdIRFrm.hpp"
#include "EdIRIRD.hpp"
#include "EdIRBeEn.hpp"
#include "EdIRBeha.hpp"
#include "EdIR2Eng.hpp"
#include "EdIRGlob.hpp"
#include "EdIRDict.hpp"
#include "EdIRIAWd.hpp"
#include "EdIRStrg.hpp"
#include "ai_intf.hpp" //for g_pclAIInterface
#include "CPA_NLL.hpp"
#include "EDACModl.hpp"
extern long gl_MacroAddress;
#include "GAM.h"
#if 0
///////////////////////////////////////////////////////////////////////////
//TEMPORAIRE A ENLEVER LE PLUS RAPIDEMENT POSSIBLE
//#include "GAM\GamInven.h"
#endif //0
#include "IPT.h"
#include "x:\cpa\main\inc\_EditID.h"
#include "TLS/LPSconst.hpp"
#include "GMT.h"
#include "TFA.h"
#include "incAI.h"
#include "_Actors.hpp"
#define YY_USE_CLASS
//ANNECY CB
CString gcsGlob;
//END
//ROMTEAM Optimisation (Ionut Grozea 24/04/98)
CString cs_params;
int iCount;
long l_id;
//END ROMTEAM Optimisation (Ionut Grozea 24/04/98)
/**********/
/* Macros */
/**********/
#define M_COMPUTE_POSITION() if(!m_bIsInMacro && !m_bIsInDefine) \
{ \
m_lOldIndex=m_lIndexWithoutSpaceAndTab; \
m_lIndex+=yyleng; \
m_lIndexWithoutSpaceAndTab=m_lIndex; \
}
#define M_COMPUTE_ALL() M_COMPUTE_POSITION(); \
g_clParse.yylval.csInitial=yytext
#define M_COMPUTE_ALL_4_KW() M_COMPUTE_ALL(); \
long lIndex=fn_lGetKeyWordIdFromEditorName(yytext); \
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eKeyWord,lIndex); \
if(M_ID_IS_INVALID(lIndex)) \
{ \
g_clParse.m_csMsgError="Unknown KeyWord"; \
return CParse::SYNTAXERROR; \
}
#define M_COMPUTE_ALL_4_OP() M_COMPUTE_ALL(); \
long lIndex=fn_lGetOperatorIdFromEditorName(yytext); \
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eOperator,lIndex); \
if(M_ID_IS_INVALID(lIndex)) \
{ \
g_clParse.m_csMsgError="Unknown Operator"; \
return CParse::SYNTAXERROR; \
}
#define M_COMPUTE_ALL_4_OPC() M_COMPUTE_ALL(); \
long lIndex=fn_lGetConditionIdFromEditorName(yytext); \
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eCondition,lIndex); \
if(M_ID_IS_INVALID(lIndex)) \
{ \
g_clParse.m_csMsgError="Unknown Condition"; \
return CParse::SYNTAXERROR; \
}
#define M_COMPUTE_ALL_4_BOOL(a) M_COMPUTE_ALL(); \
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eConstant,(long)(a))
#define M_COMPUTE_ALL_4_COND() M_COMPUTE_ALL(); \
if(!fn_bIsCondition(yytext,&(g_clParse.yylval))) \
{ \
g_clParse.m_csMsgError="Unknown Condition"; \
return CParse::SYNTAXERROR; \
}
//BEGIN ROMTEAM Cristi Petrescu 98-04-
#define M_EXPAND_DEFINE() CString csDefineText; \
if (m_clDefineList . Lookup (yytext, csDefineText)) \
{ \
m_bIsInDefine = TRUE; \
m_fn_vEnterContext ((char *) (LPCSTR) (csDefineText)); \
return yylex (); \
}
//END ROMTEAM Cristi Petrescu 98-04-
/*************/
/* Functions */
/*************/
//MetaAction
//ANNECY CB
BOOL fn_bIsMetaAction(CString&,stReturn *);
//BOOL fn_bIsMetaAction(CString,stReturn *);
BOOL fn_bIsMetaAction(char *,stReturn *);
//END
//Condition
//ANNECY CB
BOOL fn_bIsCondition(CString&,stReturn *);
//BOOL fn_bIsCondition(CString,stReturn *);
BOOL fn_bIsCondition(char *,stReturn *);
//END
//Designer Variable
//ANNECY CB
BOOL fn_bIsDesignerVariable(CString&,stReturn *);
//BOOL fn_bIsDesignerVariable(CString,stReturn *);
BOOL fn_bIsDesignerVariable(char *,stReturn *);
//END
//ConstantInt
//ANNECY CB
BOOL fn_bIsAConstantInt(CString&,stReturn *);
//BOOL fn_bIsAConstantInt(CString,stReturn *);
BOOL fn_bIsAConstantInt(char *,stReturn *);
//END
//ConstantReal
//ANNECY CB
BOOL fn_bIsAConstantReal(CString&,stReturn *);
//BOOL fn_bIsAConstantReal(CString,stReturn *);
BOOL fn_bIsAConstantReal(char *,stReturn *);
//END
//Type
//ANNECY CB
BOOL fn_bIsAType(CString&,stReturn *);
//BOOL fn_bIsAType(CString,stReturn *);
BOOL fn_bIsAType(char *,stReturn *);
//END
//Function
//ANNECY CB
BOOL fn_bIsFunction(CString&,stReturn *);
//BOOL fn_bIsFunction(CString,stReturn *);
BOOL fn_bIsFunction(char *,stReturn *);
//END
//Procedure
//ANNECY CB
BOOL fn_bIsProcedure(CString&,stReturn *);
//BOOL fn_bIsProcedure(CString,stReturn *);
BOOL fn_bIsProcedure(char *,stReturn *);
//END
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Subr
BOOL fn_bIsSubr(CString&,stReturn *);
BOOL fn_bIsSubr(char *,stReturn *);
//END ROMTEAM Cristi Petrescu 98-04-
//Field
//ANNECY CB
BOOL fn_bIsField(CString&,stReturn *);
//BOOL fn_bIsField(CString,stReturn *);
BOOL fn_bIsField(char *,stReturn *);
//END
//Perso (and Always)
//ANNECY CB
BOOL fn_bIsAPerso(CString&,stReturn *);
//BOOL fn_bIsAPerso(CString,stReturn *);
BOOL fn_bIsAPerso(char *,stReturn *);
//END
//ZDD
//ANNECY CB
long fn_lIsAZdd(CString&,stReturn *);
//long fn_lIsAZdd(CString,stReturn *);
long fn_lIsAZdd(char *,stReturn *);
//END
//ZDE
//ANNECY CB
long fn_lIsAZde(CString&,stReturn *);
//long fn_lIsAZde(CString,stReturn *);
long fn_lIsAZde(char *,stReturn *);
//END
//ZDM
//ANNECY CB
long fn_lIsAZdm(CString&,stReturn *);
//long fn_lIsAZdm(CString,stReturn *);
long fn_lIsAZdm(char *,stReturn *);
//END
//ZDR
//ANNECY CB
long fn_lIsAZdr(CString&,stReturn *);
//long fn_lIsAZdr(CString,stReturn *);
long fn_lIsAZdr(char *,stReturn *);
//END
//Action
//ANNECY CB
BOOL fn_bIsAnAction(CString&,stReturn *);
//BOOL fn_bIsAnAction(CString,stReturn *);
BOOL fn_bIsAnAction(char *,stReturn *);
//END
//WayPoint
//ANNECY CB
BOOL fn_bIsAWayPoint(CString&,stReturn *);
//BOOL fn_bIsAWayPoint(CString,stReturn *);
BOOL fn_bIsAWayPoint(char *,stReturn *);
//END
//Channel
//ANNECY CB
BOOL fn_bIsAChannel(CString&,stReturn *);
//BOOL fn_bIsAChannel(CString,stReturn *);
BOOL fn_bIsAChannel(char *,stReturn *);
//END
//Surface
//ANNECY CB
BOOL fn_bIsASurface(CString&,stReturn *);
//BOOL fn_bIsASurface(CString,stReturn *);
BOOL fn_bIsASurface(char *,stReturn *);
//END
//Environment
//ANNECY CB
BOOL fn_bIsAEnvironment(CString&,stReturn *);
//BOOL fn_bIsAEnvironment(CString,stReturn *);
BOOL fn_bIsAEnvironment(char *,stReturn *);
//END
//LipSynchro
//ANNECY CB
BOOL fn_bIsALipSynchro(CString&,stReturn *);
//BOOL fn_bIsALipSynchro(CString,stReturn *);
BOOL fn_bIsALipSynchro(char *,stReturn *);
//END
//Sector
//ANNECY CB
BOOL fn_bIsASector(CString&,stReturn *);
//BOOL fn_bIsASector(CString,stReturn *);
BOOL fn_bIsASector(char *,stReturn *);
//END
//SuperObject
//ANNECY CB
BOOL fn_bIsASuperObject(CString&,stReturn *);
//BOOL fn_bIsASuperObject(CString,stReturn *);
BOOL fn_bIsASuperObject(char *,stReturn *);
//END
//ObjectTable
//ANNECY CB
BOOL fn_bIsAObjectTable(CString&,stReturn *);
//BOOL fn_bIsAObjectTable(CString,stReturn *);
BOOL fn_bIsAObjectTable(char *,stReturn *);
//END
//Family
//ANNECY CB
BOOL fn_bIsAFamily(CString&,stReturn *);
//BOOL fn_bIsAFamily(CString,stReturn *);
BOOL fn_bIsAFamily(char *,stReturn *);
//END
//Model
//ANNECY CB
BOOL fn_bIsAModel(CString&,stReturn *);
//BOOL fn_bIsAModel(CString,stReturn *);
BOOL fn_bIsAModel(char *,stReturn *);
//END
//SoundEvent
//ANNECY CB
BOOL fn_bIsASoundEvent(CString&,stReturn *);
//BOOL fn_bIsASoundEvent(CString,stReturn *);
BOOL fn_bIsASoundEvent(char *,stReturn *);
//END
//GameMaterial
//ANNECY CB
BOOL fn_bIsAGameMaterial(CString&,stReturn *);
//BOOL fn_bIsAGameMaterial(CString,stReturn *);
BOOL fn_bIsAGameMaterial(char *,stReturn *);
//END
//Light
//ANNECY CB
BOOL fn_bIsALight(CString&,stReturn *);
//BOOL fn_bIsALight(CString,stReturn *);
BOOL fn_bIsALight(char *,stReturn *);
//END
//Capabilities
//ANNECY CB
BOOL fn_bIsACaps(CString&,stReturn *);
//BOOL fn_bIsACaps(CString,stReturn *);
BOOL fn_bIsACaps(char *,stReturn *);
//END
//Graph
//ANNECY CB
BOOL fn_bIsAGraph(CString&,stReturn *);
//BOOL fn_bIsAGraph(CString,stReturn *);
BOOL fn_bIsAGraph(char *,stReturn *);
//END
//Reflex Behaviour
//ANNECY CB
BOOL fn_bIsAReflexBehaviour(CString&,stReturn *);
//BOOL fn_bIsAReflexBehaviour(CString,stReturn *);
BOOL fn_bIsAReflexBehaviour(char *,stReturn *);
//END
//Intelligence Behaviour
//ANNECY CB
BOOL fn_bIsAIntelligenceBehaviour(CString&,stReturn *);
//BOOL fn_bIsAIntelligenceBehaviour(CString,stReturn *);
BOOL fn_bIsAIntelligenceBehaviour(char *,stReturn *);
//END
//Reflex Behaviour (for me)
//ANNECY CB
BOOL fn_bIsMyReflexBehaviour(CString&,stReturn *);
//BOOL fn_bIsMyReflexBehaviour(CString,stReturn *);
BOOL fn_bIsMyReflexBehaviour(char *,stReturn *);
//END
//Intelligence Behaviour (for me)
//ANNECY CB
BOOL fn_bIsMyIntelligenceBehaviour(CString&,stReturn *);
//BOOL fn_bIsMyIntelligenceBehaviour(CString,stReturn *);
BOOL fn_bIsMyIntelligenceBehaviour(char *,stReturn *);
//END
//KeyButton
//ANNECY CB
BOOL fn_bIsAKeyButton(CString&,stReturn *);
//BOOL fn_bIsAKeyButton(CString,stReturn *);
BOOL fn_bIsAKeyButton(char *,stReturn *);
//END
//Mask Type
//ANNECY CB
BOOL fn_bIsAMaskType(CString&,stReturn *);
//BOOL fn_bIsAMaskType(CString,stReturn *);
BOOL fn_bIsAMaskType(char *,stReturn *);
//END
#if 0
//Power
//ANNECY CB
BOOL fn_bIsAPower(CString&,stReturn *);
//BOOL fn_bIsAPower(CString,stReturn *);
BOOL fn_bIsAPower(char *,stReturn *);
//END
#endif //0 car inutilise dans RM 2
//Text
//ANNECY CB
BOOL fn_bIsAText(CString&,stReturn *);
//BOOL fn_bIsAText(CString,stReturn *);
BOOL fn_bIsAText(char *,stReturn *);
//END
//ParticleGenerator
//ANNECY CB
BOOL fn_bIsAParticleGenerator(CString&,stReturn *);
//BOOL fn_bIsAParticleGenerator(CString,stReturn *);
BOOL fn_bIsAParticleGenerator(char *,stReturn *);
//END
//State
//ANNECY CB
BOOL fn_bIsAState(CString&,stReturn *);
//BOOL fn_bIsAState(CString,stReturn *);
BOOL fn_bIsAState(char *,stReturn *);
//END
//Init IntermediateCode Node
void fn_vInitNode(stReturn *,long,tdeNodeType,long,CPA_Actor *pclModel=NULL);
void fn_vInitNode(stReturn *,long,tdeNodeType,double);
void fn_vInitNode(stReturn *,long,tdeNodeType,CString);
define MEMBERS ~CLex(); \
void yyinit(char *,enum tdeTypeText_); \
long m_lOldIndex; \
long m_lIndexWithoutSpaceAndTab; \
long m_lIndex; \
long m_lOldMacroIndex; \
BOOL m_bIsInMacro; \
BOOL m_bIsInDefine; \
char *m_pcIndex; \
enum tdeTypeText_ m_eTypeText; \
tdeBegin m_eBegin; \
CString m_csDefineName; \
CMapStringToString m_clDefineList; \
CPA_EdIR_DefineContextStack m_clDefineContextStack; \
void m_fn_vEnterContext (char *szStringToParse); \
void m_fn_vExitContext (void);
%define INPUT_CODE { \
if(*m_pcIndex==0) \
result=YY_NULL; \
else \
{ \
result=min((size_t)max_size,strlen(m_pcIndex)); \
strncpy(buffer,m_pcIndex,result); \
m_pcIndex+=result; \
} \
return result; \
}
%define WRAP_CODE { \
if (m_clDefineContextStack . IsEmpty ()) \
{ \
return 1; \
} \
else \
{ \
m_fn_vExitContext (); \
if (m_clDefineContextStack . IsEmpty ()) \
m_bIsInDefine = FALSE; \
return 0; \
} \
}
DIGIT [0-9]
LETTER [A-Za-z_]
ALNUM [0-9A-Za-z_]
%s ENGLISH
%s FRENCH
%x DECL_DSG_VAR
//BEGIN ROMTEAM Cristi Petrescu 98-04-
%x DEFINE
%x DEFINE_TEXT
//END ROMTEAM Cristi Petrescu 98-04-
/*<ENGLISH>world {M_COMPUTE_ALL_4_KW();return CParse::WORLD;}*/
/*<FRENCH>monde {M_COMPUTE_ALL_4_KW();return CParse::WORLD;}*/
%%
<FRENCH,ENGLISH,DECL_DSG_VAR>";" {
int c;
//for ";" char
M_COMPUTE_ALL();
while((c=yyinput())!='\xd' && c!=EOF)
{
M_COMPUTE_ALL();
}
//for "enter" char
M_COMPUTE_ALL();
}
<ENGLISH>me {M_COMPUTE_ALL_4_KW();return CParse::ME;}
<ENGLISH>mainactor {M_COMPUTE_ALL_4_KW();return CParse::MAINACTOR;}
<ENGLISH,DECL_DSG_VAR>nobody {M_COMPUTE_ALL_4_KW();return CParse::NOBODY;}
<ENGLISH,DECL_DSG_VAR>nosuperobject {M_COMPUTE_ALL_4_KW();return CParse::NOSUPEROBJECT;}
<ENGLISH,DECL_DSG_VAR>emptytext {M_COMPUTE_ALL_4_KW();return CParse::EMPTYTEXT;}
<ENGLISH,DECL_DSG_VAR>nowhere {M_COMPUTE_ALL_4_KW();return CParse::NOWHERE;}
<ENGLISH,DECL_DSG_VAR>nocomport {M_COMPUTE_ALL_4_KW();return CParse::NOCOMPORT;}
<ENGLISH,DECL_DSG_VAR>noaction {M_COMPUTE_ALL_4_KW();return CParse::NOACTION;}
<ENGLISH,DECL_DSG_VAR>capanull {
M_COMPUTE_ALL_4_KW();
return CParse::CAPSNULL;
}
<ENGLISH,DECL_DSG_VAR>nograph {
M_COMPUTE_ALL_4_KW();
return CParse::NOGRAPH;
}
<ENGLISH>or {M_COMPUTE_ALL_4_COND();return CParse::OR;}
<ENGLISH>xor {M_COMPUTE_ALL_4_COND();return CParse::XOR;}
<ENGLISH>and {M_COMPUTE_ALL_4_COND();return CParse::AND;}
<ENGLISH>not {M_COMPUTE_ALL_4_COND();return CParse::NOT;}
<ENGLISH,DECL_DSG_VAR>true {M_COMPUTE_ALL_4_BOOL(1);return CParse::BOOLEAN;}
<ENGLISH,DECL_DSG_VAR>false {M_COMPUTE_ALL_4_BOOL(0);return CParse::BOOLEAN;}
<ENGLISH>if {M_COMPUTE_ALL_4_KW();return CParse::IF;}
<ENGLISH>if2 {M_COMPUTE_ALL_4_KW();return CParse::IF2;}
<ENGLISH>if4 {M_COMPUTE_ALL_4_KW();return CParse::IF4;}
<ENGLISH>if8 {M_COMPUTE_ALL_4_KW();return CParse::IF8;}
<ENGLISH>if16 {M_COMPUTE_ALL_4_KW();return CParse::IF16;}
<ENGLISH>ifdebug {M_COMPUTE_ALL_4_KW();return CParse::IFDEBUG;}
<ENGLISH>ifnotu64 {M_COMPUTE_ALL_4_KW();return CParse::IFNOTU64;}
<ENGLISH>ifnot {M_COMPUTE_ALL_4_KW();return CParse::IFNOT;}
<ENGLISH>then {M_COMPUTE_ALL_4_KW();return CParse::THEN;}
<ENGLISH>else {M_COMPUTE_ALL_4_KW();return CParse::ELSE;}
<ENGLISH>endif {M_COMPUTE_ALL_4_KW();return CParse::ENDIF;}
<ENGLISH>schedule {
if(m_eTypeText!=ReflexText)
{
M_COMPUTE_ALL_4_KW();
return CParse::SCHEDULE;
}
else
return CParse::SYNTAXERROR;
}
<ENGLISH>interruptrule {M_COMPUTE_ALL_4_KW();return CParse::ITRULES;}
<ENGLISH>macro {M_COMPUTE_ALL();return CParse::MACRO;}
<ENGLISH>subroutine {M_COMPUTE_ALL();return CParse::SUBROUTINE;}
<ENGLISH>vector {M_COMPUTE_ALL_4_KW();return CParse::VECTOR;}
<ENGLISH,DECL_DSG_VAR>constantvector {M_COMPUTE_ALL_4_KW();return CParse::CONSTVECTOR;}
<ENGLISH>"[stopengine]" {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eStopEngine,(long)C_ACTION_ENGINE_STOP);
return CParse::STOPENGINE;
}
<ENGLISH>"[stoprule]" {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eStopRule,(long)C_ACTION_ENGINE_STOP_RULE);
return CParse::STOPRULE;
}
<ENGLISH>"[nonstop]" {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eNonStop,(long)C_ACTION_ENGINE_CONTINUE);
return CParse::NONSTOP;
}
<FRENCH>moi {M_COMPUTE_ALL_4_KW();return CParse::ME;}
<FRENCH>acteurprincipal {M_COMPUTE_ALL_4_KW();return CParse::MAINACTOR;}
<FRENCH,DECL_DSG_VAR>personne {M_COMPUTE_ALL_4_KW();return CParse::NOBODY;}
<FRENCH,DECL_DSG_VAR>sanssuperobjet {M_COMPUTE_ALL_4_KW();return CParse::NOSUPEROBJECT;}
<FRENCH,DECL_DSG_VAR>textevide {M_COMPUTE_ALL_4_KW();return CParse::EMPTYTEXT;}
<FRENCH,DECL_DSG_VAR>nullepart {M_COMPUTE_ALL_4_KW();return CParse::NOWHERE;}
<FRENCH,DECL_DSG_VAR>sanscomportement {M_COMPUTE_ALL_4_KW();return CParse::NOCOMPORT;}
<FRENCH,DECL_DSG_VAR>sansaction {M_COMPUTE_ALL_4_KW();return CParse::NOACTION;}
<FRENCH,DECL_DSG_VAR>capazero {
M_COMPUTE_ALL_4_KW();
return CParse::CAPSNULL;
}
<FRENCH,DECL_DSG_VAR>sansgraph {
M_COMPUTE_ALL_4_KW();
return CParse::NOGRAPH;
}
<FRENCH>ou {M_COMPUTE_ALL_4_COND();return CParse::OR;}
<FRENCH>ouexclusif {M_COMPUTE_ALL_4_COND();return CParse::XOR;}
<FRENCH>et {M_COMPUTE_ALL_4_COND();return CParse::AND;}
<FRENCH>non {M_COMPUTE_ALL_4_COND();return CParse::NOT;}
<FRENCH,DECL_DSG_VAR>vrai {M_COMPUTE_ALL_4_BOOL(1);return CParse::BOOLEAN;}
<FRENCH,DECL_DSG_VAR>faux {M_COMPUTE_ALL_4_BOOL(0);return CParse::BOOLEAN;}
<FRENCH>si {M_COMPUTE_ALL_4_KW();return CParse::IF;}
<FRENCH>si2 {M_COMPUTE_ALL_4_KW();return CParse::IF2;}
<FRENCH>si4 {M_COMPUTE_ALL_4_KW();return CParse::IF4;}
<FRENCH>si8 {M_COMPUTE_ALL_4_KW();return CParse::IF8;}
<FRENCH>si16 {M_COMPUTE_ALL_4_KW();return CParse::IF16;}
<FRENCH>sidebug {M_COMPUTE_ALL_4_KW();return CParse::IFDEBUG;}
<FRENCH>sipasu64 {M_COMPUTE_ALL_4_KW();return CParse::IFNOTU64;}
<FRENCH>sipas {M_COMPUTE_ALL_4_KW();return CParse::IFNOT;}
<FRENCH>alors {M_COMPUTE_ALL_4_KW();return CParse::THEN;}
<FRENCH>sinon {M_COMPUTE_ALL_4_KW();return CParse::ELSE;}
<FRENCH>finsi {M_COMPUTE_ALL_4_KW();return CParse::ENDIF;}
<FRENCH>emploitemps {
if(m_eTypeText!=ReflexText)
{
M_COMPUTE_ALL_4_KW();
return CParse::SCHEDULE;
}
else
return CParse::SYNTAXERROR;
}
<FRENCH>regleinterruption {M_COMPUTE_ALL_4_KW();return CParse::ITRULES;}
<FRENCH>macro {M_COMPUTE_ALL();return CParse::MACRO;}
<FRENCH>subroutine {M_COMPUTE_ALL();return CParse::SUBROUTINE;}
<FRENCH>vecteur {M_COMPUTE_ALL_4_KW();return CParse::VECTOR;}
<FRENCH,DECL_DSG_VAR>vecteurconstant {M_COMPUTE_ALL_4_KW();return CParse::CONSTVECTOR;}
<FRENCH>"[bloquantmoteur]" {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eStopEngine,(long)C_ACTION_ENGINE_STOP);
return CParse::STOPENGINE;
}
<FRENCH>"[bloquantregle]" {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eStopRule,(long)C_ACTION_ENGINE_STOP_RULE);
return CParse::STOPRULE;
}
<FRENCH>"[nonbloquant]" {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eNonStop,(long)C_ACTION_ENGINE_CONTINUE);
return CParse::NONSTOP;
}
beginmacro {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eBeginMacro,0L);
// BEGIN ROMTEAM Cristi Petrescu 98-08-
// see fn_vPostProcessIA
//m_bIsInMacro=TRUE;
// END ROMTEAM Cristi Petrescu 98-08-
return CParse::BEGINMACRO;
}
endmacro {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eEndMacro,0L);
// BEGIN ROMTEAM Cristi Petrescu 98-08-
// see fn_vPostProcessIA
//m_lOldIndex=m_lOldMacroIndex;
//m_lIndexWithoutSpaceAndTab=m_lOldMacroIndex;
//m_lIndex=m_lOldMacroIndex;
//m_bIsInMacro=FALSE;
// END ROMTEAM Cristi Petrescu 98-08-
return CParse::ENDMACRO;
}
<DECL_DSG_VAR>"private" {
//BEGIN ROMTEAM Cristi Petrescu 98-05-
M_COMPUTE_ALL();
return CParse::DVQUALIFIER;
//END ROMTEAM Cristi Petrescu 98-05-
}
<DECL_DSG_VAR>"public" {
//BEGIN ROMTEAM Cristi Petrescu 98-05-
M_COMPUTE_ALL();
return CParse::DVQUALIFIER;
//END ROMTEAM Cristi Petrescu 98-05-
}
">" {M_COMPUTE_ALL_4_OPC();return CParse::OPCOND;}
"<" {M_COMPUTE_ALL_4_OPC();return CParse::OPCOND;}
">=" {M_COMPUTE_ALL_4_OPC();return CParse::OPCOND;}
"<=" {M_COMPUTE_ALL_4_OPC();return CParse::OPCOND;}
"=" {M_COMPUTE_ALL_4_OPC();return CParse::OPCOND;}
"<>" {M_COMPUTE_ALL_4_OPC();return CParse::OPCOND;}
":=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
"+=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
"-=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
"*=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
"/=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
".x:=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
".y:=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
".z:=" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH2PARMS;}
"++" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH1PARM;}
"--" {M_COMPUTE_ALL_4_OP();return CParse::OPWITH1PARM;}
"::" {}
".x"[^A-Za-z:] {
unput(yytext[yyleng-1]);
M_COMPUTE_ALL_4_OP();
return CParse::OPGETCOMPO;}
".y"[^A-Za-z:] {
unput(yytext[yyleng-1]);
M_COMPUTE_ALL_4_OP();
return CParse::OPGETCOMPO;}
".z"[^A-Za-z:] {
unput(yytext[yyleng-1]);
M_COMPUTE_ALL_4_OP();
return CParse::OPGETCOMPO;}
{LETTER}{ALNUM}*/:: {
l_id = fn_lGetProcedureIdFromEditorName(yytext);
cs_params = fn_csGetProcedureParams(l_id);
if (cs_params != "")
iCount = 0;
}
{LETTER}{ALNUM}* {
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// before all, check for #defines...
//BEGIN ROMTEAM Cristi Petrescu 98-04-
M_EXPAND_DEFINE();
//END ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
// M_COMPUTE_ALL();
//End Stefan Dumitrean
if(fn_bIsProcedure(yytext,&(g_clParse.yylval)))
{
//ROMTEAM Optimisation (Ionut Grozea 24/04/98)
l_id = fn_lGetProcedureIdFromEditorName(yytext);
cs_params = fn_csGetProcedureParams(l_id);
iCount = 0;
//END ROMTEAM Optimisation (Ionut Grozea 24/04/98)
return CParse::PROCEDURE;
}
//ROMTEAM Optimisation (Ionut Grozea 24/04/98)
if (cs_params.GetLength()!=0 && iCount< cs_params.GetLength())
{
switch(cs_params[iCount])
{
case 'X':
{
iCount++;
if(fn_bIsFunction(yytext,&(g_clParse.yylval)))
return CParse::FUNCTION;
if(fn_bIsDesignerVariable(yytext,&(g_clParse.yylval)))
return CParse::DESVAR;
break;
}
case 'A':
iCount++;
if(fn_bIsMetaAction(yytext,&(g_clParse.yylval)))
return CParse::METAACTION;
break;
case 'L':
iCount++;
if(fn_bIsDesignerVariable(yytext,&(g_clParse.yylval)))
return CParse::DESVAR;
break;
case 'V':
iCount++;
if(fn_bIsDesignerVariable(yytext,&(g_clParse.yylval)))
return CParse::DESVAR;
break;
case 'P':
iCount++;
if(fn_bIsAType(yytext,&(g_clParse.yylval)))
return CParse::DVTYPE;
break;
default:
// iCount++;
break;
}
}
//END ROMTEAM Optimisation (Ionut Grozea 24/04/98)
if(fn_bIsFunction(yytext,&(g_clParse.yylval)))
return CParse::FUNCTION;
if(fn_bIsCondition(yytext,&(g_clParse.yylval)))
return CParse::CONDITION;
//ANNECY CB
// if(fn_bIsMetaAction(yytext,&(g_clParse.yylval)))
// return CParse::METAACTION;
//END
if(fn_bIsAType(yytext,&(g_clParse.yylval)))
return CParse::DVTYPE;
if(fn_bIsField(yytext,&(g_clParse.yylval)))
return CParse::FIELD;
if(fn_bIsAConstantInt(yytext,&(g_clParse.yylval)))
return CParse::CONSTANTINT;
if(fn_bIsAConstantReal(yytext,&(g_clParse.yylval)))
return CParse::CONSTANTREAL;
//ANNECY CB
if(fn_bIsMetaAction(yytext,&(g_clParse.yylval)))
return CParse::METAACTION;
//BEGIN ROMTEAM Cristi Petrescu 98-04-
if (fn_bIsSubr (yytext, & (g_clParse.yylval)))
return CParse::SUBRREF;
//END ROMTEAM Cristi Petrescu 98-04-
//END
//YOU MUST CALL THIS FUNCTION AT THE END
if(fn_bIsDesignerVariable(yytext,&(g_clParse.yylval)))
return CParse::DESVAR;
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eString,yytext);
return CParse::STRING;
}
<DECL_DSG_VAR>{LETTER}{ALNUM}* {
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// before all, check for #defines...
//BEGIN ROMTEAM Cristi Petrescu 98-04-
M_EXPAND_DEFINE ();
//END ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
// M_COMPUTE_ALL();
//End Stefan Dumitrean
if(fn_bIsAType(yytext,&(g_clParse.yylval)))
return CParse::DVTYPE;
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eString,yytext);
return CParse::STRING;
}
\"[^\"]*\" {
M_COMPUTE_ALL();
if(strcmp(yytext,"\"\"")==0)
return CParse::STRING;
//Skips first " and last "
yytext[strlen(yytext)-1]=0;
yytext++;
//ROMTEAM Optimisation (Ionut Grozea 24/04/98)
if (cs_params.GetLength()!=0 && iCount< cs_params.GetLength())
{
switch(cs_params[iCount])
{
case 'X':
iCount++;
if(fn_bIsFunction(yytext,&(g_clParse.yylval)))
return CParse::FUNCTION;
break;
case 'A':
iCount++;
if(fn_bIsAnAction(yytext,&(g_clParse.yylval)))
return CParse::ACTION;
break;
case '2':
iCount++;
if(fn_bIsMyIntelligenceBehaviour(yytext,&(g_clParse.yylval)))
return CParse::MYBEHAV;
break;
case '1':
iCount++;
if(fn_bIsMyReflexBehaviour(yytext,&(g_clParse.yylval)))
return CParse::MYREFLEX;
break;
case '6':
iCount++;
if(fn_bIsAKeyButton(yytext,&(g_clParse.yylval)))
return CParse::KEYBUTTON;
break;
case 'P':
iCount++;
if(fn_bIsAPerso(yytext,&(g_clParse.yylval)))
return CParse::PERSO;
break;
case '!':
iCount++;
if(fn_bIsAPerso(yytext,&(g_clParse.yylval)))
return CParse::PERSO;
break;
case '4':
{
iCount++;
if(fn_bIsAIntelligenceBehaviour(yytext,&(g_clParse.yylval)))
return CParse::BEHAV;
break;
}
case 'Z':
{
iCount++;
long lZdd=fn_lIsAZdd(yytext,&(g_clParse.yylval));
if(lZdd==1)
return CParse::ZDD;
else
if(lZdd>1)
return CParse::SYNTAXERROR;
break;
}
case 'E':
{
iCount++;
long lZde=fn_lIsAZde(yytext,&(g_clParse.yylval));
if(lZde==1)
return CParse::ZDE;
else
if(lZde>1)
return CParse::SYNTAXERROR;
break;
}
case 'U':
{
iCount++;
long lZdm=fn_lIsAZdm(yytext,&(g_clParse.yylval));
if(lZdm==1)
return CParse::ZDM;
else
if(lZdm>1)
return CParse::SYNTAXERROR;
break;
}
case 'W':
iCount++;
if(fn_bIsAWayPoint(yytext,&(g_clParse.yylval)))
return CParse::WAYPOINT;
break;
case '3':
iCount++;
if(fn_bIsAReflexBehaviour(yytext,&(g_clParse.yylval)))
return CParse::REFLEX;
break;
case 'M':
iCount++;
if(fn_bIsAChannel(yytext,&(g_clParse.yylval)))
return CParse::CHANNEL;
break;
case 'R':
iCount++;
if(fn_bIsASector(yytext,&(g_clParse.yylval)))
return CParse::SECTOR;
break;
case 'o':
iCount++;
if(fn_bIsALipSynchro(yytext,&(g_clParse.yylval)))
return CParse::LIPSYNCHRO;
break;
case 'J':
iCount++;
if(fn_bIsAObjectTable(yytext,&(g_clParse.yylval)))
return CParse::OBJECTTABLE;
break;
case 'G':
iCount++;
if(fn_bIsAFamily(yytext,&(g_clParse.yylval)))
return CParse::FAMILY;
break;
case 'C':
iCount++;
if(fn_bIsAGameMaterial(yytext,&(g_clParse.yylval)))
return CParse::GAMEMATERIAL;
break;
// case 'C':
// iCount++;
// if(fn_bIsALight(yytext,&(g_clParse.yylval)))
// return CParse::LIGHT;
// break;
case '$':
iCount++;
if(fn_bIsAGraph(yytext,&(g_clParse.yylval)))
return CParse::GRAPH;
break;
case '#':
iCount++;
if(fn_bIsACaps(yytext,&(g_clParse.yylval)))
return CParse::CAPS;
break;
#if 0
case 'N':
iCount++;
if(fn_bIsAPower(yytext,&(g_clParse.yylval)))
return CParse::POWER;
break;
#endif //0 car inutilise dans RM 2
case 'K':
iCount++;
if(fn_bIsAMaskType(yytext,&(g_clParse.yylval)))
return CParse::MASKTYPE;
break;
case 'T':
iCount++;
if(fn_bIsAText(yytext,&(g_clParse.yylval)))
return CParse::TEXT;
break;
case 'F':
iCount++;
if(fn_bIsASurface(yytext,&(g_clParse.yylval)))
return CParse::SURFACE;
break;
case 'H':
iCount++;
if(fn_bIsAEnvironment(yytext,&(g_clParse.yylval)))
return CParse::ENVIRONMENT;
break;
default:
iCount++;
break;
}
}
//END ROMTEAM Optimisation (Ionut Grozea 24/04/98)
if(fn_bIsAnAction(yytext,&(g_clParse.yylval)))
return CParse::ACTION;
//ANNECY CB
if(fn_bIsMyIntelligenceBehaviour(yytext,&(g_clParse.yylval)))
return CParse::MYBEHAV;
//END
if(fn_bIsMyReflexBehaviour(yytext,&(g_clParse.yylval)))
return CParse::MYREFLEX;
//ANNECY CB
if(fn_bIsAKeyButton(yytext,&(g_clParse.yylval)))
return CParse::KEYBUTTON;
//END
//ANNECY CB
// if(fn_bIsMyIntelligenceBehaviour(yytext,&(g_clParse.yylval)))
// return CParse::MYBEHAV;
//END
if(fn_bIsAPerso(yytext,&(g_clParse.yylval)))
return CParse::PERSO;
//ANNECY CB
if(fn_bIsAIntelligenceBehaviour(yytext,&(g_clParse.yylval)))
return CParse::BEHAV;
//END
//ANNECY CB
// if(fn_bIsAReflexBehaviour(yytext,&(g_clParse.yylval)))
// return CParse::REFLEX;
//END
//ANNECY CB
// if(fn_bIsAIntelligenceBehaviour(yytext,&(g_clParse.yylval)))
// return CParse::BEHAV;
//END
long lZdd=fn_lIsAZdd(yytext,&(g_clParse.yylval));
if(lZdd==1)
return CParse::ZDD;
else
if(lZdd>1)
return CParse::SYNTAXERROR;
long lZde=fn_lIsAZde(yytext,&(g_clParse.yylval));
if(lZde==1)
return CParse::ZDE;
else
if(lZde>1)
return CParse::SYNTAXERROR;
long lZdm=fn_lIsAZdm(yytext,&(g_clParse.yylval));
if(lZdm==1)
return CParse::ZDM;
else
if(lZdm>1)
return CParse::SYNTAXERROR;
long lZdr=fn_lIsAZdm(yytext,&(g_clParse.yylval));
if(lZdr==1)
return CParse::ZDR;
else
if(lZdr>1)
return CParse::SYNTAXERROR;
if(fn_bIsAWayPoint(yytext,&(g_clParse.yylval)))
return CParse::WAYPOINT;
//ANNECY CB
if(fn_bIsAReflexBehaviour(yytext,&(g_clParse.yylval)))
return CParse::REFLEX;
//END
if(fn_bIsAChannel(yytext,&(g_clParse.yylval)))
return CParse::CHANNEL;
//ANNECY CB
// if(fn_bIsASurface(yytext,&(g_clParse.yylval)))
// return CParse::SURFACE;
// if(fn_bIsAEnvironment(yytext,&(g_clParse.yylval)))
// return CParse::ENVIRONMENT;
//END
if(fn_bIsASector(yytext,&(g_clParse.yylval)))
return CParse::SECTOR;
if(fn_bIsASuperObject(yytext,&(g_clParse.yylval)))
return CParse::SUPEROBJECT;
if(fn_bIsALipSynchro(yytext,&(g_clParse.yylval)))
return CParse::LIPSYNCHRO;
if(fn_bIsAObjectTable(yytext,&(g_clParse.yylval)))
return CParse::OBJECTTABLE;
if(fn_bIsAFamily(yytext,&(g_clParse.yylval)))
return CParse::FAMILY;
if(fn_bIsAModel(yytext,&(g_clParse.yylval)))
return CParse::MODEL;
if(fn_bIsASoundEvent(yytext,&(g_clParse.yylval)))
return CParse::SOUNDEVENT;
if(fn_bIsAGameMaterial(yytext,&(g_clParse.yylval)))
return CParse::GAMEMATERIAL;
if(fn_bIsALight(yytext,&(g_clParse.yylval)))
return CParse::LIGHT;
if(fn_bIsACaps(yytext,&(g_clParse.yylval)))
return CParse::CAPS;
if(fn_bIsAGraph(yytext,&(g_clParse.yylval)))
return CParse::GRAPH;
//ANNECY CB
// if(fn_bIsAKeyButton(yytext,&(g_clParse.yylval)))
// return CParse::KEYBUTTON;
//END
if(fn_bIsAMaskType(yytext,&(g_clParse.yylval)))
return CParse::MASKTYPE;
#if 0
if(fn_bIsAPower(yytext,&(g_clParse.yylval)))
return CParse::POWER;
#endif //0 car inutilise dans RM 2
if(fn_bIsAText(yytext,&(g_clParse.yylval)))
return CParse::TEXT;
if(fn_bIsAParticleGenerator(yytext,&(g_clParse.yylval)))
return CParse::PARTGEN;
if(fn_bIsAState(yytext,&(g_clParse.yylval)))
return CParse::STATE;
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eString,yytext);
return CParse::STRING;
}
<DECL_DSG_VAR>\"[^\"]*\" {
if(strcmp(yytext,"\"\"")==0)
return CParse::STRING;
M_COMPUTE_ALL();
//Skips first " and last "
yytext[strlen(yytext)-1]=0;
yytext++;
if(fn_bIsAnAction(yytext,&(g_clParse.yylval)))
return CParse::ACTION;
if(fn_bIsAPerso(yytext,&(g_clParse.yylval)))
return CParse::PERSO;
if(fn_bIsAWayPoint(yytext,&(g_clParse.yylval)))
return CParse::WAYPOINT;
if(fn_bIsACaps(yytext,&(g_clParse.yylval)))
return CParse::CAPS;
if(fn_bIsAGraph(yytext,&(g_clParse.yylval)))
return CParse::GRAPH;
if(fn_bIsAText(yytext,&(g_clParse.yylval)))
return CParse::TEXT;
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eString,yytext);
return CParse::STRING;
}
<FRENCH,ENGLISH,DECL_DSG_VAR>("-")?{DIGIT}+ {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eConstant,atol(yytext));
return CParse::INT;
}
<FRENCH,ENGLISH,DECL_DSG_VAR>("-")?{DIGIT}+"."{DIGIT}* {
M_COMPUTE_ALL();
fn_vInitNode(&(g_clParse.yylval),m_lIndex,eReal,atof(yytext));
return CParse::REAL;
}
<FRENCH,ENGLISH,DECL_DSG_VAR>[^ \t\n\xd] {
M_COMPUTE_ALL();
return *yytext;
}
<FRENCH,ENGLISH,DECL_DSG_VAR>[ \t\n\xd] {
m_lIndex+=yyleng;
}
<FRENCH,ENGLISH,DECL_DSG_VAR>. {
/*printf("!! %s\n",yytext);*/
return *yytext;
}
<FRENCH>^"#define" {
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// trick to remember the initial state
m_eBegin = begin_french;
//yy_start_old = yy_start;
BEGIN (DEFINE);
//END ROMTEAM Cristi Petrescu 98-04-
}
<ENGLISH>^"#define" {
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// trick to remember the initial state
m_eBegin = begin_english;
//yy_start_old = yy_start;
BEGIN (DEFINE);
//END ROMTEAM Cristi Petrescu 98-04-
}
<DECL_DSG_VAR>^"#define" {
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// trick to remember the initial state
m_eBegin = begin_dsgvar;
//yy_start_old = yy_start;
BEGIN (DEFINE);
//END ROMTEAM Cristi Petrescu 98-04-
}
<DEFINE>{LETTER}{ALNUM}* {
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// get the definiton name
m_csDefineName = yytext;
// and get the text, too
BEGIN (DEFINE_TEXT);
//END ROMTEAM Cristi Petrescu 98-04-
}
<DEFINE_TEXT>[^\n]+ {
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
M_COMPUTE_ALL();
//End Stefan Dumitrean
// add the define into the table
CString csDefineText = yytext;
m_clDefineList . SetAt (m_csDefineName, csDefineText);
//END ROMTEAM Cristi Petrescu 98-04-
}
<DEFINE_TEXT>[\n] {
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Stefan Dumitrean 20-05-98
m_lIndex+=yyleng;
//End Stefan Dumitrean
// go back
//yy_start = yy_start_old;
switch (m_eBegin)
{
case begin_french:
BEGIN (FRENCH);
break;
case begin_english:
BEGIN (ENGLISH);
break;
case begin_dsgvar:
BEGIN (DECL_DSG_VAR);
break;
}
//END ROMTEAM Cristi Petrescu 98-04-
}
<DEFINE,DEFINE_TEXT>[ \t\n\xd] {
//Stefan Dumitrean 20-05-98
m_lIndex+=yyleng;
//End Stefan Dumitrean
}
%%
//Some useful macros
#define M_MAKECHAR(a) ((char *)(LPCTSTR(a)))
//ANNECY CB
#define CSTRING_EQ(cs, psz)\
{\
cs= psz;\
}
//END
//MetaAction
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsMetaAction(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsMetaAction(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_lGetMetaActionIdFromEditorName(csString);
if(M_ID_IS_VALID(lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eMetaAction,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsMetaAction(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsMetaAction(gcsGlob,pstReturn);
}
//END
//Condition
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsCondition(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsCondition(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_lGetConditionIdFromEditorName(csString);
if(M_ID_IS_VALID(lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eCondition,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsCondition(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsCondition(gcsGlob,pstReturn);
}
//END
//Designer Variable
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsDesignerVariable(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsDesignerVariable(CString csString,stReturn *pstReturn)
//END
{
//First looks in current dsg var list
//ANNECY CB
long lIndex = g_clDsgVarList.m_fn_bIsADesignerVariable(csString) - 1;
if(lIndex >= 0)
// if(g_clDsgVarList.m_fn_bIsADesignerVariable(csString))
{
// long lIndex=g_clDsgVarList.m_fn_lGetIndexOfADesignerVariable(csString);
//END
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eDsgVar,lIndex,g_pclCurrentModel);
CPA_EdIR_IntermediateCode *pclIntermediateCode=pstReturn->clIntermediateCodeList.GetTail();
pclIntermediateCode->m_fn_vSetString(csString);
return TRUE;
}
else
{
//Looks in all models
CPA_List<CPA_BaseObject> clModelsList;
g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clModelsList,"",C_szActorModelTypeName,NO_CRITERIA);
POSITION pos=clModelsList.GetHeadPosition();
BOOL bFound=FALSE;
long lNoDsgVar=0;
CPA_Actor *pclModel=NULL;
while(pos!=NULL && !bFound)
{
CPA_Actor *pclActor=(CPA_Actor *)(clModelsList.GetNext(pos));
if(pclActor->fn_bIsAvailable())
{
pclModel=pclActor;
if(pclModel!=g_pclCurrentModel)
{
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain;
CString csIn;
if(!pclBrain->m_clListOfDeclarations.IsEmpty())
{
//Gets Designer Variable MainBehaviour (first element in the list)
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclBrain->m_clListOfDeclarations.GetHead();
//Gets text declaraition
if(pclMainBehaviour->m_pclBehaviour!=NULL)
csIn=pclMainBehaviour->m_pclBehaviour->m_fn_csGetRules();
else
csIn=pclMainBehaviour->m_csText;
csIn=fn_csGetCodeWithoutComments(csIn);
//Looks for dsg var in this text
long lCurrentIndex=0;
CString csWord=fn_csGetNextWord(csIn,lCurrentIndex);
lNoDsgVar=0;
while(!csWord.IsEmpty() && !bFound)
{
BOOL bPublic = TRUE;
// skip private & public
if (fn_bIsDsgVarQualifier(csWord))
{
bPublic = csWord.CompareNoCase("private");
csWord=fn_csGetNextWord(csIn,lCurrentIndex);
}
//Gets Type
tdeDsgVarTypeId eDsgVarTypeId=(tdeDsgVarTypeId)fn_lGetDsgVarTypeIdFromEditorName(csWord);
//Gets Name
csWord=fn_csGetNextWord(csIn,lCurrentIndex);
if(csWord.CompareNoCase(csString)==0)
bFound=TRUE;
else
{
//Skips Value
fn_csGetNextWord(csIn,lCurrentIndex);
if(eDsgVarTypeId==eDsgVarType_Vector)
{
//Skips x,y,z components
fn_csGetNextWord(csIn,lCurrentIndex);
fn_csGetNextWord(csIn,lCurrentIndex);
fn_csGetNextWord(csIn,lCurrentIndex);
}
//Skips type
csWord=fn_csGetNextWord(csIn,lCurrentIndex);
lNoDsgVar++;
}
}
}
}
}
}
long lIndex=lNoDsgVar;
if(bFound)
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eDsgVar,lIndex,pclModel);
CPA_EdIR_IntermediateCode *pclIntermediateCode=pstReturn->clIntermediateCodeList.GetTail();
pclIntermediateCode->m_fn_vSetString(csString);
}
return bFound;
}
}
//ANNECY CB
BOOL fn_bIsDesignerVariable(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsDesignerVariable(gcsGlob,pstReturn);
}
//END
//ConstantInt
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAConstantInt(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAConstantInt(CString csString,stReturn *pstReturn)
//END
{
CPA_EdIR_Frame *pclMainFrame=g_pclAIInterface->m_pclIRMainFrame;
if(pclMainFrame!=NULL)
{
if(pclMainFrame->m_clConstantList.m_fn_bIsAConstant(csString))
{
CString csValue=pclMainFrame->m_clConstantList.m_fn_csGetValueOfAConstant(csString);
if(pclMainFrame->m_clConstantList.m_fn_csGetTypeOfAConstant(csString)==g_c_csInteger)
{
long lValue=atol(M_MAKECHAR(csValue));
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eConstantInt,lValue);
CPA_EdIR_IntermediateCode *pclIntermediateCode=pstReturn->clIntermediateCodeList.GetTail();
pclIntermediateCode->m_fn_vSetString(csString);
return TRUE;
}
else
return FALSE;
}
else
return FALSE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAConstantInt(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAConstantInt(gcsGlob,pstReturn);
}
//END
//ConstantReal
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAConstantReal(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAConstantReal(CString csString,stReturn *pstReturn)
//END
{
CPA_EdIR_Frame *pclMainFrame=g_pclAIInterface->m_pclIRMainFrame;
if(pclMainFrame!=NULL)
{
if(pclMainFrame->m_clConstantList.m_fn_bIsAConstant(csString))
{
CString csValue=pclMainFrame->m_clConstantList.m_fn_csGetValueOfAConstant(csString);
if(pclMainFrame->m_clConstantList.m_fn_csGetTypeOfAConstant(csString)==g_c_csDecimal)
{
double dfValue=atof(M_MAKECHAR(csValue));
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eConstantReal,dfValue);
CPA_EdIR_IntermediateCode *pclIntermediateCode=pstReturn->clIntermediateCodeList.GetTail();
pclIntermediateCode->m_fn_vSetString(csString);
return TRUE;
}
else
return FALSE;
}
else
return FALSE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAConstantReal(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAConstantReal(gcsGlob,pstReturn);
}
//END
//Type
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAType(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAType(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_lGetDsgVarTypeIdFromEditorName(csString);
if(M_ID_IS_VALID(lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eCreateDsgVar,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAType(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAType(gcsGlob,pstReturn);
}
//END
//Function
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsFunction(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsFunction(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_lGetFunctionIdFromEditorName(csString);
if(M_ID_IS_VALID(lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eFunction,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsFunction(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsFunction(gcsGlob,pstReturn);
}
//END
//Procedure
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsProcedure(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsProcedure(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_lGetProcedureIdFromEditorName(csString);
if(M_ID_IS_VALID(lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eProcedure,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsProcedure(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsProcedure(gcsGlob,pstReturn);
}
//END
//BEGIN ROMTEAM Cristi Petrescu 98-04-
//Subr
/****************************************************************************/
BOOL fn_bIsSubr(CString &csString,stReturn *pstReturn)
{
if (g_pclListOfSubrs -> m_fn_bIsInList (csString))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour = g_pclListOfSubrs -> m_fn_pclGetMainBehaviour(csString);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
long lIndex = (long) pclMainBehaviour;
fn_vInitNode (pstReturn, g_clLex . m_lIndex, eSubrRef, lIndex);
return TRUE;
}
return FALSE;
//return g_pclListOfSubrs -> m_fn_bIsInList (csString);
}
BOOL fn_bIsSubr(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsSubr(gcsGlob,pstReturn);
}
//END ROMTEAM Cristi Petrescu 98-04-
//Field
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsField(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsField(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_lGetFieldIdFromEditorName(csString);
if(M_ID_IS_VALID(lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eField,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsField(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsField(gcsGlob,pstReturn);
}
//END
//Known editor object
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAKnownEditorObject(CString &csString,stReturn *pstReturn,char *csTypeName,tdeNodeType eNodeType)
//BOOL fn_bIsAKnownEditorObject(CString csString,stReturn *pstReturn,CString csTypeName,tdeNodeType eNodeType)
//END
{
CPA_BaseObject *pclBaseObject;
pclBaseObject=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(M_MAKECHAR(csString),csTypeName);
if(pclBaseObject!=NULL)
{
if(pclBaseObject->fn_bIsAvailable()==FALSE)
pclBaseObject->GetEditor()->fn_bLoadBaseObject(pclBaseObject);
long lIndex=long(pclBaseObject->GetData());
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eNodeType,lIndex);
}
return (pclBaseObject!=NULL);
}
//Perso (and Always)
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAPerso(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAPerso(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szActorInstanceTypeName,ePerso);
}
//ANNECY CB
BOOL fn_bIsAPerso(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAPerso(gcsGlob,pstReturn);
}
//END
//For ZDD ZDM ZDE ZDR and WAY
/****************************************************************************/
//ANNECY CB
long fn_lIsAZdxOrAWay(CString &csString,long &lIndex,CString &csObjectType)
//long fn_lIsAZdxOrAWay(CString csString,long &lIndex,CString &csObjectType)
//END
{
stIndexOfNameInfo stInfo;
stInfo.csNameOfObject=csString;
CPA_DLLBase *pclActorDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetObjectDLLWithName(C_szDLLActorName));
long lResultIndex=pclActorDLL->OnQueryAction(g_pclAIInterface,C_uiActor_GetIndexOfName,(long)&stInfo);
csObjectType=stInfo.csObjectType;
CPA_Actor *pclModel=stInfo.pclModel;
switch (lResultIndex)
{
case C_wNoNameFound:
return 0;
case C_wMultipleNamesFound:
AfxMessageBox("Conflict with "+csString+"\nTry to use ListName@ObjectName");
return 2;
case C_wNoNameListFound:
return 0;
case C_wMultipleNameListsFound:
AfxMessageBox("Conflict with "+csString+"\nTry to use FamilyName@ListName@ObjectName");
return 2;
case C_wNoFamilyFound:
return 0;
case C_wMultipleFamiliesFound:
AfxMessageBox("PB : FamilyName are not unique !!!");
return 2;
default:
lIndex=lResultIndex;
return 1;
}
}
//ZDD
/****************************************************************************/
//ANNECY CB
long fn_lIsAZdd(CString &csString,stReturn *pstReturn)
//long fn_lIsAZdd(CString csString,stReturn *pstReturn)
//END
{
CString csObjectType;
long lIndex;
long lResult=fn_lIsAZdxOrAWay(csString,lIndex,csObjectType);
if(lResult!=1)
return lResult;
else
if(csObjectType==C_szZDdNameListType)
{
lIndex++;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eZdd,lIndex);
return 1;
}
else
return 0;
}
//ANNECY CB
long fn_lIsAZdd(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_lIsAZdd(gcsGlob,pstReturn);
}
//END
//ZDE
/****************************************************************************/
//ANNECY CB
long fn_lIsAZde(CString &csString,stReturn *pstReturn)
//long fn_lIsAZde(CString csString,stReturn *pstReturn)
//END
{
CString csObjectType;
long lIndex;
long lResult=fn_lIsAZdxOrAWay(csString,lIndex,csObjectType);
if(lResult!=1)
return lResult;
else
if(csObjectType==C_szZDeNameListType)
{
lIndex++;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eZde,lIndex);
return 1;
}
else
return 0;
}
//ANNECY CB
long fn_lIsAZde(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_lIsAZde(gcsGlob,pstReturn);
}
//END
//ZDM
/****************************************************************************/
//ANNECY CB
long fn_lIsAZdm(CString &csString,stReturn *pstReturn)
//long fn_lIsAZdm(CString csString,stReturn *pstReturn)
//END
{
CString csObjectType;
long lIndex;
long lResult=fn_lIsAZdxOrAWay(csString,lIndex,csObjectType);
if(lResult!=1)
return lResult;
else
if(csObjectType==C_szZDmNameListType)
{
lIndex++;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eZdm,lIndex);
return 1;
}
else
return 0;
}
//ANNECY CB
long fn_lIsAZdm(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_lIsAZdm(gcsGlob,pstReturn);
}
//END
//ZDM
/****************************************************************************/
//ANNECY CB
long fn_lIsAZdr(CString &csString,stReturn *pstReturn)
//long fn_lIsAZdr(CString csString,stReturn *pstReturn)
//END
{
CString csObjectType;
long lIndex;
long lResult=fn_lIsAZdxOrAWay(csString,lIndex,csObjectType);
if(lResult!=1)
return lResult;
else
if(csObjectType==C_szZDrNameListType)
{
lIndex++;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eZdr,lIndex);
return 1;
}
else
return 0;
}
//ANNECY CB
long fn_lIsAZdr(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_lIsAZdr(gcsGlob,pstReturn);
}
//END
//***********************************************************************
void fn_vSplitName(CString csName,CString &csOwner,CString &csObject)
{
int iPos;
// extract object
iPos = csName.ReverseFind('@');
if (iPos != -1)
{
csObject = csName.Right(csName.GetLength()-iPos-1);
csOwner = csName.Left(iPos);
}
else
{
csObject = csName;
}
}
//Action
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAnAction(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAnAction(CString csString,stReturn *pstReturn)
//END
{
//Looks if it is a action of the current family
long lIndex=long(((EdActors_EditorActorModel *)g_pclCurrentModel->m_fn_pclGetEditorActor())->m_pclBrain->m_fn_pvGetStateHandle(csString));
if(lIndex!=NULL)
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eAction,lIndex);
return TRUE;
}
else
{
CPA_BaseObject *pclOwner=NO_CRITERIA;
//Try to split action name
CString csFamily;
CString csAction;
fn_vSplitName(csString,csFamily,csAction);
if(!csFamily.IsEmpty())
pclOwner=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(M_MAKECHAR(csFamily),C_szFamilyTypeName);
//Looks in other family
CPA_List<CPA_BaseObject> clObjectLists;
long lNumActions=g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clObjectLists,M_MAKECHAR(csAction),C_szActionTypeName,pclOwner);
CPA_BaseObject *pclBaseObject=NULL;
if(lNumActions==1)
{
pclBaseObject=clObjectLists.GetHead();
if(pclBaseObject!=NULL)
{
if(pclBaseObject->fn_bIsAvailable()==FALSE)
pclBaseObject->GetEditor()->fn_bLoadBaseObject(pclBaseObject);
CPA_Action *pclAction=(CPA_Action *)pclBaseObject;
if(pclAction->mfn_p_oGetDefaultState()!=NULL)
{
lIndex=long(pclAction->mfn_p_oGetDefaultState()->GetData());
}
else
{
AfxMessageBox("The action \""+pclAction->GetName()+"\" has no Initial State !!!!");
return FALSE;
}
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eAction,lIndex);
}
}
else
if(lNumActions>1)
{
AfxMessageBox("Conflict with "+csString+"\nTry to use FamilyName@ActionName");
}
return (pclBaseObject!=NULL);
}
}
//ANNECY CB
BOOL fn_bIsAnAction(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAnAction(gcsGlob,pstReturn);
}
//END
//WayPoint
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAWayPoint(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAWayPoint(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szWayPointTypeName,eWayPoint);
}
//ANNECY CB
BOOL fn_bIsAWayPoint(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAWayPoint(gcsGlob,pstReturn);
}
//END
//Channel
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAChannel(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAChannel(CString csString,stReturn *pstReturn)
//END
{
CPA_DLLBase *pclFamilyDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetToolDLLWithName(C_szDLLFamilyName));
if(pclFamilyDLL!=NULL)
{
CString csFamilyName;
CString csChannelName;
fn_vSplitName(csString,csFamilyName,csChannelName);
tdstChannelInfoSearch stChannelInfo;
if(!csFamilyName.IsEmpty())
stChannelInfo.p_oFamily=(CPA_Family *)g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(M_MAKECHAR(csFamilyName),C_szFamilyTypeName);
else
stChannelInfo.p_oFamily=NULL;
stChannelInfo.szChannel=(char *)LPCTSTR(csChannelName);
stChannelInfo.lIndexOfChannel=0;
if(pclFamilyDLL->OnQueryAction(g_pclAIInterface,C_uiGetChannel,(LPARAM)&stChannelInfo)==1)
{
long lIndex=stChannelInfo.lIndexOfChannel;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eModule,lIndex);
return TRUE;
}
else
if(pclFamilyDLL->OnQueryAction(g_pclAIInterface,C_uiGetChannel,(LPARAM)&stChannelInfo)==2)
{
AfxMessageBox("Conflict with "+csString+"\nTry to use FamilyName@ObjectName");
}
else
return FALSE;
}
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAChannel(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAChannel(gcsGlob,pstReturn);
}
//END
//Surface
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsASurface(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsASurface(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szSurfaceTypeName,eSurface);
}
//ANNECY CB
BOOL fn_bIsASurface(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsASurface(gcsGlob,pstReturn);
}
//END
//Environment
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAEnvironment(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAEnvironment(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szEnvironmentTypeName,eEnvironment);
}
//ANNECY CB
BOOL fn_bIsAEnvironment(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAEnvironment(gcsGlob,pstReturn);
}
//END
//LipSynchro
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsALipSynchro(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsALipSynchro(CString csString,stReturn *pstReturn)
//END
{
CPA_DLLBase *pclTLSDLL=(CPA_DLLBase*)(g_pclAIInterface->GetMainWorld()->GetToolDLLWithName(C_szLipSyncDLLName));
if(pclTLSDLL!=NULL)
{
csString+=".SYN";
tdstLipSyn_Info stLipSyn_Info;
stLipSyn_Info.pFamily=g_pclCurrentModel->m_pub_fn_pclGetFamily();
stLipSyn_Info.csName=csString;
CPA_SaveObject *pclLipSynchro;
pclLipSynchro=(CPA_SaveObject *)pclTLSDLL->OnQueryAction(g_pclAIInterface,C_uiLoadLipSynchro,(LPARAM)&stLipSyn_Info);
if(pclLipSynchro!=NULL)
{
long lIndex=long(pclLipSynchro->GetData());
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eLipSynchro,lIndex);
}
return (pclLipSynchro!=NULL);
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsALipSynchro(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsALipSynchro(gcsGlob,pstReturn);
}
//END
//Sector
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsASector(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsASector(CString csString,stReturn *pstReturn)
//END
{
CPA_List<CPA_SuperObject> *pclList;
pclList=g_pclAIInterface->GetMainWorld()->GetInterface()->GetObjectListByType(C_szSectorTypeName);
CPA_SuperObject *pclSector=NULL;
BOOL bFound=FALSE;
if(pclList!=NULL)
{
POSITION pos=pclList->GetHeadPosition();
while(pos!=NULL && !bFound)
{
pclSector=pclList->GetNext(pos);
bFound=(pclSector->GetObject()->GetName().CompareNoCase(csString)==0);
}
if(bFound)
{
long lIndex=long(pclSector->GetData());
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eSector,lIndex);
}
}
return (bFound);
}
//ANNECY CB
BOOL fn_bIsASector(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsASector(gcsGlob,pstReturn);
}
//END
//SuperObject
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsASuperObject(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsASuperObject(CString csString,stReturn *pstReturn)
//END
{
//ANNECY VL 26/03/98{
//CPA_SuperObject *pclSuperObject=g_pclAIInterface->GetMainWorld()->GetInterface()->GetSuperObject("All Types",csString);
CPA_SuperObject *pclSuperObject = (CPA_SuperObject *) g_pclAIInterface->GetMainWorld()->fn_p_oFindObject( csString, "SuperObject" );
//ENDANNECY VL}
if(pclSuperObject!=NULL)
{
long lIndex=long(pclSuperObject->GetData());
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eSuperObject,lIndex);
}
return (pclSuperObject!=NULL);
}
//ANNECY CB
BOOL fn_bIsASuperObject(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsASuperObject(gcsGlob,pstReturn);
}
//END
//ObjectTable
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAObjectTable(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAObjectTable(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szObjectTableTypeName,eObjectTable);
}
//ANNECY CB
BOOL fn_bIsAObjectTable(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAObjectTable(gcsGlob,pstReturn);
}
//END
//Family
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAFamily(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAFamily(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szFamilyTypeName,eFamily);
}
//ANNECY CB
BOOL fn_bIsAFamily(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAFamily(gcsGlob,pstReturn);
}
//END
//Model
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAModel(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAModel(CString csString,stReturn *pstReturn)
//END
{
CPA_BaseObject *pclBaseObject;
pclBaseObject=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(M_MAKECHAR(csString),C_szActorModelTypeName);
if(pclBaseObject!=NULL)
{
if(pclBaseObject->fn_bIsAvailable()==FALSE)
pclBaseObject->GetEditor()->fn_bLoadBaseObject(pclBaseObject);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eModel,(long)pclBaseObject);
}
return (pclBaseObject!=NULL);
}
//ANNECY CB
BOOL fn_bIsAModel(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAModel(gcsGlob,pstReturn);
}
//END
//SoundEvent
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsASoundEvent(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsASoundEvent(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szSoundEventTypeName,eSoundEvent);
}
//ANNECY CB
BOOL fn_bIsASoundEvent(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsASoundEvent(gcsGlob,pstReturn);
}
//END
//GameMaterial
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAGameMaterial(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAGameMaterial(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szGameMaterialTypeName,eGameMaterial);
}
//ANNECY CB
BOOL fn_bIsAGameMaterial(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAGameMaterial(gcsGlob,pstReturn);
}
//END
//Light
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsALight(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsALight(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szLightTypeName,eLight);
}
//ANNECY CB
BOOL fn_bIsALight(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsALight(gcsGlob,pstReturn);
}
//END
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsACaps(CString &csString, stReturn *pstReturn)
//BOOL fn_bIsACaps(CString csString, stReturn *pstReturn)
//END
{
long lStringLength = csString.GetLength();
if (lStringLength > 32)
return FALSE;
for (int i = 0 ; i < lStringLength ; i ++)
{
char cCharAt = csString.GetAt(i);
if ( (cCharAt != '0') && (cCharAt != '1') )
return FALSE;
}
char* dummy;
unsigned long ulData = strtoul(csString, &dummy, 2);
fn_vInitNode(pstReturn, g_clLex.m_lIndex, eCaps, (long)ulData);
return TRUE;
}
//ANNECY CB
BOOL fn_bIsACaps(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsACaps(gcsGlob,pstReturn);
}
//END
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAGraph(CString &csString, stReturn *pstReturn)
//BOOL fn_bIsAGraph(CString csString, stReturn *pstReturn)
//END
{
WP_tdHandleOfGraph hGraph = WPG_fn_hGetGraph(csString.GetBuffer(255));
if (hGraph != NULL)
{
fn_vInitNode(pstReturn, g_clLex.m_lIndex, eGraph, (long)hGraph);
}
return (hGraph != NULL);
}
//ANNECY CB
BOOL fn_bIsAGraph(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAGraph(gcsGlob,pstReturn);
}
//END
//
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsThisBehaviourIsUnique(CString &csString,CString &csBehaviourName,CPA_BaseObject **ppclModel)
//BOOL fn_bIsThisBehaviourIsUnique(CString csString,CString &csBehaviourName,CPA_BaseObject **ppclModel)
//END
{
//Checks for multiple name
CString csModelName;
fn_vSplitName(csString,csModelName,csBehaviourName);
*ppclModel=NO_CRITERIA;
if(!csModelName.IsEmpty())
{
*ppclModel=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(M_MAKECHAR(csModelName),C_szActorModelTypeName);
if(*ppclModel==NULL)
return FALSE;
}
CPA_List<CPA_BaseObject> clBehavioursList;
long lNumberOfBehaviours;
lNumberOfBehaviours=g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clBehavioursList,csBehaviourName,C_szIABehaviourTypeName,*ppclModel);
if(lNumberOfBehaviours==0)
return FALSE;
if(lNumberOfBehaviours>1)
{
if(csModelName.IsEmpty())
AfxMessageBox("Conflict with "+csString+"\nTry to use ModelName@BehaviourName");
return FALSE;
}
if(*ppclModel==NO_CRITERIA)
*ppclModel=NULL;
return TRUE;
}
//Reflex Behaviour
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAReflexBehaviour(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAReflexBehaviour(CString csString,stReturn *pstReturn)
//END
{
CPA_BaseObject *pclModel;
//Checks for multiple name
CString csBehaviourName;
if(fn_bIsThisBehaviourIsUnique(csString,csBehaviourName,&pclModel))
{
//Checks if it is a reflex behaviour
if(pclModel!=NULL)
{
//The model is known
CPA_Actor *pclActorModel=(CPA_Actor *)pclModel;
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclActorModel->m_fn_pclGetEditorActor())->m_pclBrain;
CPA_EdIR_MainBehaviourList *pclReflexList=&(pclBrain->m_clListOfReflexBehaviours);
if(pclReflexList->m_fn_bIsInList(csBehaviourName))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclReflexList->m_fn_pclGetMainBehaviour(csBehaviourName);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
long lIndex=(long)pclMainBehaviour;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eRfxBehaviour,lIndex);
return TRUE;
}
else
return FALSE;
}
else
{
//Gets all models
CPA_List<CPA_BaseObject> clModelsList;
g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clModelsList,"",C_szActorModelTypeName,NO_CRITERIA);
POSITION pos=clModelsList.GetHeadPosition();
long lIndex=-1;
while(pos!=NULL && lIndex==-1)
{
CPA_Actor *pclModel=(CPA_Actor *)(clModelsList.GetNext(pos));
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain;
CPA_EdIR_MainBehaviourList *pclReflexList=&(pclBrain->m_clListOfReflexBehaviours);
if(pclReflexList->m_fn_bIsInList(csBehaviourName))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclReflexList->m_fn_pclGetMainBehaviour(csBehaviourName);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
lIndex=(long)pclMainBehaviour;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eRfxBehaviour,lIndex);
}
}
return (lIndex!=-1);
}
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAReflexBehaviour(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAReflexBehaviour(gcsGlob,pstReturn);
}
//END
//Intelligence Behaviour
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAIntelligenceBehaviour(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAIntelligenceBehaviour(CString csString,stReturn *pstReturn)
//END
{
CPA_BaseObject *pclModel;
//Checks for multiple name
CString csBehaviourName;
if(fn_bIsThisBehaviourIsUnique(csString,csBehaviourName,&pclModel))
{
//Checks if it is a reflex behaviour
if(pclModel!=NULL)
{
//The model is known
CPA_Actor *pclActorModel=(CPA_Actor *)pclModel;
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclActorModel->m_fn_pclGetEditorActor())->m_pclBrain;
CPA_EdIR_MainBehaviourList *pclIntelligenceList=&(pclBrain->m_clListOfIntelligenceBehaviours);
if(pclIntelligenceList->m_fn_bIsInList(csBehaviourName))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclIntelligenceList->m_fn_pclGetMainBehaviour(csBehaviourName);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
long lIndex=(long)pclMainBehaviour;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eIABehaviour,lIndex);
return TRUE;
}
else
return FALSE;
}
else
{
//Gets all models
CPA_List<CPA_BaseObject> clModelsList;
g_pclAIInterface->GetMainWorld()->fn_lFindObjects(&clModelsList,"",C_szActorModelTypeName,NO_CRITERIA);
POSITION pos=clModelsList.GetHeadPosition();
long lIndex=-1;
while(pos!=NULL && lIndex==-1)
{
CPA_Actor *pclModel=(CPA_Actor *)(clModelsList.GetNext(pos));
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain;
CPA_EdIR_MainBehaviourList *pclIntelligenceList=&(pclBrain->m_clListOfIntelligenceBehaviours);
if(pclIntelligenceList->m_fn_bIsInList(csBehaviourName))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclIntelligenceList->m_fn_pclGetMainBehaviour(csBehaviourName);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
lIndex=(long)pclMainBehaviour;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eIABehaviour,lIndex);
}
}
return (lIndex!=-1);
}
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAIntelligenceBehaviour(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAIntelligenceBehaviour(gcsGlob,pstReturn);
}
//END
//Reflex Behaviour (for me)
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsMyReflexBehaviour(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsMyReflexBehaviour(CString csString,stReturn *pstReturn)
//END
{
CPA_BaseObject *pclModel;
//Checks for multiple name
CString csBehaviourName;
if(fn_bIsThisBehaviourIsUnique(csString,csBehaviourName,&pclModel))
{
CPA_Actor *pclModel=g_pclCurrentModel;
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain;
CPA_EdIR_MainBehaviourList *pclReflexList=&(pclBrain->m_clListOfReflexBehaviours);
if(pclReflexList->m_fn_bIsInList(csBehaviourName))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclReflexList->m_fn_pclGetMainBehaviour(csBehaviourName);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
long lIndex=(long)pclMainBehaviour;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eRfxBehaviour,lIndex);
return TRUE;
}
else
return FALSE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsMyReflexBehaviour(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsMyReflexBehaviour(gcsGlob,pstReturn);
}
//END
//Intelligence Behaviour (for me)
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsMyIntelligenceBehaviour(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsMyIntelligenceBehaviour(CString csString,stReturn *pstReturn)
//END
{
CPA_BaseObject *pclModel;
//Checks for multiple name
CString csBehaviourName;
if(fn_bIsThisBehaviourIsUnique(csString,csBehaviourName,&pclModel))
{
CPA_Actor *pclModel=g_pclCurrentModel;
CPA_EdIR_Brain *pclBrain=((EdActors_EditorActorModel *)pclModel->m_fn_pclGetEditorActor())->m_pclBrain;
CPA_EdIR_MainBehaviourList *pclIntelligenceList=&(pclBrain->m_clListOfIntelligenceBehaviours);
if(pclIntelligenceList->m_fn_bIsInList(csBehaviourName))
{
CPA_EdIR_MainBehaviour *pclMainBehaviour=pclIntelligenceList->m_fn_pclGetMainBehaviour(csBehaviourName);
//Keeps the editor pointer
//Converts it to a engine pointer before engine start
long lIndex=(long)pclMainBehaviour;
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eIABehaviour,lIndex);
return TRUE;
}
else
return FALSE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsMyIntelligenceBehaviour(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsMyIntelligenceBehaviour(gcsGlob,pstReturn);
}
//END
//KeyButton
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAKeyButton(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAKeyButton(CString csString,stReturn *pstReturn)
//END
{
long lIndex=(long)IPT_fn_hGetEntryActionHandle(M_MAKECHAR(csString));
if(IPT_fn_bIsAValidEntryActionHandle((IPT_tdxHandleToEntryElement)lIndex))
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eKeyButton,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAKeyButton(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAKeyButton(gcsGlob,pstReturn);
}
//END
//Mask Type
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAMaskType(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAMaskType(CString csString,stReturn *pstReturn)
//END
{
CPA_BaseObject *pclMaskType;
pclMaskType=g_pclAIInterface->GetMainWorld()->fn_p_oFindObject(M_MAKECHAR(csString),C_szMaterialColName);
if(pclMaskType!=NULL)
{
if(pclMaskType->fn_bIsAvailable()==FALSE)
pclMaskType->GetEditor()->fn_bLoadBaseObject(pclMaskType);
long lIndex=(long)(*(unsigned char *)(pclMaskType->GetData()));
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eMaskType,lIndex);
}
return (pclMaskType!=NULL);
}
//ANNECY CB
BOOL fn_bIsAMaskType(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAMaskType(gcsGlob,pstReturn);
}
//END
#if 0
//Power
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAPower(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAPower(CString csString,stReturn *pstReturn)
//END
{
long lIndex=fn_uwGetPowerValueFromString(M_MAKECHAR(csString));
if(lIndex!=INV_C_uwNotValid)
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,ePower,lIndex);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAPower(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAPower(gcsGlob,pstReturn);
}
//END
#endif //0 car inutilise dans RM2
//Text
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAText(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAText(CString csString,stReturn *pstReturn)
//END
{
FON_tdxHandleOfText hText = FON_fn_hGetTextHandleWithoutWarning(M_MAKECHAR(csString));
if ( hText != FON_C_xInvalidTextHandle )
{
fn_vInitNode(pstReturn,g_clLex.m_lIndex,eText,hText);
return TRUE;
}
else
return FALSE;
}
//ANNECY CB
BOOL fn_bIsAText(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAText(gcsGlob,pstReturn);
}
//END
//ParticleGenerator
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAParticleGenerator(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAParticleGenerator(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szPartGenGeneratorName,eParticleGenerator);
}
//ANNECY CB
BOOL fn_bIsAParticleGenerator(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAParticleGenerator(gcsGlob,pstReturn);
}
//END
//State
/****************************************************************************/
//ANNECY CB
BOOL fn_bIsAState(CString &csString,stReturn *pstReturn)
//BOOL fn_bIsAState(CString csString,stReturn *pstReturn)
//END
{
return fn_bIsAKnownEditorObject(csString,pstReturn,C_szStateTypeName,eState);
}
//ANNECY CB
BOOL fn_bIsAState(char *csString,stReturn *pstReturn)
{
CSTRING_EQ(gcsGlob, csString);
return fn_bIsAState(gcsGlob,pstReturn);
}
//END
/****************************************************************************/
void fn_vInitNode(stReturn *pstReturn,long lOffset,tdeNodeType eNodeType,long lIndex,CPA_Actor *pclModel)
{
pstReturn->clIntermediateCodeList=new CPA_EdIR_IntermediateCode(lOffset,eNodeType,lIndex,pclModel);
}
/****************************************************************************/
void fn_vInitNode(stReturn *pstReturn,long lOffset,tdeNodeType eNodeType,double dfValue)
{
pstReturn->clIntermediateCodeList=new CPA_EdIR_IntermediateCode(lOffset,eNodeType,dfValue);
}
/****************************************************************************/
void fn_vInitNode(stReturn *pstReturn,long lOffset,tdeNodeType eNodeType,CString csString)
{
pstReturn->clIntermediateCodeList=new CPA_EdIR_IntermediateCode(lOffset,eNodeType,csString);
}
/****************************************************************************/
CLex::~CLex()
{
if(yy_current_buffer)
yy_delete_buffer(yy_current_buffer);
}
/****************************************************************************/
void CLex::yyinit(char *szStringToParse,tdeTypeText eTypeText)
{
m_lIndex=0;
m_lOldIndex=0;
m_lIndexWithoutSpaceAndTab=0;
m_lOldMacroIndex=0;
m_bIsInMacro=FALSE;
//BEGIN ROMTEAM Cristi Petrescu 98-04-
m_bIsInDefine = FALSE;
m_clDefineList . RemoveAll ();
m_clDefineContextStack . m_fn_vDestroyAndRemoveAllEntries ();
//END ROMTEAM Cristi Petrescu 98-04-
m_eTypeText=eTypeText;
if(yy_current_buffer)
yyrestart(NULL);
m_pcIndex=szStringToParse;
if(m_eTypeText==DsgVarText)
BEGIN(DECL_DSG_VAR);
else
if(g_pclAIInterface->M_GetMainWorld()->GetInterface()->fn_csGetCurrentLanguage()=="French")
BEGIN(FRENCH);
else
BEGIN(ENGLISH);
}
//BEGIN ROMTEAM Cristi Petrescu 98-04-
void CPA_EdIR_DefineContextStack :: m_fn_vDestroyAndRemoveAllEntries (void)
{
POSITION pos=GetHeadPosition();
while(pos!=NULL)
delete GetNext(pos);
RemoveAll();
}
void CLex :: m_fn_vEnterContext (char *szStringToParse)
{
// get the current context
CPA_EdIR_DefineContext *pCurrentDefineContext = new CPA_EdIR_DefineContext ();
pCurrentDefineContext -> m_pcIndex = m_pcIndex;
pCurrentDefineContext -> m_bufLexContext = yy_current_buffer;
// push the current context
m_clDefineContextStack . AddTail (pCurrentDefineContext);
// build the new state
YY_BUFFER_STATE bufNewContext = yy_create_buffer (NULL, YY_BUF_SIZE);
// and activate it
m_pcIndex = szStringToParse;
yy_switch_to_buffer (bufNewContext);
}
void CLex :: m_fn_vExitContext (void)
{
// cleanup the current state
yy_delete_buffer (yy_current_buffer);
// pop the old context
CPA_EdIR_DefineContext *pOldDefineContext = m_clDefineContextStack . RemoveTail ();
// activate it
m_pcIndex = pOldDefineContext -> m_pcIndex;
yy_switch_to_buffer (pOldDefineContext -> m_bufLexContext);
// and clean
delete pOldDefineContext;
}
//END ROMTEAM Cristi Petrescu 98-04-
#endif //D_ED_IR_ACTIVE