Kalkulacka
1.0.0
Jednoduchýkalkulátor
|
#include <Interpret.h>
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 |
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:
Definice je uvedena na řádku 50 v souboru Interpret.h.
void Interpret::clear | ( | ) |
Definice je uvedena na řádku 123 v souboru Interpret.cpp.
Používá se v team22::Calc::Equation::backSpace().
|
private |
Předá informaci o změně výsledků pozorovatelům
Definice je uvedena na řádku 142 v souboru Interpret.cpp.
|
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
resultCallbackObject | objekt 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().
|
overridevirtual |
Příjme lexém k interpretaci
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().
|
private |
Definice je uvedena na řádku 87 v souboru Interpret.h.
|
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.
|
private |
Definice je uvedena na řádku 89 v souboru Interpret.h.
|
private |
Definice je uvedena na řádku 88 v souboru Interpret.h.