⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 engine.h

📁 嵌入式Qt下的一个计算器源码
💻 H
字号:
/******************************************************************************** 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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -