Hauptseite | Liste aller Namensbereiche | Klassenhierarchie | Alphabetische Liste | Auflistung der Klassen | Verzeichnisse | Auflistung der Dateien | Klassen-Elemente | Datei-Elemente

ComputerBase Klassenreferenz

Basisklasse aller Computer. Mehr ...

#include <calculator.h>

Klassendiagramm für ComputerBase:

ComputerSci ComputerCasioSci ComputerTiSci ComputerFx3600p ComputerFx85v ComputerTi30 Aufstellung aller Elemente

Öffentliche Methoden

 ComputerBase ()
 Konstruktor erzeugt Symboltabelle, initialisiert Symbol- und Nummern-Stack.
virtual ~ComputerBase ()
 Die mit new angelegten Symbole muessen wieder geloescht werden.
void createSymTabBase ()
 Taschenrechner i.d.R. keine Klammern kennen.
void showSymTab ()
 Schreibt alle Symbole in die Log-Datei.
void initStacks ()
 Initialisiert die beiden Stack-Listen.
void initMembers (bool clrMem=true)
 Initialisiert die Members von ComputerBase.
void clearNum ()
Number getConstVal () const
Number getPrcWhole () const
Number getMemory () const
int getBraLev () const
int getParam () const
SymOperatorgetConstOpP () const
SymOperatorgetLastOpP () const
SymbolgetLastInP () const
SymbolgetLastButOneInP () const
SymbolgetSymP (const string &sym)
void setDsplP (DisplayBase *dsplP)
void setConstVal (const Number &val)
void setPrcWhole (const Number &val)
void setMemory (const Number &val)
void setParam (const int val)
void setLastOpP (SymOperator *soP)
void setConstOpP (SymOperator *soP)
void setLastInPisNotToSet (bool is)
void setLastInP (Symbol *sP)
 Speichert den Zeiger auf das zuletzt eingegebene Symbol.
void pushNewStacks ()
 Wirft neue Stacks auf die Stack-Listen.
void popStacks ()
 Holt die letzten Stacks von den Stack-Listen.
void pushNum (const Number &n)
void pushSym (SymOperator *sP)
Number getTopButOneNum ()
void setTopButOneNum (const Number &n)
bool isNumEmpty ()
bool isSymEmpty ()
Number popNum ()
Number topNum ()
SymOperatorpopSym ()
SymOperatortopSym ()
void incBraLev ()
void decBraLev ()
void printSymHelp ()
 Gibt alle Symbole der Symboltabelle auf die Konsole aus.
string getAllSyms ()
 Gibt saemtliche Symbole und Infos im String zurueck.
bool isSym (const string &sym)
 Prueft, ob Symbol sym in der Symboltabelle ist, und gibt true oder false zurueck.
Error compute ()
 Berechnet den letzten Operator auf dem Symbol-Stack.
Error swapNum ()
string extractParam (string &in)
 Extrahiert einen moeglicherweise vorhandenen Parameter des Symbols.
string makeCompBaseInfoStr ()
 Erzeugt fuers Debugging String mit den wichtigen Member-Variablen.
virtual bool preProcess (string &in)
virtual void aftProcess (string &in)
virtual void aftProcess2 (string &in)
virtual SymOperatorcheckConstMode (SymOperator *opP)
 Untersucht, ob in den Konstanten-Modus gewechselt werden oder dieser abgeschaltet werden muss.
virtual void handleDisplayAfterBra ()
 Erzeugt passende Anzeige nach Eingabe von "(".
virtual void handlePercent ()
 Prozentrechnung des Solar-Rechners:.
virtual void popNumDepOnLastSym ()
virtual bool map (string &sym)
virtual string makeCompInfoStr ()

Geschützte Methoden

bool popNumDepOnLastSymBase ()
 Holt die vorherige Eingabe vom Zahlenstack, wenn es kein Operator war.
virtual void handleEmptyNumStack (Number &a, SymOperator *soP, Number &b)
 Erfindet einen zweiten Operanden, falls ein Operator mit nur einem berechnet werden soll.

Geschützte Attribute

DisplayBasemDsplP
 Zeiger auf zugehoeriges Display.
SymTabT mSymTab
 Symboltabelle.
NumStackList mNumStackList
 Zahlen-Stack-Liste zum Rechnen.
SymStackList mSymStackList
 Symbol-Stack-Liste zum Rechnen.
NumStack mNumStack
 Default-Zahlen-Stack: ist immer leer.
SymStack mSymStack
 Default-Symbol-Stack: ist immer leer.
