From 84d1f79fdf02e0010e4b2d118458e8cd8ce0dd71 Mon Sep 17 00:00:00 2001 From: Krzysztof H Date: Fri, 9 Mar 2012 17:08:05 +0100 Subject: Added license info using a small program SrcHead. --- src/CBot/CBotCompExpr.cpp | 55 ++++++++++++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 22 deletions(-) (limited to 'src/CBot/CBotCompExpr.cpp') 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 } -- cgit v1.2.3-1-g7c22