summaryrefslogtreecommitdiffstats
path: root/src/CBot/CBotClass.cpp
diff options
context:
space:
mode:
authorKrzysztof H <krzys_h@interia.pl>2012-03-19 12:44:39 +0100
committerKrzysztof H <krzys_h@interia.pl>2012-03-19 12:44:39 +0100
commitf7d892cf4ef6bfce3747c4b6a810d4828b79833d (patch)
tree8311c7057b5f861c387ecc8c96cd778abc47c8d8 /src/CBot/CBotClass.cpp
parent343cb0ce660136ac034e6106c0f151466b751398 (diff)
downloadcolobot-f7d892cf4ef6bfce3747c4b6a810d4828b79833d.tar.gz
colobot-f7d892cf4ef6bfce3747c4b6a810d4828b79833d.tar.bz2
colobot-f7d892cf4ef6bfce3747c4b6a810d4828b79833d.zip
Last coding fix ;)
Diffstat (limited to 'src/CBot/CBotClass.cpp')
-rw-r--r--src/CBot/CBotClass.cpp124
1 files changed, 63 insertions, 61 deletions
diff --git a/src/CBot/CBotClass.cpp b/src/CBot/CBotClass.cpp
index a70449d..7c097af 100644
--- a/src/CBot/CBotClass.cpp
+++ b/src/CBot/CBotClass.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,9 @@
// * 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 des variables de type classe
+//
#include "CBot.h"
@@ -62,7 +64,7 @@ CBotClass::~CBotClass()
delete m_pCalls;
delete m_pMethod;
- delete m_next; // lib�re toutes celle de ce niveau
+ delete m_next; // libère toutes celle de ce niveau
}
@@ -89,7 +91,7 @@ void CBotClass::Purge()
m_nbVar = m_pParent == NULL ? 0 : m_pParent->m_nbVar;
m_next->Purge();
- m_next = NULL; // n'appartient plus � cette cha�ne
+ m_next = NULL; // n'appartient plus à cette chaîne
}
BOOL CBotClass::Lock(CBotProgram* p)
@@ -105,7 +107,7 @@ BOOL CBotClass::Lock(CBotProgram* p)
if ( p == m_ProgInLock[0] )
{
m_cptOne++;
- m_cptLock--; // a d�j� �t� compt�
+ m_cptLock--; // a déjà été compté
return TRUE;
}
@@ -114,7 +116,7 @@ BOOL CBotClass::Lock(CBotProgram* p)
if ( p == m_ProgInLock[j] )
{
m_cptLock--;
- return FALSE; // d�j� en attente
+ return FALSE; // déjà en attente
}
}
@@ -291,7 +293,7 @@ BOOL CBotClass::AddFunction(const char* name,
BOOL rExec (CBotVar* pThis, CBotVar* pVar, CBotVar* pResult, int& Exception),
CBotTypResult rCompile (CBotVar* pThis, CBotVar* &pVar))
{
- // m�morise les pointeurs aux deux fonctions
+ // mémorise les pointeurs aux deux fonctions
CBotCallMethode* p = m_pCalls;
CBotCallMethode* pp = NULL;
@@ -311,7 +313,7 @@ BOOL CBotClass::AddFunction(const char* name,
p = new CBotCallMethode(name, rExec, rCompile);
if (m_pCalls == NULL) m_pCalls = p;
- else m_pCalls->AddNext(p); // ajoute � la liste
+ else m_pCalls->AddNext(p); // ajoute à la liste
return TRUE;
}
@@ -322,21 +324,21 @@ BOOL CBotClass::AddUpdateFunc( void rMaj ( CBotVar* pThis, void* pUser ) )
return TRUE;
}
-// compile une m�thode associ�e � une instance de classe
-// la m�thode peut �tre d�clar�e par AddFunction ou par l'utilisateur
+// compile une méthode associée à une instance de classe
+// la méthode peut être déclarée par AddFunction ou par l'utilisateur
CBotTypResult CBotClass::CompileMethode(const char* name,
CBotVar* pThis, CBotVar** ppParams,
CBotCStack* pStack, long& nIdent)
{
- nIdent = 0; // oublie le pr�c�dent s'il y a lieu
+ nIdent = 0; // oublie le précédent s'il y a lieu
- // recherche dans les m�thodes d�clar�es par AddFunction
+ // recherche dans les méthodes déclarées par AddFunction
CBotTypResult r = m_pCalls->CompileCall(name, pThis, ppParams, pStack, nIdent);
if ( r.GivType() >= 0) return r;
- // recherche dans les m�thodes d�clar�es par l'utilisateur
+ // recherche dans les méthodes déclarées par l'utilisateur
r = m_pMethod->CompileCall(name, ppParams, nIdent);
if ( r.Eq(TX_UNDEFCALL) && m_pParent != NULL )
@@ -344,7 +346,7 @@ CBotTypResult CBotClass::CompileMethode(const char* name,
return r;
}
-// ex�cute une m�thode
+// exécute une méthode
BOOL CBotClass::ExecuteMethode(long& nIdent, const char* name,
CBotVar* pThis, CBotVar** ppParams,
@@ -358,7 +360,7 @@ BOOL CBotClass::ExecuteMethode(long& nIdent, const char* name,
return ret;
}
-// r�tabli la pile d'ex�cution
+// rétabli la pile d'exécution
void CBotClass::RestoreMethode(long& nIdent, const char* name, CBotVar* pThis,
CBotVar** ppParams, CBotStack* &pStack)
@@ -373,7 +375,7 @@ BOOL CBotClass::SaveStaticState(FILE* pf)
{
if (!WriteWord( pf, CBOTVERSION*2)) return FALSE;
- // sauve l'�tat des variables statiques dans les classes
+ // sauve l'état des variables statiques dans les classes
CBotClass* p = m_ExClass;
while ( p != NULL )
@@ -390,7 +392,7 @@ BOOL CBotClass::SaveStaticState(FILE* pf)
if (!WriteWord( pf, 1)) return FALSE;
if (!WriteString( pf, pv->GivName() )) return FALSE;
- if ( !pv->Save0State(pf)) return FALSE; // ent�te commune
+ if ( !pv->Save0State(pf)) return FALSE; // entête commune
if ( !pv->Save1State(pf) ) return FALSE; // sauve selon la classe fille
if ( !WriteWord( pf, 0)) return FALSE;
}
@@ -462,7 +464,7 @@ CBotClassInst::~CBotClassInst()
// delete m_next; // fait par le destructeur de la classe de base ~CBotInstr()
}
-// d�finition de pointeur(s) � un objet
+// définition de pointeur(s) à un objet
// du style
// CPoint A, B ;
@@ -475,7 +477,7 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
pClass = CBotClass::Find(p);
if ( pClass == NULL )
{
- // pas trouv� ? c'est bizare
+ // pas trouvé ? c'est bizare
pStack->SetError(TX_NOCLASS, p);
return NULL;
}
@@ -499,7 +501,7 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
if ( NULL != (inst->m_var = CBotLeftExprVar::Compile( p, pStk )) )
{
((CBotLeftExprVar*)inst->m_var)->m_typevar = type;
- if (pStk->CheckVarLocal(vartoken)) // red�finition de la variable
+ if (pStk->CheckVarLocal(vartoken)) // redéfinition de la variable
{
pStk->SetStartError(vartoken->GivStart());
pStk->SetError(TX_REDEFVAR, vartoken->GivEnd());
@@ -511,7 +513,7 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
delete inst; // n'est pas de type CBotInt
p = vartoken; // revient sur le nom de la variable
- // compile une d�claration de tableau
+ // compile une déclaration de tableau
inst = (CBotClassInst*)CBotInstArray::Compile( p, pStk, type );
@@ -520,27 +522,27 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
pStk->SetError(TX_CLBRK, p->GivStart());
goto error;
}
- goto suite; // pas d'assignation, variable d�j� cr��e
+ goto suite; // pas d'assignation, variable déjà créée
}
CBotVar* var;
- var = CBotVar::Create(vartoken->GivString(), type); // cr�e l'instance
+ var = CBotVar::Create(vartoken->GivString(), type); // crée l'instance
// var->SetClass(pClass);
var->SetUniqNum(
((CBotLeftExprVar*)inst->m_var)->m_nIdent = CBotVar::NextUniqNum());
- // lui attribut un num�ro unique
+ // lui attribut un numéro unique
pStack->AddVar(var); // la place sur la pile
- // regarde s'il y a des param�tres
+ // regarde s'il y a des paramètres
inst->m_hasParams = (p->GivType() == ID_OPENPAR);
CBotVar* ppVars[1000];
inst->m_Parameters = CompileParams(p, pStk, ppVars);
if ( !pStk->IsOk() ) goto error;
- // s'il y a des param�tres, fait l'�quivalent de l'instruction new
- // CPoint A ( 0, 0 ) est �quivalent �
+ // s'il y a des paramètres, fait l'équivalent de l'instruction new
+ // CPoint A ( 0, 0 ) est équivalent à
// CPoint A = new CPoint( 0, 0 )
// if ( NULL != inst->m_Parameters )
@@ -549,13 +551,13 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
// le constructeur existe-il ?
// CBotString noname;
CBotTypResult r = pClass->CompileMethode(pClass->GivName(), var, ppVars, pStk, inst->m_nMethodeIdent);
- delete pStk->TokenStack(); // lib�re le suppl�ment de pile
+ delete pStk->TokenStack(); // libère le supplément de pile
int typ = r.GivType();
if (typ == TX_UNDEFCALL)
{
// si le constructeur n'existe pas
- if (inst->m_Parameters != NULL) // avec des param�tres
+ if (inst->m_Parameters != NULL) // avec des paramètres
{
pStk->SetError(TX_NOCONST, vartoken);
goto error;
@@ -594,27 +596,27 @@ CBotInstr* CBotClassInst::Compile(CBotToken* &p, CBotCStack* pStack, CBotClass*
// if ( !bIntrinsic ) var->SetPointer(pStk->GivVar()->GivPointer());
if ( !bIntrinsic )
{
- // n'utilise pas le r�sultat sur la pile, pour imposer la classe
+ // n'utilise pas le résultat sur la pile, pour imposer la classe
CBotVar* pvar = CBotVar::Create("", pClass);
- var->SetPointer( pvar ); // var d�j� d�clar�e pointe l'instance
+ var->SetPointer( pvar ); // var déjà déclarée pointe l'instance
delete pvar; // supprime le second pointeur
}
var->SetInit(TRUE); // marque le pointeur comme init
}
else if (inst->m_hasParams)
{
- // cr�e l'objet sur le "tas"
+ // crée l'objet sur le "tas"
// avec un pointeur sur cet objet
if ( !bIntrinsic )
{
CBotVar* pvar = CBotVar::Create("", pClass);
- var->SetPointer( pvar ); // var d�j� d�clar�e pointe l'instance
+ var->SetPointer( pvar ); // var déjà déclarée pointe l'instance
delete pvar; // supprime le second pointeur
}
var->SetInit(2); // marque le pointeur comme init
}
suite:
- if (IsOfType(p, ID_COMMA)) // plusieurs d�finitions encha�n�es
+ if (IsOfType(p, ID_COMMA)) // plusieurs définitions enchaînées
{
if ( NULL != ( inst->m_next = CBotClassInst::Compile(p, pStk, pClass) )) // compile la suivante
{
@@ -622,7 +624,7 @@ suite:
}
}
- if (IsOfType(p, ID_SEP)) // instruction termin�e
+ if (IsOfType(p, ID_SEP)) // instruction terminée
{
return pStack->Return(inst, pStk);
}
@@ -635,7 +637,7 @@ error:
return pStack->Return(NULL, pStk);
}
-// d�claration de l'instance d'une classe, par exemple:
+// déclaration de l'instance d'une classe, par exemple:
// CPoint A, B;
BOOL CBotClassInst::Execute(CBotStack* &pj)
@@ -650,7 +652,7 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
BOOL bIntrincic = pClass->IsIntrinsic();
- // cr�e la variable de type pointeur � l'objet
+ // crée la variable de type pointeur à l'objet
if ( pile->GivState()==0)
{
@@ -664,7 +666,7 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
pThis = CBotVar::Create(name, CBotTypResult( CBotTypPointer, pClass ));
}
- pThis->SetUniqNum(((CBotLeftExprVar*)m_var)->m_nIdent); // lui attribut un num�ro unique
+ pThis->SetUniqNum(((CBotLeftExprVar*)m_var)->m_nIdent); // lui attribut un numéro unique
pile->AddVar(pThis); // la place sur la pile
pile->IncState();
}
@@ -673,13 +675,13 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
if ( pile->GivState()<3)
{
- // y a-t-il une assignation ou des param�tres (constructeur)
+ // y a-t-il une assignation ou des paramètres (constructeur)
// CBotVarClass* pInstance = NULL;
if ( m_expr != NULL )
{
- // �value l'expression pour l'assignation
+ // évalue l'expression pour l'assignation
if (!m_expr->Execute(pile)) return FALSE;
if ( bIntrincic )
@@ -703,14 +705,14 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
else if ( m_hasParams )
{
- // �value le constructeur d'une instance
+ // évalue le constructeur d'une instance
if ( !bIntrincic && pile->GivState() == 1)
{
CBotToken* pt = &m_token;
CBotClass* pClass = CBotClass::Find(pt);
- // cr�e une instance de la classe demand�e
+ // crée une instance de la classe demandée
CBotVarClass* pInstance;
pInstance = (CBotVarClass*)CBotVar::Create("", pClass);
@@ -726,13 +728,13 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
int i = 0;
CBotInstr* p = m_Parameters;
- // �value les param�tres
+ // évalue les paramètres
// et place les valeurs sur la pile
- // pour pouvoir �tre interrompu n'importe quand
+ // pour pouvoir être interrompu n'importe quand
if ( p != NULL) while ( TRUE )
{
- pile2 = pile2->AddStack(); // de la place sur la pile pour les r�sultats
+ pile2 = pile2->AddStack(); // de la place sur la pile pour les résultats
if ( pile2->GivState() == 0 )
{
if (!p->Execute(pile2)) return FALSE; // interrompu ici ?
@@ -744,7 +746,7 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
}
ppVars[i] = NULL;
- // cr�e une variable pour le r�sultat
+ // crée une variable pour le résultat
CBotVar* pResult = NULL; // constructeurs toujours void
if ( !pClass->ExecuteMethode(m_nMethodeIdent, pClass->GivName(),
@@ -752,8 +754,8 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
pResult, pile2, GivToken())) return FALSE; // interrompu
pThis->SetInit(TRUE);
- pThis->ConstructorSet(); // signale que le constructeur a �t� appel�
- pile->Return(pile2); // lib�re un bout de pile
+ pThis->ConstructorSet(); // signale que le constructeur a été appelé
+ pile->Return(pile2); // libère un bout de pile
// pInstance = pThis->GivPointer();
@@ -767,7 +769,7 @@ BOOL CBotClassInst::Execute(CBotStack* &pj)
if ( pile->IfStep() ) return FALSE;
if ( m_next2b != NULL &&
- !m_next2b->Execute(pile)) return FALSE; // autre(s) d�finition(s)
+ !m_next2b->Execute(pile)) return FALSE; // autre(s) définition(s)
return pj->Return( pile ); // transmet en dessous
}
@@ -782,11 +784,11 @@ void CBotClassInst::RestoreState(CBotStack* &pj, BOOL bMain)
if ( bMain ) pile = pj->RestoreStack(this);
if ( pile == NULL ) return;
- // cr�e la variable de type pointeur � l'objet
+ // crée la variable de type pointeur à l'objet
{
CBotString name = m_var->m_token.GivString();
pThis = pile->FindVar(name);
- pThis->SetUniqNum(((CBotLeftExprVar*)m_var)->m_nIdent); // lui attribut un num�ro unique
+ pThis->SetUniqNum(((CBotLeftExprVar*)m_var)->m_nIdent); // lui attribut un numéro unique
}
CBotToken* pt = &m_token;
@@ -795,20 +797,20 @@ void CBotClassInst::RestoreState(CBotStack* &pj, BOOL bMain)
if ( bMain && pile->GivState()<3)
{
- // y a-t-il une assignation ou des param�tres (constructeur)
+ // y a-t-il une assignation ou des paramètres (constructeur)
// CBotVarClass* pInstance = NULL;
if ( m_expr != NULL )
{
- // �value l'expression pour l'assignation
+ // évalue l'expression pour l'assignation
m_expr->RestoreState(pile, bMain);
return;
}
else if ( m_hasParams )
{
- // �value le constructeur d'une instance
+ // évalue le constructeur d'une instance
if ( !bIntrincic && pile->GivState() == 1)
{
@@ -821,13 +823,13 @@ void CBotClassInst::RestoreState(CBotStack* &pj, BOOL bMain)
int i = 0;
CBotInstr* p = m_Parameters;
- // �value les param�tres
+ // évalue les paramètres
// et place les valeurs sur la pile
- // pour pouvoir �tre interrompu n'importe quand
+ // pour pouvoir être interrompu n'importe quand
if ( p != NULL) while ( TRUE )
{
- pile2 = pile2->RestoreStack(); // de la place sur la pile pour les r�sultats
+ pile2 = pile2->RestoreStack(); // de la place sur la pile pour les résultats
if ( pile2 == NULL ) return;
if ( pile2->GivState() == 0 )
@@ -841,7 +843,7 @@ void CBotClassInst::RestoreState(CBotStack* &pj, BOOL bMain)
}
ppVars[i] = NULL;
- // cr�e une variable pour le r�sultat
+ // crée une variable pour le résultat
CBotVar* pResult = NULL; // constructeurs toujours void
pClass->RestoreMethode(m_nMethodeIdent, pClass->GivName(), pThis, ppVars, pile2);
@@ -850,11 +852,11 @@ void CBotClassInst::RestoreState(CBotStack* &pj, BOOL bMain)
}
if ( m_next2b != NULL )
- m_next2b->RestoreState(pile, bMain); // autre(s) d�finition(s)
+ m_next2b->RestoreState(pile, bMain); // autre(s) définition(s)
}
-// test si un nom de proc�dure est d�j� d�fini quelque part
+// test si un nom de procédure est déjà défini quelque part
BOOL CBotClass::CheckCall(CBotToken* &pToken, CBotDefParam* pParam)
{
@@ -867,7 +869,7 @@ BOOL CBotClass::CheckCall(CBotToken* &pToken, CBotDefParam* pParam)
{
if ( pToken->GivString() == pp->GivName() )
{
- // les param�tres sont-ils exactement les m�mes ?
+ // les paramètres sont-ils exactement les mêmes ?
if ( pp->CheckParam( pParam ) )
return TRUE;
}