23 #error calculator.h is only for C++!
54 enum ErrId { OK, SYM_EXP, OP_EXP, TWO_OPS_EXP };
55 enum { NO_PARAM = 9999 };
65 Error(ErrId
id = OK) : mErrId(id) {}
66 void set(ErrId
id) { mErrId = id; }
105 bool popNumDepOnLastSymBase();
112 void createSymTabBase();
115 void initMembers(
bool clrMem =
true);
116 void clearNum() { mNumStackList.back().clear(); }
118 Number getConstVal ()
const {
return mConstVal ; }
119 Number getPrcWhole ()
const {
return mPrcWhole ; }
120 Number getMemory ()
const {
return mMemory ; }
121 int getBraLev ()
const {
return mBraLev ; }
122 int getParam ()
const {
return mParam ; }
123 SymOperator* getConstOpP ()
const {
return mConstOpP ; }
124 SymOperator* getLastOpP ()
const {
return mLastOpP ; }
125 SymOperator* getLastButOneOpP()
const {
return mLastButOneOpP; }
126 Symbol* getLastInP ()
const {
return mLastInP ; }
127 Symbol* getLastButOneInP()
const {
return mLastButOneInP; }
128 Symbol* getSymP(
const string& sym) {
return mSymTab[sym]; }
129 void setDsplP (
DisplayBase* dsplP) { mDsplP = dsplP; }
130 void setConstVal(
const Number& val) { mConstVal = val; }
131 void setPrcWhole(
const Number& val) { mPrcWhole = val; }
132 void setMemory (
const Number& val) { mMemory = val; }
133 void setParam (
const int val) { mParam = val; }
135 void setConstOpP(
SymOperator* soP) { mConstOpP = soP; }
136 void setLastInPisNotToSet(
bool is ) { mLastInPisNotToSet = is; }
137 void setLastInP (
Symbol* sP );
139 void pushNewStacks();
141 void pushNum(
const Number& n) { mNumStackList.back().push(n); }
142 void pushSym(
SymOperator* sP) { mSymStackList.back().push(sP ); }
143 Number getTopButOneNum() {
return mNumStackList.back().getTopButOne(); }
144 void setTopButOneNum(
const Number& n) { mNumStackList.back().setTopButOne(n); }
145 bool isNumEmpty() {
return mNumStackList.back().empty(); }
146 bool isSymEmpty() {
return mSymStackList.back().empty(); }
147 Number popNum() {
return mNumStackList.back().pop (); }
148 Number topNum() {
return mNumStackList.back().top (); }
149 SymOperator* popSym() {
return mSymStackList.back().pop (); }
150 SymOperator* topSym() {
return mSymStackList.back().top (); }
152 void incBraLev() { ++mBraLev; }
153 void decBraLev() { --mBraLev; }
156 bool isSym(
const string& sym);
159 string extractParam(
string& in);
160 string makeCompBaseInfoStr();
162 virtual bool preProcess (
string& in) { in = in;
return false; }
163 virtual void aftProcess (
string& in) { in = in; }
164 virtual void aftProcess2(
string& in) { in = in; }
166 virtual void handleDisplayAfterBra();
167 virtual void handlePercent();
168 virtual void popNumDepOnLastSym() { (void)popNumDepOnLastSymBase(); }
169 virtual bool map(
string& sym) { sym = sym;
return false; }
170 virtual string makeCompInfoStr() {
return makeCompBaseInfoStr(); }
206 string getValue ()
const {
return mValue ; }
207 string getSeven ()
const {
return mSeven ; }
208 string getSevenRaw()
const {
return mSevenRaw; }
209 string getModes ()
const {
return mModes ; }
210 Number getVal ()
const {
return mVal ; }
211 void setMem (
bool isOn) {
if (isOn) mMem =
"M";
else mMem =
"."; }
212 void setK (
bool isOn) {
if (isOn) mK =
"K";
else mK =
"." ; }
214 void setVal (
const Number& val ) { mVal = val ; makeValue(); }
215 void setValue(
const string& value) { mValue = value; }
216 void setSeven(
const string& seven) { mSeven = seven; }
218 void makeDisplay(
const Number& val);
221 void setError() { mValue =
"nan"; }
222 virtual void setModes();
223 virtual void makeValue() { mValue = mVal.makeStr(0, 15); }
224 virtual void makeSeven(
string displayStr =
"");
225 virtual int getNumStrLen(
string dsplStr)
const {
return dsplStr.size(); }
259 ComputerBase* getComputerP()
const {
return mComputerP; }
260 DisplayBase * getDisplayP ()
const {
return mDisplayP ; }
261 Cfgs* getCfgsP ()
const {
return mCfgsP ; }
262 string getProgName ()
const {
return mProgName ; }
263 string getProgVers ()
const {
return mProgVers ; }
264 string getAccPath ()
const {
return mAccPath ; }
265 bool getIsDlgApp ()
const {
return mIsDlgApp ; }
268 void process(
string in);
270 string getNextSym(
string& expr)
const;
271 bool isError()
const {
return mDisplayP->isError(); }
272 int getNumStrLen(
string dsplStr) {
return mDisplayP->getNumStrLen(dsplStr); }
280 #endif // !CALCULATOR_H
Number mMemory
Speicherregister.
Definition: calculator.h:97
int mBraLev
Klammerebene.
Definition: calculator.h:98
ErrId mErrId
Art des Fehlers.
Definition: calculator.h:63
string mIniFileName
Name der Initialisierungsdatei (ohne Pfad)
Definition: calculator.h:250
string mProgPath
Pfad, unter dem das Binary liegt.
Definition: calculator.h:246
Number mVal
numerischer Wert der Sieben-Segment-Anzeige
Definition: calculator.h:199
SymTabT::iterator SymTabIT
Iterator fuer die Symboltabelle.
Definition: calculator.h:48
ostream & operator<<(ostream &os, const Error &e)
Ausgabeoperator, wandelt enum ErrId in Strings.
Definition: calculator.cpp:68
NumStack mNumStack
Default-Zahlen-Stack: ist immer leer.
Definition: calculator.h:91
string mSeven
Sieben-Segment-Anzeige, formatiert wie Original.
Definition: calculator.h:192
SymOperator * mConstOpP
bei Konstantenrechnung: der Operator
Definition: calculator.h:100
Klasse zur Fehlerausgabe.
Definition: calculator.h:61
DisplayBase * mDisplayP
Zeiger auf die Anzeige.
Definition: calculator.h:252
Die Klasse Cfgs fasst alle Konfigurationsparameter zusammen.
Definition: cfgs.h:47
SymTabT mSymTab
Symboltabelle.
Definition: calculator.h:88
Die Klasse Number repraesentiert Zahlen.
Definition: number.h:48
ComputerBase * mComputerP
Zeiger auf den Computer.
Definition: calculator.h:251
Symbol * mLastButOneInP
das vorletzte eingegebene Symbol
Definition: calculator.h:94
string mMem
Memory-Anzeige.
Definition: calculator.h:194
string mModes
"INV MOD M K LRN ITG hyp SD LR DEG RAD GRA FIX SCI"
Definition: calculator.h:196
string mSevenRaw
dito, aber noch mit Spaces statt '#' und evtl. e+002
Definition: calculator.h:193
map< string, Symbol * > SymTabT
Symboltabelle.
Definition: calculator.h:47
SymOperator * mLastOpP
der zuletzt eingegebene Operator
Definition: calculator.h:95
Basisklasse fuer die Operatoren.
Definition: symbols.h:103
Cfgs * mCfgsP
Zeiger auf die Konfigurationsdaten.
Definition: calculator.h:253
string mHomeDir
Home-Verzeichnis des Users (falls Linux)
Definition: calculator.h:248
Symbole, die alle Taschenrechner haben (Modul base)
SymStackList mSymStackList
Symbol-Stack-Liste zum Rechnen.
Definition: calculator.h:90
bool mLastInPisNotToSet
damit kann Setzen von mLastInP verhindert werden
Definition: calculator.h:103
Basisklasse aller Taschenrechner.
Definition: calculator.h:242
Stack< Number > NumStack
Stack fuer Zahlen.
Definition: calculator.h:41
string mValue
Anzeige unformatiert.
Definition: calculator.h:191
Basisklasse aller Displays.
Definition: calculator.h:187
Number mConstVal
bei Konstantenrechnung: der konstante Wert
Definition: calculator.h:101
DisplayBase * mDsplP
Zeiger auf zugehoeriges Display.
Definition: calculator.h:87
bool mIsDlgApp
als Konsolen- oder Dialogapplik. gestartet?
Definition: calculator.h:254
list< NumStack > NumStackList
Liste von Zahlen-Stacks.
Definition: calculator.h:45
list< SymStack > SymStackList
Liste von Symbol-Stacks.
Definition: calculator.h:46
Klasse mit allen Parametern, die in der Konfigurationsdatei stehen (Modul base)
Basisklasse aller Computer.
Definition: calculator.h:84
Stack< SymOperator * > SymStack
Stack fuer Symbole.
Definition: calculator.h:44
string mProgVers
Programmversion zwecks Vrgl. in Ini-Datei.
Definition: calculator.h:247
NumStackList mNumStackList
Zahlen-Stack-Liste zum Rechnen.
Definition: calculator.h:89
string mK
Konstante.
Definition: calculator.h:195
SymOperator * mLastButOneOpP
der vorletzte eingegebene Operator
Definition: calculator.h:96
string mProgName
z.B. "TI-30", "Casio fx-85v", ...
Definition: calculator.h:245
Symbol * mLastInP
das zuletzt eingegebene Symbol
Definition: calculator.h:93
ComputerBase * mCompP
Zeiger auf Computer mit den Modes.
Definition: calculator.h:190
Number mPrcWhole
bei Prozentrechnung: das "Ganze"
Definition: calculator.h:99
Basisklasse fuer saemtliche Symbole.
Definition: symbols.h:46
Template-Klasse fuer einen Stack mit Logging bei Stack-Operationen (Modul lib)
string mAccPath
Zubehoer-Ordner.
Definition: calculator.h:249
SymStack mSymStack
Default-Symbol-Stack: ist immer leer.
Definition: calculator.h:92
int mParam
bei manchen Operatoren uebergebener Parameter
Definition: calculator.h:102