engine.h

来自「嵌入式Qt下的一个计算器源码」· C头文件 代码 · 共 130 行

H
130
字号
/******************************************************************************** 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.******************************************************************************/#ifndef CALCULATOR_SYSTEM_H#define CALCULATOR_SYSTEM_H#include <qtopia/qtopiaglobal.h>#include <qstack.h>#include <qlist.h>#include <qlabel.h>#include "instruction.h"#include "display.h"class iBraceOpen;enum State { sStart, sAppend, sError };enum Error { eError, eOutOfRange, eDivZero, eNotSolvable, eNonPositive,    eNonInteger,eNotANumber,eInf,eNoDataFactory,eNegInf, eSurpassLimits };enum ResetState { drNone, drSoft, drHard };class Engine:public QObject {    Q_OBJECTpublic:    Engine();    ~Engine();    void registerInstruction(Instruction*);    void pushInstruction(QString);    void evaluate();    Data *getData();    void putData(Data *);    void dualReset();    void softReset();    void hardReset();    void push(char);    void push(QString);    void delChar();    void memoryRecall();    void memorySave();    void memoryReset();    void openBrace();    void closeBrace();    void setError(Error = eError, bool resetStack = true);    void setError(QString, bool resetStack = true);    void setDisplay(MyLcdDisplay *);    void setAccType(QString);    QString getDisplay();#ifdef QTOPIA_PHONE    int numOps();    bool error();#endifsignals:    void stackChanged();    void dualResetStateChanged(ResetState);    protected:    friend class iBraceOpen;    friend class iBraceOpenImpl;    friend class MyLcdDisplay;    void incBraceCount();    bool checkState();    QString errorString;    Instruction *resolve(QString);private:    void doEvalStack(int=0,bool=false);    void evalStack(int=0,bool=false);    void executeInstructionOnStack(QString);    void executeInstructionOnStack(Instruction *);    void changeState(State);    void changeResetState(ResetState);    int previousInstructionsPrecedence;        State state;    ResetState drs;#ifdef QTOPIA_PHONEpublic:#endif    QStack<QString*> iStack;    QStack<Data*> dStack;private:    QStack <Data*> tmpDStack;    QString currentType,wantedType;    int braceCount;    QLabel *memMark,*kMark;    Data *mem;    Data *recoveredDStack;    Instruction *kDesc;    QList<Instruction*> list;    MyLcdDisplay *lcd;};extern Engine *systemEngine;#endif //CALCULATOR_SYSTEM_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?