[escher] [apps] Implement app snapshot

Change-Id: I24d7eed7cef964af8be1c85222e758c297dc0da1
This commit is contained in:
Émilie Feral
2017-05-17 14:44:00 +02:00
parent 06de0dd9db
commit 71284311bb
51 changed files with 568 additions and 340 deletions

View File

@@ -34,6 +34,59 @@ Calculation::~Calculation() {
void Calculation::reset() {
m_inputText[0] = 0;
m_outputText[0] = 0;
tidy();
}
void Calculation::setContent(const char * c, Context * context) {
reset();
strlcpy(m_inputText, c, sizeof(m_inputText));
output(context)->writeTextInBuffer(m_outputText, sizeof(m_outputText));
}
const char * Calculation::inputText() {
return m_inputText;
}
const char * Calculation::outputText() {
return m_outputText;
}
Expression * Calculation::input() {
if (m_input == nullptr) {
m_input = Expression::parse(m_inputText);
}
return m_input;
}
ExpressionLayout * Calculation::inputLayout() {
if (m_inputLayout == nullptr && input() != nullptr) {
m_inputLayout = input()->createLayout(Expression::FloatDisplayMode::Decimal, Expression::ComplexFormat::Algebric);
}
return m_inputLayout;
}
Expression * Calculation::output(Context * context) {
if (m_output == nullptr && input() != nullptr) {
m_output = input()->evaluate(*context);
}
return m_output;
}
ExpressionLayout * Calculation::outputLayout(Context * context) {
if (m_outputLayout == nullptr && output(context) != nullptr) {
m_outputLayout = output(context)->createLayout();
}
return m_outputLayout;
}
bool Calculation::isEmpty() {
if (strlen(m_inputText) == 0) {
return true;
}
return false;
}
void Calculation::tidy() {
if (m_input != nullptr) {
delete m_input;
}
@@ -52,45 +105,4 @@ void Calculation::reset() {
m_outputLayout = nullptr;
}
void Calculation::setContent(const char * c, Context * context) {
reset();
strlcpy(m_inputText, c, sizeof(m_inputText));
m_input = Expression::parse(m_inputText);
m_inputLayout = m_input->createLayout(Expression::FloatDisplayMode::Decimal, Expression::ComplexFormat::Algebric);
m_output = m_input->evaluate(*context);
m_outputLayout = m_output->createLayout();
m_output->writeTextInBuffer(m_outputText, sizeof(m_outputText));
}
const char * Calculation::inputText() {
return m_inputText;
}
const char * Calculation::outputText() {
return m_outputText;
}
Expression * Calculation::input() {
return m_input;
}
ExpressionLayout * Calculation::inputLayout() {
return m_inputLayout;
}
Expression * Calculation::output() {
return m_output;
}
ExpressionLayout * Calculation::outputLayout() {
return m_outputLayout;
}
bool Calculation::isEmpty() {
if (m_output == nullptr) {
return true;
}
return false;
}
}