SymbolmLastInP
 das zuletzt eingegebene Symbol
SymbolmLastButOneInP
 das vorletzte eingegebene Symbol
SymOperatormLastOpP
 der zuletzt eingegebene Operator
Number mMemory
 Speicherregister.
int mBraLev
 Klammerebene.
Number mPrcWhole
 bei Prozentrechnung: das "Ganze"
SymOperatormConstOpP
 bei Konstantenrechnung: der Operator
Number mConstVal
 bei Konstantenrechnung: der konstante Wert
int mParam
 bei manchen Operatoren uebergebener Parameter
bool mLastInPisNotToSet
 damit kann Setzen von mLastInP verhindert werden

Freundbeziehungen

ostream & operator<< (ostream &os, ComputerBase &c)
 Ausgabeoperator gibt wichtige Member-Variablen aus.

Ausführliche Beschreibung

Basisklasse aller Computer.

Die Klasse bildet zusammen mit den Symbolen das Rechenwerk des Calculators. Sie enthaelt einen Zahlen-Stack, einen Symbolstack, verschiedene "Register" (mMemory, mConstVal etc.) und Zustandsflags (RAD, DEG etc.). Fuer jede Klammerebene wird ein eigener Zahlen- und Symbol-Stack angelegt; daher gibt es in Wahrheit eine Liste von Zahlen-Stacks und eine Liste von Symbol-Stacks. Unterschiede zwischen den Rechnern werden in einem Satz virtueller Funktionen nachgebildet.


Beschreibung der Konstruktoren und Destruktoren

ComputerBase::ComputerBase  ) 
 

Konstruktor erzeugt Symboltabelle, initialisiert Symbol- und Nummern-Stack.

ComputerBase::~ComputerBase  )  [virtual]
 

Die mit new angelegten Symbole muessen wieder geloescht werden.


Dokumentation der Elementfunktionen

virtual void ComputerBase::aftProcess string &  in  )  [inline, virtual]
 

Erneute Implementation in ComputerSci und ComputerCasioSci.

virtual void ComputerBase::aftProcess2 string &  in  )  [inline, virtual]
 

Erneute Implementation in ComputerFx3600p.

SymOperator * ComputerBase::checkConstMode SymOperator opP  )  [virtual]
 

Untersucht, ob in den Konstanten-Modus gewechselt werden oder dieser abgeschaltet werden muss.

Bedingungen fuers Einschalten (bei Casio-Rechnern):

  • Es muss zwei Mal unmittelbar hintereinander derselbe Operator eingegeben worden sein.
  • Es duerfen keine Klammern eingegeben worden sein. Bedingung fuers Ausschalten:
  • Irgendein Operator wurde eingegeben.

Erneute Implementation in ComputerCasioSci.

void ComputerBase::clearNum  )  [inline]
 

Error ComputerBase::compute  ) 
 

Berechnet den letzten Operator auf dem Symbol-Stack.

Dazu werden die benoetigten Operanden vom Zahlen-Stack geholt, die Operation ausgefuehrt und das Ergebnis wieder auf dem Zahlen-Stack abgelegt.

Rückgabe:
Element von Klasse Error

void ComputerBase::createSymTabBase  ) 
 

Taschenrechner i.d.R. keine Klammern kennen.

Da die Behandlung von Klammern integraler Bestandteil des Stack-Konzeptes ist, gehoeren auch Klammern zum minimalen Taschenrechner, obwohl einfache

void ComputerBase::decBraLev  )  [inline]
 

string ComputerBase::extractParam string &  in  ) 
 

Extrahiert einen moeglicherweise vorhandenen Parameter des Symbols.

Einige Operatoren ("sci", "fix") benoetigen einen Parameter. Dieser wird bei der Eingabe, durch "@" getrennt, an den Operator angehaengt und hier wieder extrahiert. Bei "ee" (Exponentialtaste des TI-30) Sonderbehandlung: Wenn hier der Parameter weggelassen wird, wird er auf 9999 gesetzt; dies wird in Symbol AcEe dann ausgewertet.

Parameter:
in zu untersuchende Zeichenkette

string ComputerBase::getAllSyms  ) 
 

Gibt saemtliche Symbole und Infos im String zurueck.

int ComputerBase::getBraLev  )  const [inline]
 

SymOperator* ComputerBase::getConstOpP  )  const [inline]
 

Number ComputerBase::getConstVal  )  const [inline]
 

Symbol* ComputerBase::getLastButOneInP  )  const [inline]
 

Symbol* ComputerBase::getLastInP  )  const [inline]
 

