From f7d892cf4ef6bfce3747c4b6a810d4828b79833d Mon Sep 17 00:00:00 2001 From: Krzysztof H Date: Mon, 19 Mar 2012 12:44:39 +0100 Subject: Last coding fix ;) --- src/CBot/CBotProgram.cpp | 131 ++++++++++++++++++++++++----------------------- 1 file changed, 66 insertions(+), 65 deletions(-) (limited to 'src/CBot/CBotProgram.cpp') diff --git a/src/CBot/CBotProgram.cpp b/src/CBot/CBotProgram.cpp index a32d51b..f157c4c 100644 --- a/src/CBot/CBotProgram.cpp +++ b/src/CBot/CBotProgram.cpp @@ -1,4 +1,4 @@ -// * This file is part of the COLOBOT source code +// * This file is part of the COLOBOT source code // * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch // * // * This program is free software: you can redistribute it and/or modify @@ -12,7 +12,8 @@ // * GNU General Public License for more details. // * // * You should have received a copy of the GNU General Public License -// * along with this program. If not, see http://www.gnu.org/licenses/. +// * along with this program. If not, see http://www.gnu.org/licenses/.////////////////////////////////////////////////////////////////////// +// gestion de base d'un programme CBot #include "CBot.h" #include @@ -67,8 +68,8 @@ BOOL CBotProgram::Compile( const char* program, CBotStringArray& ListFonctions, Stop(); // delete m_pClass; - m_pClass->Purge(); // purge les anciennes d�finitions des classes - // mais sans d�truire l'object + m_pClass->Purge(); // purge les anciennes définitions des classes + // mais sans détruire l'object m_pClass = NULL; delete m_Prog; m_Prog= NULL; @@ -84,12 +85,12 @@ BOOL CBotProgram::Compile( const char* program, CBotStringArray& ListFonctions, CBotCStack* pStack = new CBotCStack(NULL); - CBotToken* p = pBaseToken->GivNext(); // saute le 1er token (s�parateur) + CBotToken* p = pBaseToken->GivNext(); // saute le 1er token (séparateur) - pStack->SetBotCall(this); // d�fini les routines utilisables + pStack->SetBotCall(this); // défini les routines utilisables CBotCall::SetPUser(pUser); - // fait une premi�re passe rapide juste pour prendre les ent�tes de routines et de classes + // fait une première passe rapide juste pour prendre les entêtes de routines et de classes while ( pStack->IsOk() && p != NULL && p->GivType() != 0) { if ( IsOfType(p, ID_SEP) ) continue; // des point-virgules qui trainent @@ -120,7 +121,7 @@ BOOL CBotProgram::Compile( const char* program, CBotStringArray& ListFonctions, // CBotFunction* temp = NULL; CBotFunction* next = m_Prog; // reprend la liste - p = pBaseToken->GivNext(); // revient au d�but + p = pBaseToken->GivNext(); // revient au début while ( pStack->IsOk() && p != NULL && p->GivType() != 0 ) { @@ -130,7 +131,7 @@ BOOL CBotProgram::Compile( const char* program, CBotStringArray& ListFonctions, ( p->GivType() == ID_PUBLIC && p->GivNext()->GivType() == ID_CLASS )) { m_bCompileClass = TRUE; - CBotClass::Compile(p, pStack); // compl�te la d�finition de la classe + CBotClass::Compile(p, pStack); // complète la définition de la classe } else { @@ -142,7 +143,7 @@ BOOL CBotProgram::Compile( const char* program, CBotStringArray& ListFonctions, } } -// delete m_Prog; // la liste de la 1�re passe +// delete m_Prog; // la liste de la 1ère passe // m_Prog = temp; // la liste de la seconde passe if ( !pStack->IsOk() ) @@ -184,12 +185,12 @@ BOOL CBotProgram::Start(const char* name) #if STACKMEM m_pStack = CBotStack::FirstStack(); #else - m_pStack = new CBotStack(NULL); // cr�e une pile d'ex�cution + m_pStack = new CBotStack(NULL); // crée une pile d'exécution #endif m_pStack->SetBotCall(this); // bases pour les routines - return TRUE; // on est pr�t pour un Run() + return TRUE; // on est prêt pour un Run() } BOOL CBotProgram::GetPosition(const char* name, int& start, int& stop, CBotGet modestart, CBotGet modestop) @@ -217,13 +218,13 @@ BOOL CBotProgram::Run(void* pUser, int timer) if (m_pInstance != NULL && m_pInstance->m_pUserPtr != NULL) pUser = m_pInstance->m_pUserPtr; - m_pStack->Reset(pUser); // vide l'�ventuelle erreur pr�c�dente, et remet le timer + m_pStack->Reset(pUser); // vide l'éventuelle erreur précédente, et remet le timer if ( timer >= 0 ) m_pStack->SetTimer(timer); m_pStack->SetBotCall(this); // bases pour les routines #if STACKRUN - // reprend l'ex�cution sur le haut de la pile + // reprend l'exécution sur le haut de la pile ok = m_pStack->Execute(); if ( ok ) { @@ -234,7 +235,7 @@ BOOL CBotProgram::Run(void* pUser, int timer) ppVar[2] = NULL; ok = m_pRun->Execute(ppVar, m_pStack, m_pInstance); #else - // revient sur l'ex�cution normale + // revient sur l'exécution normale ok = m_pRun->Execute(NULL, m_pStack, m_pInstance); #endif } @@ -242,7 +243,7 @@ BOOL CBotProgram::Run(void* pUser, int timer) ok = m_pRun->Execute(NULL, m_pStack, m_pInstance); #endif - // termin� sur une erreur ? + // terminé sur une erreur ? if (!ok && !m_pStack->IsOk()) { m_ErrorCode = m_pStack->GivError(m_ErrorStart, m_ErrorEnd); @@ -252,10 +253,10 @@ BOOL CBotProgram::Run(void* pUser, int timer) delete m_pStack; #endif m_pStack = NULL; - return TRUE; // ex�cution termin�e !! + return TRUE; // exécution terminée !! } - if ( ok ) m_pRun = NULL; // plus de fonction en ex�cution + if ( ok ) m_pRun = NULL; // plus de fonction en exécution return ok; error: @@ -345,7 +346,7 @@ CBotString CBotProgram::GivErrorText(int code) if (TextError.IsEmpty()) { char buf[100]; - sprintf(buf, "Exception num�ro %d.", code); + sprintf(buf, "Exception numéro %d.", code); TextError = buf; } return TextError; @@ -361,7 +362,7 @@ BOOL CBotProgram::AddFunction(const char* name, BOOL rExec (CBotVar* pVar, CBotVar* pResult, int& Exception, void* pUser), CBotTypResult rCompile (CBotVar* &pVar, void* pUser)) { - // m�morise les pointeurs aux deux fonctions + // mémorise les pointeurs aux deux fonctions return CBotCall::AddFunction(name, rExec, rCompile); } @@ -544,12 +545,12 @@ BOOL CBotProgram::RestoreState(FILE* pf) #endif m_pStack = NULL; - // r�cup�re la pile depuis l'enregistrement - // utilise un pointeur NULL (m_pStack) mais c'est ok comme �a + // récupère la pile depuis l'enregistrement + // utilise un pointeur NULL (m_pStack) mais c'est ok comme ça if (!m_pStack->RestoreState(pf, m_pStack)) return FALSE; m_pStack->SetBotCall(this); // bases pour les routines - // r�tabli certains �tats dans la pile selon la structure + // rétabli certains états dans la pile selon la structure m_pRun->RestoreState(NULL, m_pStack, m_pInstance); return TRUE; } @@ -597,16 +598,16 @@ BOOL CBotCall::AddFunction(const char* name, { if ( p->GivName() == name ) { - // lib�re une fonction qu'on red�fini + // libère une fonction qu'on redéfini if ( pp ) pp->m_next = p->m_next; else m_ListCalls = p->m_next; pp = p; p = p->m_next; - pp->m_next = NULL; // ne pas d�truire la suite de la liste + pp->m_next = NULL; // ne pas détruire la suite de la liste delete pp; continue; } - pp = p; // pointeur pr�c�dent + pp = p; // pointeur précédent p = p->m_next; } @@ -620,7 +621,7 @@ BOOL CBotCall::AddFunction(const char* name, // transforme le tableau de pointeurs aux variables -// en une liste de variables cha�n�es +// en une liste de variables chaînées CBotVar* MakeListVars(CBotVar** ppVars, BOOL bSetVal=FALSE) { int i = 0; @@ -644,8 +645,8 @@ CBotVar* MakeListVars(CBotVar** ppVars, BOOL bSetVal=FALSE) return pVar; } -// trouve un appel acceptable selon le nom de la proc�dure -// et les param�tres donn�s +// trouve un appel acceptable selon le nom de la procédure +// et les paramètres donnés CBotTypResult CBotCall::CompileCall(CBotToken* &p, CBotVar** ppVar, CBotCStack* pStack, long& nIdent) { @@ -662,7 +663,7 @@ CBotTypResult CBotCall::CompileCall(CBotToken* &p, CBotVar** ppVar, CBotCStack* CBotTypResult r = pt->m_rComp(pVar2, m_pUser); int ret = r.GivType(); - // si une classe est retourn�e, c'est en fait un pointeur + // si une classe est retournée, c'est en fait un pointeur if ( ret == CBotTypClass ) r.SetType( ret = CBotTypPointer ); if ( ret > 20 ) @@ -743,19 +744,19 @@ int CBotCall::DoCall(long& nIdent, CBotToken* token, CBotVar** ppVar, CBotStack* fund: #if !STACKRUN - // fait la liste des param�tres selon le contenu de la pile (pStackVar) + // fait la liste des paramètres selon le contenu de la pile (pStackVar) CBotVar* pVar = MakeListVars(ppVar, TRUE); CBotVar* pVarToDelete = pVar; - // cr�e une variable pour le r�sultat + // crée une variable pour le résultat CBotVar* pResult = rettype.Eq(0) ? NULL : CBotVar::Create("", rettype); CBotVar* pRes = pResult; int Exception = 0; int res = pt->m_rExec(pVar, pResult, Exception, pStack->GivPUser()); - if ( pResult != pRes ) delete pRes; // si r�sultat diff�rent rendu + if ( pResult != pRes ) delete pRes; // si résultat différent rendu delete pVarToDelete; if (res == FALSE) @@ -781,12 +782,12 @@ fund: CBotStack* pile = pStack->AddStackEOX(pt); if ( pile == EOX ) return TRUE; - // fait la liste des param�tres selon le contenu de la pile (pStackVar) + // fait la liste des paramètres selon le contenu de la pile (pStackVar) CBotVar* pVar = MakeListVars(ppVar, TRUE); CBotVar* pVarToDelete = pVar; - // cr�e une variable pour le r�sultat + // crée une variable pour le résultat CBotVar* pResult = rettype.Eq(0) ? NULL : CBotVar::Create("", rettype); pile->SetVar( pVar ); @@ -847,12 +848,12 @@ BOOL CBotCall::Run(CBotStack* pStack) { pStack->SetError(Exception); } - if ( pResult != pRes ) delete pResult; // si r�sultat diff�rent rendu + if ( pResult != pRes ) delete pResult; // si résultat différent rendu return FALSE; } if ( pResult != NULL ) pStack->SetCopyVar( pResult ); - if ( pResult != pRes ) delete pResult; // si r�sultat diff�rent rendu + if ( pResult != pRes ) delete pResult; // si résultat différent rendu return TRUE; } @@ -878,8 +879,8 @@ CBotCallMethode::~CBotCallMethode() m_next = NULL; } -// trouve un appel acceptable selon le nom de la proc�dure -// et les param�tres donn�s +// trouve un appel acceptable selon le nom de la procédure +// et les paramètres donnés CBotTypResult CBotCallMethode::CompileCall(const char* name, CBotVar* pThis, CBotVar** ppVar, CBotCStack* pStack, @@ -939,7 +940,7 @@ int CBotCallMethode::DoCall(long& nIdent, const char* name, CBotVar* pThis, CBot { if ( pt->m_nFuncIdent == nIdent ) { - // fait la liste des param�tres selon le contenu de la pile (pStackVar) + // fait la liste des paramètres selon le contenu de la pile (pStackVar) CBotVar* pVar = MakeListVars(ppVars, TRUE); CBotVar* pVarToDelete = pVar; @@ -972,7 +973,7 @@ int CBotCallMethode::DoCall(long& nIdent, const char* name, CBotVar* pThis, CBot { if ( pt->m_name == name ) { - // fait la liste des param�tres selon le contenu de la pile (pStackVar) + // fait la liste des paramètres selon le contenu de la pile (pStackVar) CBotVar* pVar = MakeListVars(ppVars, TRUE); CBotVar* pVarToDelete = pVar; @@ -1038,10 +1039,10 @@ BOOL rCBotDebug( CBotVar* pVar, CBotVar* pResult, int& ex, void* pUser ) CBotTypResult cCBotDebug( CBotVar* &pVar, void* pUser ) { - // pas de param�tre + // pas de paramètre if ( pVar != NULL ) return CBotTypResult( TX_OVERPARAM ); - // la fonction retourne un r�sultat "string" + // la fonction retourne un résultat "string" return CBotTypResult( CBotTypString ); } @@ -1050,10 +1051,10 @@ CBotTypResult cCBotDebug( CBotVar* &pVar, void* pUser ) void CBotProgram::Init() { - CBotToken::DefineNum( "CBotErrOpenPar", 5000) ; // manque la parenth�se ouvrante - CBotToken::DefineNum( "CBotErrClosePar", 5001) ; // manque la parenth�se fermante - CBotToken::DefineNum( "CBotErrNotBoolean", 5002) ; // l'expression doit �tre un boolean - CBotToken::DefineNum( "CBotErrUndefVar", 5003) ; // variable non d�clar�e + CBotToken::DefineNum( "CBotErrOpenPar", 5000) ; // manque la parenthèse ouvrante + CBotToken::DefineNum( "CBotErrClosePar", 5001) ; // manque la parenthèse fermante + CBotToken::DefineNum( "CBotErrNotBoolean", 5002) ; // l'expression doit être un boolean + CBotToken::DefineNum( "CBotErrUndefVar", 5003) ; // variable non déclarée CBotToken::DefineNum( "CBotErrBadLeft", 5004) ; // assignation impossible ( 5 = ... ) CBotToken::DefineNum( "CBotErrNoTerminator", 5005) ;// point-virgule attendu CBotToken::DefineNum( "CBotErrCaseOut", 5006) ; // case en dehors d'un switch @@ -1061,8 +1062,8 @@ void CBotProgram::Init() CBotToken::DefineNum( "CBotErrElseWhitoutIf", 5009) ;// else sans if correspondant CBotToken::DefineNum( "CBotErrOpenBlock", 5010) ; // manque " { " CBotToken::DefineNum( "CBotErrBadType1", 5011) ; // mauvais type pour l'assignation - CBotToken::DefineNum( "CBotErrRedefVar", 5012) ; // red�finition de la variable - CBotToken::DefineNum( "CBotErrBadType2", 5013) ; // 2 op�randes de type incompatibles + CBotToken::DefineNum( "CBotErrRedefVar", 5012) ; // redéfinition de la variable + CBotToken::DefineNum( "CBotErrBadType2", 5013) ; // 2 opérandes de type incompatibles CBotToken::DefineNum( "CBotErrUndefCall", 5014) ; // routine inconnue CBotToken::DefineNum( "CBotErrNoDoubleDots", 5015) ;// " : " attendu CBotToken::DefineNum( "CBotErrBreakOutside", 5017) ;// break en dehors d'une boucle @@ -1071,28 +1072,28 @@ void CBotProgram::Init() CBotToken::DefineNum( "CBotErrNoCase", 5020) ; // manque " case " CBotToken::DefineNum( "CBotErrBadNum", 5021) ; // nombre attendu CBotToken::DefineNum( "CBotErrVoid", 5022) ; // " void " pas possible ici - CBotToken::DefineNum( "CBotErrNoType", 5023) ; // d�claration de type attendue + CBotToken::DefineNum( "CBotErrNoType", 5023) ; // déclaration de type attendue CBotToken::DefineNum( "CBotErrNoVar", 5024) ; // nom de variable attendu CBotToken::DefineNum( "CBotErrNoFunc", 5025) ; // nom de fonction attendu - CBotToken::DefineNum( "CBotErrOverParam", 5026) ; // trop de param�tres - CBotToken::DefineNum( "CBotErrRedefFunc", 5027) ; // cette fonction existe d�j� - CBotToken::DefineNum( "CBotErrLowParam", 5028) ; // pas assez de param�tres - CBotToken::DefineNum( "CBotErrBadParam", 5029) ; // mauvais types de param�tres - CBotToken::DefineNum( "CBotErrNbParam", 5030) ; // mauvais nombre de param�tres - CBotToken::DefineNum( "CBotErrUndefItem", 5031) ; // �l�ment n'existe pas dans la classe + CBotToken::DefineNum( "CBotErrOverParam", 5026) ; // trop de paramètres + CBotToken::DefineNum( "CBotErrRedefFunc", 5027) ; // cette fonction existe déjà + CBotToken::DefineNum( "CBotErrLowParam", 5028) ; // pas assez de paramètres + CBotToken::DefineNum( "CBotErrBadParam", 5029) ; // mauvais types de paramètres + CBotToken::DefineNum( "CBotErrNbParam", 5030) ; // mauvais nombre de paramètres + CBotToken::DefineNum( "CBotErrUndefItem", 5031) ; // élément n'existe pas dans la classe CBotToken::DefineNum( "CBotErrUndefClass", 5032) ; // variable n'est pas une classe - CBotToken::DefineNum( "CBotErrNoConstruct", 5033) ; // pas de constructeur appropri� - CBotToken::DefineNum( "CBotErrRedefClass", 5034) ; // classe existe d�j� + CBotToken::DefineNum( "CBotErrNoConstruct", 5033) ; // pas de constructeur approprié + CBotToken::DefineNum( "CBotErrRedefClass", 5034) ; // classe existe déjà CBotToken::DefineNum( "CBotErrCloseIndex", 5035) ; // " ] " attendu - CBotToken::DefineNum( "CBotErrReserved", 5036) ; // mot r�serv� (par un DefineNum) + CBotToken::DefineNum( "CBotErrReserved", 5036) ; // mot réservé (par un DefineNum) -// voici la liste des erreurs pouvant �tre retourn�es par le module -// pour l'ex�cution +// voici la liste des erreurs pouvant être retournées par le module +// pour l'exécution - CBotToken::DefineNum( "CBotErrZeroDiv", 6000) ; // division par z�ro - CBotToken::DefineNum( "CBotErrNotInit", 6001) ; // variable non initialis�e - CBotToken::DefineNum( "CBotErrBadThrow", 6002) ; // throw d'une valeur n�gative - CBotToken::DefineNum( "CBotErrNoRetVal", 6003) ; // fonction n'a pas retourn� de r�sultat + CBotToken::DefineNum( "CBotErrZeroDiv", 6000) ; // division par zéro + CBotToken::DefineNum( "CBotErrNotInit", 6001) ; // variable non initialisée + CBotToken::DefineNum( "CBotErrBadThrow", 6002) ; // throw d'une valeur négative + CBotToken::DefineNum( "CBotErrNoRetVal", 6003) ; // fonction n'a pas retourné de résultat CBotToken::DefineNum( "CBotErrNoRun", 6004) ; // Run() sans fonction active CBotToken::DefineNum( "CBotErrUndefFunc", 6005) ; // appel d'une fonction qui n'existe plus -- cgit v1.2.3-1-g7c22