summaryrefslogtreecommitdiffstats
path: root/src/CBot/CBotCompExpr.cpp
diff options
context:
space:
mode:
authorKrzysztof H <krzys_h@interia.pl>2012-03-09 17:08:05 +0100
committerKrzysztof H <krzys_h@interia.pl>2012-03-09 17:08:05 +0100
commit84d1f79fdf02e0010e4b2d118458e8cd8ce0dd71 (patch)
tree842825145ada8e6f53d1de9f100383cc028d2b46 /src/CBot/CBotCompExpr.cpp
parenta4c804b49ec872b71bd5a0167c3ad45704a3cc30 (diff)
downloadcolobot-84d1f79fdf02e0010e4b2d118458e8cd8ce0dd71.tar.gz
colobot-84d1f79fdf02e0010e4b2d118458e8cd8ce0dd71.tar.bz2
colobot-84d1f79fdf02e0010e4b2d118458e8cd8ce0dd71.zip
Added license info using a small program SrcHead.
Diffstat (limited to 'src/CBot/CBotCompExpr.cpp')
-rw-r--r--src/CBot/CBotCompExpr.cpp55
1 files changed, 33 insertions, 22 deletions
diff --git a/src/CBot/CBotCompExpr.cpp b/src/CBot/CBotCompExpr.cpp
index 99abfb9..7618e4a 100644
--- a/src/CBot/CBotCompExpr.cpp
+++ b/src/CBot/CBotCompExpr.cpp
@@ -1,7 +1,18 @@
-///////////////////////////////////////////////////
-// expression du genre Opérande1 > Opérande2
-// Opérande1 != Opérande2
-// etc.
+// * 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
+// * it under the terms of the GNU General Public License as published by
+// * the Free Software Foundation, either version 3 of the License, or
+// * (at your option) any later version.
+// *
+// * This program is distributed in the hope that it will be useful,
+// * but WITHOUT ANY WARRANTY; without even the implied warranty of
+// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// * 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 .
#include "CBot.h"
@@ -28,7 +39,7 @@ CBotInstr* CBotCompExpr::Compile(CBotToken* &p, CBotCStack* pStack)
{
CBotCStack* pStk = pStack->AddStack();
- CBotInstr* left = CBotAddExpr::Compile( p, pStk ); // expression A + B à gauche
+ CBotInstr* left = CBotAddExpr::Compile( p, pStk ); // expression A + B � gauche
if (left == NULL) return pStack->Return(NULL, pStk); // erreur
if ( p->GetType() == ID_HI ||
@@ -38,22 +49,22 @@ CBotInstr* CBotCompExpr::Compile(CBotToken* &p, CBotCStack* pStack)
p->GetType() == ID_EQ ||
p->GetType() == ID_NE) // les diverses comparaisons
{
- CBotCompExpr* inst = new CBotCompExpr(); // élément pour opération
- inst->SetToken(p); // mémorise l'opération
+ CBotCompExpr* inst = new CBotCompExpr(); // �l�ment pour op�ration
+ inst->SetToken(p); // m�morise l'op�ration
int type1, type2;
type1 = pStack->GetType();
p = p->Next();
- if ( NULL != (inst->m_rightop = CBotAddExpr::Compile( p, pStk )) ) // expression A + B à droite
+ if ( NULL != (inst->m_rightop = CBotAddExpr::Compile( p, pStk )) ) // expression A + B � droite
{
type2 = pStack->GetType();
- // les résultats sont-ils compatibles
+ // les r�sultats sont-ils compatibles
if ( type1 == type2 )
{
inst->m_leftop = left;
pStk->SetVar(new CBotVar(NULL, CBotTypBoolean));
- // le résultat est un boolean
+ // le r�sultat est un boolean
return pStack->Return(inst, pStk);
}
}
@@ -67,7 +78,7 @@ CBotInstr* CBotCompExpr::Compile(CBotToken* &p, CBotCStack* pStack)
}
-// fait l'opération
+// fait l'op�ration
BOOL CBotCompExpr::Execute(CBotStack* &pStack)
{
@@ -76,9 +87,9 @@ BOOL CBotCompExpr::Execute(CBotStack* &pStack)
if ( pStk1->GetState() == 0 && !m_leftop->Execute(pStk1) ) return FALSE; // interrompu ici ?
- pStk1->SetState(1); // opération terminée
+ pStk1->SetState(1); // op�ration termin�e
- // demande un peu plus de stack pour ne pas toucher le résultat de gauche
+ // demande un peu plus de stack pour ne pas toucher le r�sultat de gauche
CBotStack* pStk2 = pStk1->AddStack();
if ( !m_rightop->Execute(pStk2) ) return FALSE; // interrompu ici ?
@@ -91,27 +102,27 @@ BOOL CBotCompExpr::Execute(CBotStack* &pStack)
switch (GetTokenType())
{
case ID_LO:
- result->Lo(pStk1->GetVar(), pStk2->GetVar()); // inférieur
+ result->Lo(pStk1->GetVar(), pStk2->GetVar()); // inf�rieur
break;
case ID_HI:
- result->Hi(pStk1->GetVar(), pStk2->GetVar()); // supérieur
+ result->Hi(pStk1->GetVar(), pStk2->GetVar()); // sup�rieur
break;
case ID_LS:
- result->Ls(pStk1->GetVar(), pStk2->GetVar()); // inférieur ou égal
+ result->Ls(pStk1->GetVar(), pStk2->GetVar()); // inf�rieur ou �gal
break;
case ID_HS:
- result->Hs(pStk1->GetVar(), pStk2->GetVar()); // supérieur ou égal
+ result->Hs(pStk1->GetVar(), pStk2->GetVar()); // sup�rieur ou �gal
break;
case ID_EQ:
- result->Eq(pStk1->GetVar(), pStk2->GetVar()); // égal
+ result->Eq(pStk1->GetVar(), pStk2->GetVar()); // �gal
break;
case ID_NE:
- result->Ne(pStk1->GetVar(), pStk2->GetVar()); // différent
+ result->Ne(pStk1->GetVar(), pStk2->GetVar()); // diff�rent
break;
}
- pStk2->SetVar(result); // met le résultat sur la pile
+ pStk2->SetVar(result); // met le r�sultat sur la pile
- pStk1->Return(pStk2); // libère la pile
- return pStack->Return(pStk1); // transmet le résultat
+ pStk1->Return(pStk2); // lib�re la pile
+ return pStack->Return(pStk1); // transmet le r�sultat
}