SymOperator* ComputerBase::getLastOpP  )  const [inline]
 

Number ComputerBase::getMemory  )  const [inline]
 

int ComputerBase::getParam  )  const [inline]
 

Number ComputerBase::getPrcWhole  )  const [inline]
 

Symbol* ComputerBase::getSymP const string &  sym  )  [inline]
 

Number ComputerBase::getTopButOneNum  )  [inline]
 

void ComputerBase::handleDisplayAfterBra  )  [virtual]
 

Erzeugt passende Anzeige nach Eingabe von "(".

Die Rechner unterscheiden sich darin, welche Zahl im Display erscheint, wenn "(" eingegeben wird. (TI: behaelt aktuelle Zahl bei, sie wird nur geloescht, wenn dann vor dem Operator noch eine andere eingegeben wird; Casio: schreibt "0" ins Display). Als Default-Verhalten ist hier das Casio-Verhalten implementiert.

Erneute Implementation in ComputerCasioSci und ComputerTiSci.

void ComputerBase::handleEmptyNumStack Number a,
SymOperator soP,
Number b
[protected, virtual]
 

Erfindet einen zweiten Operanden, falls ein Operator mit nur einem berechnet werden soll.

Muss von den abgeleiteten Klassen je nach Taschenrechner ueberladen werden.

Parameter:
a erster Operand
soP Zeiger auf Operatorsymbol
Rückgabewerte:
b erfundener zweiter Operator

Erneute Implementation in ComputerCasioSci und ComputerTiSci.

void ComputerBase::handlePercent  )  [virtual]
 

Prozentrechnung des Solar-Rechners:.

  • 1: a* b%: a*b/100
  • 2: a/ b%: a*100/b
  • 3: a+ b%: a+a*b/100
  • 4: a- b%: a-a*b/100

  • 5: a% : a
  • 6: a*% : a*a/100 : wie oben mit b = a
  • 7: a/% : 100/a
  • 8: a+% : 0
  • 9: a-% : 0

Erneute Implementation in ComputerSci, ComputerCasioSci und ComputerTiSci.

void ComputerBase::incBraLev  )  [inline]
 

void ComputerBase::initMembers bool  clrMem = true  ) 
 

Initialisiert die Members von ComputerBase.

Aus Konstruktor ausgelagert, weil auch von AcInit::process() aufgerufen.

Parameter:
clrMem wenn true, wird der Memory-Speicher geloescht

void ComputerBase::initStacks  ) 
 

Initialisiert die beiden Stack-Listen.

Die Stacks koennen leider nicht bereits im Konstruktor initialisiert werden, da mLogFileP zum Zeitpunkt des Aufrufs (Member von Calculator) noch nicht gesetzt ist.

bool ComputerBase::isNumEmpty  )  [inline]
 

bool ComputerBase::isSym const string &  sym  ) 
 

Prueft, ob Symbol sym in der Symboltabelle ist, und gibt true oder false zurueck.

Parameter:
sym zu untersuchende Zeichenkette
Rückgabe:
true, wenn das Symbol in der Symboltabelle gefunden wurde

bool ComputerBase::isSymEmpty  )  [inline]
 

string ComputerBase::makeCompBaseInfoStr  ) 
 

Erzeugt fuers Debugging String mit den wichtigen Member-Variablen.

Rückgabe:
String mit den wichtigen Member-Variablen

virtual string ComputerBase::makeCompInfoStr  )  [inline, virtual]
 

Erneute Implementation in ComputerSci und ComputerCasioSci.

virtual bool ComputerBase::map string &  sym  )  [inline, virtual]
 

Erneute Implementation in ComputerSci, ComputerFx3600p und ComputerFx85v.

Number ComputerBase::popNum  )  [inline]
 

virtual void ComputerBase::popNumDepOnLastSym  )  [inline, virtual]
 

Erneute Implementation in ComputerCasioSci.

bool ComputerBase::popNumDepOnLastSymBase  )  [protected]
 

Holt die vorherige Eingabe vom Zahlenstack, wenn es kein Operator war.

Das ist z.B. noetig, wenn direkt nacheinander zwei Zahlen eingegeben werden: Die zweite muss die erste auf dem Stack ersetzen. Diese Funktion muss in anderen Taschenrechnern erweitert werden um weitere Symbole; z.B. gilt das auch fuer die Tasten "Kout@1", ..., "Kout@6" der Casio-Taschenrechner. Daher muss eine virtuelle Funktion aufgerufen werden, die wiederum einige Funktionen wie diese hier aufruft.

