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/old CBotCompExpr.cpp | 57 +++++++++++++++++-------------------------- 1 file changed, 23 insertions(+), 34 deletions(-) (limited to 'src/CBot/old CBotCompExpr.cpp') diff --git a/src/CBot/old CBotCompExpr.cpp b/src/CBot/old CBotCompExpr.cpp index f098e7d..e7439b7 100644 --- a/src/CBot/old CBotCompExpr.cpp +++ b/src/CBot/old CBotCompExpr.cpp @@ -1,18 +1,7 @@ -// * 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 http://www.gnu.org/licenses/. +/////////////////////////////////////////////////// +// expression du genre Opérande1 > Opérande2 +// Opérande1 != Opérande2 +// etc. #include "CBot.h" @@ -38,7 +27,7 @@ CBotInstr* CBotCompExpr::Compile(CBotToken* &p, CBotCStack* pStack) { CBotCStack* pStk = pStack->TokenStack(); - 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 || @@ -48,22 +37,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 = pStk->GetType(CBotTypChar); 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 = pStk->GetType(CBotTypChar); - // les r�sultats sont-ils compatibles + // les résultats sont-ils compatibles if ( type1 == type2 && type1 != CBotTypBoolean && type1 != CBotTypClass) { 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); } pStk->SetError(TX_BAD2TYPE, &inst->m_token); @@ -78,7 +67,7 @@ CBotInstr* CBotCompExpr::Compile(CBotToken* &p, CBotCStack* pStack) } -// fait l'op�ration +// fait l'opération BOOL CBotCompExpr::Execute(CBotStack* &pStack) { @@ -86,9 +75,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 ? @@ -102,30 +91,30 @@ BOOL CBotCompExpr::Execute(CBotStack* &pStack) switch (GetTokenType()) { case ID_LO: - temp->Lo(pStk1->GetVar(), pStk2->GetVar()); // inf�rieur + temp->Lo(pStk1->GetVar(), pStk2->GetVar()); // inférieur break; case ID_HI: - temp->Hi(pStk1->GetVar(), pStk2->GetVar()); // sup�rieur + temp->Hi(pStk1->GetVar(), pStk2->GetVar()); // supérieur break; case ID_LS: - temp->Ls(pStk1->GetVar(), pStk2->GetVar()); // inf�rieur ou �gal + temp->Ls(pStk1->GetVar(), pStk2->GetVar()); // inférieur ou égal break; case ID_HS: - temp->Hs(pStk1->GetVar(), pStk2->GetVar()); // sup�rieur ou �gal + temp->Hs(pStk1->GetVar(), pStk2->GetVar()); // supérieur ou égal break; case ID_EQ: - temp->Eq(pStk1->GetVar(), pStk2->GetVar()); // �gal + temp->Eq(pStk1->GetVar(), pStk2->GetVar()); // égal break; case ID_NE: - temp->Ne(pStk1->GetVar(), pStk2->GetVar()); // diff�rent + temp->Ne(pStk1->GetVar(), pStk2->GetVar()); // différent break; } - result->SetValInt(temp->GetValInt()); // converti le r�sultat + result->SetValInt(temp->GetValInt()); // converti le résultat delete temp; - 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 } -- cgit v1.2.3-1-g7c22