Main Page | Modules | Class Hierarchy | Class List | File List | Class Members

calculator.h

00001 #ifndef CALCULATOR_H 00002 #define CALCULATOR_H 00003 #include "calc_win.h" 00004 #include "calc.h" 00005 00006 #include <qvaluestack.h> 00007 #include <qptrstack.h> 00008 00009 00018 class Calculator : public CalculatorDlg, 00019 public CalculatorFSM 00020 { 00021 Q_OBJECT 00022 00032 class Operation { 00033 Calculator* c; 00034 protected: 00035 Calculator* calc() const { return c; } 00036 public: 00041 Operation( Calculator* calc ) : c(calc) {} 00042 00044 00048 virtual void operator()() = 0; 00049 }; 00050 00052 class OpPlus : public Operation { 00053 public: 00054 OpPlus( Calculator* calc ) : Operation( calc ) {} 00055 virtual void operator()(); 00056 }; 00057 00059 class OpMinus : public Operation { 00060 public: 00061 OpMinus( Calculator* calc ) : Operation( calc ) {} 00062 virtual void operator()(); 00063 }; 00064 00066 class OpMul : public Operation { 00067 public: 00068 OpMul( Calculator* calc ) : Operation( calc ) {} 00069 virtual void operator()(); 00070 }; 00071 00073 class OpDiv : public Operation { 00074 public: 00075 OpDiv( Calculator* calc ) : Operation( calc ) {} 00076 virtual void operator()(); 00077 }; 00078 00087 QValueStack<int> operands; 00102 QPtrStack<Operation> operations; 00103 00105 int enteredOperand; 00112 Operation* enteredOperation; 00113 00115 void showStackTop(); 00116 00117 public: 00118 Calculator( QWidget* parent = 0, const char* name = 0, WFlags fl = 0 ); 00119 ~Calculator(); 00120 00122 int popOperand() { return operands.pop(); } 00124 void pushOperand( int n ) { operands.push( n ); } 00125 00126 public slots: 00128 void slotNumber(int); 00130 void slotPlus(); 00132 void slotMinus(); 00134 void slotMul(); 00136 void slotDiv(); 00138 void slotClear(); 00140 void slotEqual(); 00141 protected: 00147 virtual void saveNumber(); 00148 virtual void addNumber(); 00149 virtual void clear(); 00150 virtual void saveOp(); 00151 virtual void showResult(); 00153 }; 00154 00155 #endif // CALCULATOR_H

Generated on Fri Oct 29 13:35:13 2004 for Calculator by doxygen 1.3.8