Rückgabe:
true, wenn wirklich was gepopped wurde

void ComputerBase::popStacks  ) 
 

Holt die letzten Stacks von den Stack-Listen.

Wird benoetigt, wenn die Klammerebene erniedrigt wird.

SymOperator* ComputerBase::popSym  )  [inline]
 

virtual bool ComputerBase::preProcess string &  in  )  [inline, virtual]
 

Erneute Implementation in ComputerSci, ComputerFx3600p und ComputerFx85v.

void ComputerBase::printSymHelp  ) 
 

Gibt alle Symbole der Symboltabelle auf die Konsole aus.

void ComputerBase::pushNewStacks  ) 
 

Wirft neue Stacks auf die Stack-Listen.

Wird benoetigt, wenn die Klammerebene erhoeht wird.

void ComputerBase::pushNum const Number n  )  [inline]
 

void ComputerBase::pushSym SymOperator sP  )  [inline]
 

void ComputerBase::setConstOpP SymOperator soP  )  [inline]
 

void ComputerBase::setConstVal const Number val  )  [inline]
 

void ComputerBase::setDsplP DisplayBase dsplP  )  [inline]
 

void ComputerBase::setLastInP Symbol sP  ) 
 

Speichert den Zeiger auf das zuletzt eingegebene Symbol.

Alle Symbole mit Parametern benoetigen normalerweise zwei Durchlaeufe (z.B. Kout: im zweiten Durchlauf wird daraus "Kout@2"). Beim ersten Durchlauf darf mLastInP nicht gesetzt werden, da die Bearbeitung noch nicht abgeschlossen ist. Daher koennen diese Symbole das durch Setzen von mLastInPisNotToSet unterbinden.

Parameter:
sP Zeiger auf das Symbol, das in mLastInP gespeichert wird

void ComputerBase::setLastInPisNotToSet bool  is  )  [inline]
 

void ComputerBase::setLastOpP SymOperator soP  )  [inline]
 

void ComputerBase::setMemory const Number val  )  [inline]
 

void ComputerBase::setParam const int  val  )  [inline]
 

void ComputerBase::setPrcWhole const Number val  )  [inline]
 

void ComputerBase::setTopButOneNum const Number n  )  [inline]
 

void ComputerBase::showSymTab  ) 
 

Schreibt alle Symbole in die Log-Datei.

Error ComputerBase::swapNum  ) 
 

Number ComputerBase::topNum  )  [inline]
 

SymOperator* ComputerBase::topSym  )  [inline]
 


Freundbeziehungen und Funktionsdokumentation

ostream& operator<< ostream &  os,
ComputerBase c
[friend]
 

Ausgabeoperator gibt wichtige Member-Variablen aus.


Dokumentation der Datenelemente

int ComputerBase::mBraLev [protected]
 

Klammerebene.

SymOperator* ComputerBase::mConstOpP [protected]
 

bei Konstantenrechnung: der Operator

Number ComputerBase::mConstVal [protected]
 

bei Konstantenrechnung: der konstante Wert

DisplayBase* ComputerBase::mDsplP [protected]
 

Zeiger auf zugehoeriges Display.

Symbol* ComputerBase::mLastButOneInP [protected]
 

das vorletzte eingegebene Symbol

Symbol* ComputerBase::mLastInP [protected]
 

das zuletzt eingegebene Symbol

bool ComputerBase::mLastInPisNotToSet [protected]
 

damit kann Setzen von mLastInP verhindert werden

SymOperator* ComputerBase::mLastOpP [protected]
 

der zuletzt eingegebene Operator

Number ComputerBase::mMemory [protected]
 

Speicherregister.

NumStack ComputerBase::mNumStack [protected]
 

Default-Zahlen-Stack: ist immer leer.

NumStackList ComputerBase::mNumStackList [protected]
 

Zahlen-Stack-Liste zum Rechnen.

int ComputerBase::mParam [protected]
 

bei manchen Operatoren uebergebener Parameter

Number ComputerBase::mPrcWhole [protected]
 

bei Prozentrechnung: das "Ganze"

SymStack ComputerBase::mSymStack [protected]
 

Default-Symbol-Stack: ist immer leer.

SymStackList ComputerBase::mSymStackList [protected]
 

Symbol-Stack-Liste zum Rechnen.

SymTabT ComputerBase::mSymTab [protected]
 

Symboltabelle.


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Dateien:
Erzeugt am Mon Oct 10 19:54:31 2005 für Almetare von  doxygen 1.4.1