www.pudn.com > calculator.rar > integerinstruction.cpp
/****************************************************************************
**
** Copyright (C) 2000-2006 TROLLTECH ASA. All rights reserved.
**
** This file is part of the Phone Edition of the Qtopia Toolkit.
**
** Licensees holding a valid license agreement from Trolltech or any of its
** authorized distributors may use this file in accordance with
** the License Agreement provided with the Licensed Software.
**
** See http://www.trolltech.com/pricing.html or email sales@trolltech.com for
** information about Trolltech's Commercial License Agreements.
**
** Contact info@trolltech.com if any conditions of this licensing are
** not clear to you.
**
**
**
**
** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
**
****************************************************************************/
#include "integerinstruction.h"
// Automatic type casting
Data *BaseIntegerInstruction::eval(Data *i) {
integerNum = (IntegerData *)num;
Data *ret = doEval((IntegerData *)i);
return ret;
}
// Mathematical functions
Data * IntegerAdd::doEval(IntegerData *i) {
i->set( integerNum->get() + i->get() );
return i;
}
Data * IntegerSub::doEval(IntegerData *i) {
i->set( i->get() - integerNum->get() );
return i;
}
Data * IntegerMul::doEval(IntegerData *i) {
i->set( i->get() * integerNum->get() );
return i;
}
Data * IntegerDiv::doEval(IntegerData *i) {
if (!integerNum->get()) {
systemEngine->setError(eDivZero);
qDebug("div by 0");
} else
integerNum->set( i->get() / integerNum->get() );
return i;
}