Kalkulacka  1.0.0
Jednoduchýkalkulátor
Dokumentace třídy team22::Calc::Interpret

#include <Interpret.h>

Diagram dědičnosti pro třídu team22::Calc::Interpret
Inheritance graph
Diagram tříd pro team22::Calc::Interpret:
Collaboration graph

Veřejné metody

void registrResultCallback (ResultObserver *resultCallbackObject)
 
void sendIdentifiedLex (Lex lex) override
 
void clear ()
 

Veřejné atributy

std::set< ResultObserver * > resultCallbackObjects
 

Privátní metody

void notifyResultChanged ()
 
void notifyAboutError ()
 

Privátní atributy

Math::Number result = Math::Number(0)
 
Lex::Operator oper
 
bool unprocessedOperator = false
 
bool unprocessedNumber = false
 

Detailní popis

Po přijetí min počtu lexemů pro interpretaci je interpretace provedena a výsledek předá pomocí callbacku ResultObserver::onResultChange. Objekty na kterých bude callback volán lze registrovat pomocí Interpret::registrResultCallback

Lexem Lex::EVAL po eval pokud příjde číslo přepíše výsledek číslem, pokud operator stejné chování jako eval nepřišlo

Lexemi Lex::BS a Lex::CLEAR provedou vynulování výsledku (a notifikaci o změně)

Ostatní lexémy budou vyhodnoceny jako matematické operace

Pořadí provázení operací je totožné s pořadím jejich předání. Pokud sekvence začíná operátorem předpokládá se první operátor 0

Pokud je předaná chybná sekvence lexému je oznámena chyba callback ResultObserver::onError.

příkad:

Auto i = Interpret;
i.sendIdentifiedLex(Number(5));
// Informování o změně výsledků na 5 pomocí callbacků
i.sendIdentifiedLex(Lex(Lex::ADD));
i.sendIdentifiedLex(Number(4));
// Provedení operace => 5+4 výsledek 9
// Informování o změně výsledků na 9 pomocí callbacků
i.sendIdentifiedLex(Lex(Lex::ADD));
i.sendIdentifiedLex(Number(4));
// Provedení operace => (předchozí výsledek)9+4 výsledek 13
// Informování o změně výsledků na 13 pomocí callbacků

Definice je uvedena na řádku 50 v souboru Interpret.h.

Dokumentace k metodám

void Interpret::clear ( )

Definice je uvedena na řádku 123 v souboru Interpret.cpp.

Používá se v team22::Calc::Equation::backSpace().

void Interpret::notifyAboutError ( )
private

Předá informaci o změně výsledků pozorovatelům

Definice je uvedena na řádku 142 v souboru Interpret.cpp.

void Interpret::notifyResultChanged ( )
private

Předá informaci o změně výsledků pozorovatelům

Definice je uvedena na řádku 136 v souboru Interpret.cpp.

void Interpret::registrResultCallback ( ResultObserver resultCallbackObject)

Registruje objekt k odběru rozeznaných lexémů vícenásobná registrace stejné instance odběratele neprovede nic

Parametry
resultCallbackObjectobjekt na němž bude volán callback při změně výsledku nebo chybě

Definice je uvedena na řádku 131 v souboru Interpret.cpp.

Používá se v team22::Test::Backend::BackendTester::BackendTester(), team22::Calc::Equation::Equation(), team22::Test::interpret::InterpretTest::InterpretTest() a SignalManager::SignalManager().

void Interpret::sendIdentifiedLex ( Lex  lex)
overridevirtual

Příjme lexém k interpretaci

Viz také
Interpret popis postupu interpretace
Parametry
lex

Implementuje team22::Calc::LexIdentificationObserver.

Definice je uvedena na řádku 12 v souboru Interpret.cpp.

Odkazuje se na team22::Calc::Lex::getAsNumber(), team22::Calc::Lex::getAsOperator() a team22::Calc::Lex::isNumber().

Používá se v team22::Calc::Equation::reComputeResult() a team22::Calc::Equation::sendIdentifiedLex().

Dokumentace k datovým členům

Lex::Operator team22::Calc::Interpret::oper
private

Definice je uvedena na řádku 87 v souboru Interpret.h.

Math::Number team22::Calc::Interpret::result = Math::Number(0)
private

Definice je uvedena na řádku 86 v souboru Interpret.h.

std::set<ResultObserver *> team22::Calc::Interpret::resultCallbackObjects

Množina Objektů na nichž bude volán callback při změně výsledku nebo chybě

Definice je uvedena na řádku 66 v souboru Interpret.h.

bool team22::Calc::Interpret::unprocessedNumber = false
private

Definice je uvedena na řádku 89 v souboru Interpret.h.

bool team22::Calc::Interpret::unprocessedOperator = false
private

Definice je uvedena na řádku 88 v souboru Interpret.h.


Dokumentace pro tuto třídu byla generována z následujících souborů: