diff --git a/apps/calculation/app.cpp b/apps/calculation/app.cpp index a26816aa8..078dd77e4 100644 --- a/apps/calculation/app.cpp +++ b/apps/calculation/app.cpp @@ -77,7 +77,7 @@ bool App::layoutFieldDidReceiveEvent(::LayoutField * layoutField, Ion::Events::E int bufferLength = Calculation::k_printedExpressionSize; char bufferForParsing[bufferLength]; - layoutField->writeTextInBuffer(bufferForParsing, bufferLength); + layoutField->serialize(bufferForParsing, bufferLength); if (!textInputIsCorrect(bufferForParsing)) { displayWarning(I18n::Message::SyntaxError); diff --git a/apps/calculation/edit_expression_controller.cpp b/apps/calculation/edit_expression_controller.cpp index 6c3d19a3d..04b8ca42f 100644 --- a/apps/calculation/edit_expression_controller.cpp +++ b/apps/calculation/edit_expression_controller.cpp @@ -159,7 +159,7 @@ bool EditExpressionController::inputViewDidFinishEditing(const char * text, Layo strlcpy(m_cacheBuffer, text, Calculation::k_printedExpressionSize); } else { assert(layoutR.isDefined()); - layoutR.writeTextInBuffer(m_cacheBuffer, Calculation::k_printedExpressionSize); + layoutR.serialize(m_cacheBuffer, Calculation::k_printedExpressionSize); } m_calculationStore->push(m_cacheBuffer, calculationApp->localContext()); m_historyController->reload(); diff --git a/apps/code/editor_view.cpp b/apps/code/editor_view.cpp index a4ffaca39..2253d9cbb 100644 --- a/apps/code/editor_view.cpp +++ b/apps/code/editor_view.cpp @@ -71,7 +71,7 @@ void EditorView::GutterView::drawRect(KDContext * ctx, KDRect rect) const { int numberOfLines = bounds().height() / charSize.height() + 1; for (int i=0; idrawString( lineNumber, diff --git a/apps/sequence/list/list_parameter_controller.cpp b/apps/sequence/list/list_parameter_controller.cpp index 6beed66cf..ae8e9b4cc 100644 --- a/apps/sequence/list/list_parameter_controller.cpp +++ b/apps/sequence/list/list_parameter_controller.cpp @@ -112,7 +112,7 @@ void ListParameterController::willDisplayCellForIndex(HighlightCell * cell, int return; } char buffer[Sequence::k_initialRankNumberOfDigits+1]; - Integer(m_sequence->initialRank()).writeTextInBuffer(buffer, Sequence::k_initialRankNumberOfDigits+1); + Integer(m_sequence->initialRank()).serialize(buffer, Sequence::k_initialRankNumberOfDigits+1); myCell->setAccessoryText(buffer); } } diff --git a/apps/sequence/list/sequence_toolbox.cpp b/apps/sequence/list/sequence_toolbox.cpp index ae6865cb3..fb247c524 100644 --- a/apps/sequence/list/sequence_toolbox.cpp +++ b/apps/sequence/list/sequence_toolbox.cpp @@ -112,7 +112,7 @@ void SequenceToolbox::buildExtraCellsLayouts(const char * sequenceName, int recu bool SequenceToolbox::selectAddedCell(int selectedRow){ int bufferSize = 10; char buffer[bufferSize]; - m_addedCellLayout[selectedRow]->writeTextInBuffer(buffer, bufferSize); + m_addedCellLayout[selectedRow]->serialize(buffer, bufferSize); sender()->handleEventWithText(buffer); app()->dismissModalViewController(); return true; diff --git a/apps/sequence/sequence.cpp b/apps/sequence/sequence.cpp index 31d80cb84..ab3e44ff8 100644 --- a/apps/sequence/sequence.cpp +++ b/apps/sequence/sequence.cpp @@ -254,7 +254,7 @@ Poincare::ExpressionLayout * Sequence::definitionName() { Poincare::ExpressionLayout * Sequence::firstInitialConditionName() { char buffer[k_initialRankNumberOfDigits+1]; - Integer(m_initialRank).writeTextInBuffer(buffer, k_initialRankNumberOfDigits+1); + Integer(m_initialRank).serialize(buffer, k_initialRankNumberOfDigits+1); if (m_firstInitialConditionName == nullptr && (m_type == Type::SingleRecurrence || m_type == Type::DoubleRecurrence)) @@ -270,7 +270,7 @@ Poincare::ExpressionLayout * Sequence::firstInitialConditionName() { Poincare::ExpressionLayout * Sequence::secondInitialConditionName() { char buffer[k_initialRankNumberOfDigits+1]; - Integer(m_initialRank+1).writeTextInBuffer(buffer, k_initialRankNumberOfDigits+1); + Integer(m_initialRank+1).serialize(buffer, k_initialRankNumberOfDigits+1); if (m_secondInitialConditionName == nullptr) { if (m_type == Type::DoubleRecurrence) { ExpressionLayout * indexLayout = LayoutHelper::String(buffer, strlen(buffer), KDText::FontSize::Large); diff --git a/apps/settings/sub_controller.cpp b/apps/settings/sub_controller.cpp index 18c8b577c..48ddf5115 100644 --- a/apps/settings/sub_controller.cpp +++ b/apps/settings/sub_controller.cpp @@ -177,7 +177,7 @@ void SubController::willDisplayCellForIndex(HighlightCell * cell, int index) { if (m_messageTreeModel->label() == I18n::Message::DisplayMode && index == numberOfRows()-1) { MessageTableCellWithEditableText * myCell = (MessageTableCellWithEditableText *)cell; char buffer[3]; - Integer(Preferences::sharedPreferences()->numberOfSignificantDigits()).writeTextInBuffer(buffer, 3); + Integer(Preferences::sharedPreferences()->numberOfSignificantDigits()).serialize(buffer, 3); myCell->setAccessoryText(buffer); return; } diff --git a/apps/shared/expression_field_delegate_app.cpp b/apps/shared/expression_field_delegate_app.cpp index c7c04f597..9b268fc5f 100644 --- a/apps/shared/expression_field_delegate_app.cpp +++ b/apps/shared/expression_field_delegate_app.cpp @@ -33,7 +33,7 @@ bool ExpressionFieldDelegateApp::layoutFieldDidReceiveEvent(LayoutField * layout } char buffer[TextField::maxBufferSize()]; int bufferSize = TextField::maxBufferSize(); - int length = layoutField->writeTextInBuffer(buffer, bufferSize); + int length = layoutField->serialize(buffer, bufferSize); Expression * exp = Expression::parse(buffer); if (exp != nullptr) { delete exp; diff --git a/apps/shared/poincare_helpers.h b/apps/shared/poincare_helpers.h index 0d8c7ec18..aad71c9a5 100644 --- a/apps/shared/poincare_helpers.h +++ b/apps/shared/poincare_helpers.h @@ -17,7 +17,7 @@ inline int ConvertFloatToText(T d, char * buffer, int bufferSize, int numberOfSi } inline int WriteTextInBuffer(const Poincare::Expression * e, char * buffer, int bufferSize, int numberOfSignificantDigits = Poincare::PrintFloat::k_numberOfStoredSignificantDigits) { - return e->writeTextInBuffer(buffer, bufferSize, Poincare::Preferences::sharedPreferences()->displayMode(), numberOfSignificantDigits); + return e->serialize(buffer, bufferSize, Poincare::Preferences::sharedPreferences()->displayMode(), numberOfSignificantDigits); } template diff --git a/apps/solver/equation_store.cpp b/apps/solver/equation_store.cpp index c42b2e7ec..7b7a9595b 100644 --- a/apps/solver/equation_store.cpp +++ b/apps/solver/equation_store.cpp @@ -166,8 +166,8 @@ EquationStore::Error EquationStore::exactSolve(Poincare::Context * context) { /* Check for identity between exact and approximate layouts */ char exactBuffer[Shared::ExpressionModel::k_expressionBufferSize]; char approximateBuffer[Shared::ExpressionModel::k_expressionBufferSize]; - m_exactSolutionExactLayouts[i]->writeTextInBuffer(exactBuffer, Shared::ExpressionModel::k_expressionBufferSize); - m_exactSolutionApproximateLayouts[i]->writeTextInBuffer(approximateBuffer, Shared::ExpressionModel::k_expressionBufferSize); + m_exactSolutionExactLayouts[i]->serialize(exactBuffer, Shared::ExpressionModel::k_expressionBufferSize); + m_exactSolutionApproximateLayouts[i]->serialize(approximateBuffer, Shared::ExpressionModel::k_expressionBufferSize); m_exactSolutionIdentity[i] = strcmp(exactBuffer, approximateBuffer) == 0; /* Check for equality between exact and approximate layouts */ if (!m_exactSolutionIdentity[i]) { diff --git a/apps/solver/list_controller.cpp b/apps/solver/list_controller.cpp index 7c238a70e..9084b6305 100644 --- a/apps/solver/list_controller.cpp +++ b/apps/solver/list_controller.cpp @@ -132,11 +132,11 @@ bool ListController::textFieldDidReceiveEvent(TextField * textField, Ion::Events bool ListController::expressionLayoutFieldDidReceiveEvent(ExpressionLayoutField * expressionLayoutField, Ion::Events::Event event) { if (expressionLayoutField->isEditing() && expressionLayoutField->expressionLayoutFieldShouldFinishEditing(event)) { char buffer[TextField::maxBufferSize()]; - expressionLayoutField->writeTextInBuffer(buffer, TextField::maxBufferSize()); + expressionLayoutField->serialize(buffer, TextField::maxBufferSize()); if (!textRepresentsAnEquality(buffer)) { expressionLayoutField->handleEvent(Ion::Events::ShiftRight); expressionLayoutField->handleEventWithText("=0"); - expressionLayoutField->writeTextInBuffer(buffer, TextField::maxBufferSize()); + expressionLayoutField->serialize(buffer, TextField::maxBufferSize()); if (!textRepresentsAnEquality(buffer)) { app()->displayWarning(I18n::Message::RequireEquation); return true; diff --git a/apps/solver/test/equation_store.cpp b/apps/solver/test/equation_store.cpp index cb8e0a754..f4cc21f93 100644 --- a/apps/solver/test/equation_store.cpp +++ b/apps/solver/test/equation_store.cpp @@ -40,7 +40,7 @@ void assert_equation_system_exact_solve_to(const char * equations[], EquationSto } int n = type == EquationStore::Type::PolynomialMonovariable ? numberOfSolutions+1 : numberOfSolutions; // Check Delta for PolynomialMonovariable for (int i = 0; i < n; i++) { - equationStore.exactSolutionLayoutAtIndex(i, true)->writeTextInBuffer(buffer, 200); + equationStore.exactSolutionLayoutAtIndex(i, true)->serialize(buffer, 200); translate_in_ASCII_chars(buffer); assert(strcmp(buffer, solutions[i]) == 0); } diff --git a/escher/include/escher/layout_field.h b/escher/include/escher/layout_field.h index 9c27ae5bf..dc9b652b4 100644 --- a/escher/include/escher/layout_field.h +++ b/escher/include/escher/layout_field.h @@ -26,7 +26,7 @@ public: } void reload(); bool hasText() const { return layoutRef().hasText(); } - int writeTextInBuffer(char * buffer, int bufferLength) { return layoutRef().writeTextInBuffer(buffer, bufferLength); } + int serialize(char * buffer, int bufferLength) { return layoutRef().serialize(buffer, bufferLength); } Poincare::LayoutRef layoutRef() const { return m_contentView.expressionView()->layoutRef(); } char XNTChar() { return m_contentView.cursor()->layoutReference().XNTChar(); } diff --git a/escher/src/clipboard.cpp b/escher/src/clipboard.cpp index 22e27145d..4c872f12b 100644 --- a/escher/src/clipboard.cpp +++ b/escher/src/clipboard.cpp @@ -11,7 +11,7 @@ void Clipboard::store(const char * storedText) { } void Clipboard::store(Poincare::LayoutRef layoutR) { - layoutR.writeTextInBuffer(m_textBuffer, TextField::maxBufferSize()); + layoutR.serialize(m_textBuffer, TextField::maxBufferSize()); } const char * Clipboard::storedText() { diff --git a/escher/src/expression_field.cpp b/escher/src/expression_field.cpp index 4450d1f6c..31226a8a9 100644 --- a/escher/src/expression_field.cpp +++ b/escher/src/expression_field.cpp @@ -37,7 +37,7 @@ bool ExpressionField::isEditing() const { const char * ExpressionField::text() { if (!editionIsInTextField()) { - m_layoutField.writeTextInBuffer(m_textBuffer, m_textBufferLength); + m_layoutField.serialize(m_textBuffer, m_textBufferLength); } return m_textBuffer; } diff --git a/escher/src/expression_layout_field.cpp b/escher/src/expression_layout_field.cpp index 3d095bec3..088152a59 100644 --- a/escher/src/expression_layout_field.cpp +++ b/escher/src/expression_layout_field.cpp @@ -174,8 +174,8 @@ bool ExpressionLayoutField::hasText() const { return expressionLayout()->hasText(); } -int ExpressionLayoutField::writeTextInBuffer(char * buffer, int bufferLength) { - return expressionLayout()->writeTextInBuffer(buffer, bufferLength); +int ExpressionLayoutField::serialize(char * buffer, int bufferLength) { + return expressionLayout()->serialize(buffer, bufferLength); } bool ExpressionLayoutField::handleEventWithText(const char * text, bool indentation, bool forceCursorRightOfText) { diff --git a/poincare/include/poincare/absolute_value.h b/poincare/include/poincare/absolute_value.h index 05545d082..b9f8238ce 100644 --- a/poincare/include/poincare/absolute_value.h +++ b/poincare/include/poincare/absolute_value.h @@ -16,7 +16,7 @@ private: Expression setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) override; /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "abs"); } /* Simplification */ diff --git a/poincare/include/poincare/absolute_value_layout_node.h b/poincare/include/poincare/absolute_value_layout_node.h index 1b0c3968b..16ed8461a 100644 --- a/poincare/include/poincare/absolute_value_layout_node.h +++ b/poincare/include/poincare/absolute_value_layout_node.h @@ -8,7 +8,7 @@ namespace Poincare { class AbsoluteValueLayoutNode : public BracketPairLayoutNode { public: using BracketPairLayoutNode::BracketPairLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "abs"); } // TreeNode diff --git a/poincare/include/poincare/addition.h b/poincare/include/poincare/addition.h index 34d718954..73c9b8eaf 100644 --- a/poincare/include/poincare/addition.h +++ b/poincare/include/poincare/addition.h @@ -30,11 +30,11 @@ public: } private: /* Layout */ - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Infix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } static const char * name() { return "+"; } diff --git a/poincare/include/poincare/allocation_failed_layout_node.h b/poincare/include/poincare/allocation_failed_layout_node.h index 6c36dd6d0..82bf4997a 100644 --- a/poincare/include/poincare/allocation_failed_layout_node.h +++ b/poincare/include/poincare/allocation_failed_layout_node.h @@ -21,7 +21,7 @@ public: #endif int numberOfChildren() const override { return 0; } // LayoutNode - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { assert(false); int descriptionLength = strlen(description()) + 1; return strlcpy(buffer, description(), bufferSize < descriptionLength ? bufferSize : descriptionLength); diff --git a/poincare/include/poincare/allocation_failure_expression_node.h b/poincare/include/poincare/allocation_failure_expression_node.h index b89afb88a..d56b2a867 100644 --- a/poincare/include/poincare/allocation_failure_expression_node.h +++ b/poincare/include/poincare/allocation_failure_expression_node.h @@ -16,7 +16,7 @@ public: ExpressionNode::Type type() const override { return ExpressionNode::Type::AllocationFailure; } Evaluation approximate(ExpressionNode::SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return Complex::Undefined(); } Evaluation approximate(ExpressionNode::DoublePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return Complex::Undefined(); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override { if (bufferSize == 0) { return -1; } diff --git a/poincare/include/poincare/arc_cosine.h b/poincare/include/poincare/arc_cosine.h index e3c6c23fa..00ed654a4 100644 --- a/poincare/include/poincare/arc_cosine.h +++ b/poincare/include/poincare/arc_cosine.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { diff --git a/poincare/include/poincare/arc_sine.h b/poincare/include/poincare/arc_sine.h index 20c41bd5e..c8affd951 100644 --- a/poincare/include/poincare/arc_sine.h +++ b/poincare/include/poincare/arc_sine.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "asin"; } diff --git a/poincare/include/poincare/arc_tangent.h b/poincare/include/poincare/arc_tangent.h index 097e4e6f5..ad122eed0 100644 --- a/poincare/include/poincare/arc_tangent.h +++ b/poincare/include/poincare/arc_tangent.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "atan"; } diff --git a/poincare/include/poincare/binomial_coefficient.h b/poincare/include/poincare/binomial_coefficient.h index 90990d096..f084c0bfe 100644 --- a/poincare/include/poincare/binomial_coefficient.h +++ b/poincare/include/poincare/binomial_coefficient.h @@ -16,7 +16,7 @@ private: constexpr static int k_maxNValue = 300; /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "binomial"); } /* Simplification */ diff --git a/poincare/include/poincare/binomial_coefficient_layout_node.h b/poincare/include/poincare/binomial_coefficient_layout_node.h index 3a4880fb1..6fa90852f 100644 --- a/poincare/include/poincare/binomial_coefficient_layout_node.h +++ b/poincare/include/poincare/binomial_coefficient_layout_node.h @@ -19,7 +19,7 @@ public: void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // SerializableNode - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // TreeNode size_t size() const override { return sizeof(BinomialCoefficientLayoutNode); } diff --git a/poincare/include/poincare/bracket_pair_layout_node.h b/poincare/include/poincare/bracket_pair_layout_node.h index 56a9d89f1..031252b34 100644 --- a/poincare/include/poincare/bracket_pair_layout_node.h +++ b/poincare/include/poincare/bracket_pair_layout_node.h @@ -20,7 +20,7 @@ public: void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; void deleteBeforeCursor(LayoutCursor * cursor) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool shouldCollapseSiblingsOnRight() const override{ return true; } void didCollapseSiblings(LayoutCursor * cursor) override; diff --git a/poincare/include/poincare/ceiling.h b/poincare/include/poincare/ceiling.h index 23f803d8a..d03a41cac 100644 --- a/poincare/include/poincare/ceiling.h +++ b/poincare/include/poincare/ceiling.h @@ -14,7 +14,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "ceil"; } diff --git a/poincare/include/poincare/ceiling_layout_node.h b/poincare/include/poincare/ceiling_layout_node.h index 84c3861a9..2492689e9 100644 --- a/poincare/include/poincare/ceiling_layout_node.h +++ b/poincare/include/poincare/ceiling_layout_node.h @@ -9,7 +9,7 @@ namespace Poincare { class CeilingLayoutNode : public BracketPairLayoutNode { public: using BracketPairLayoutNode::BracketPairLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "ceil"); } // TreeNode diff --git a/poincare/include/poincare/char_layout_node.h b/poincare/include/poincare/char_layout_node.h index 10bb1d4f2..5e99b6a36 100644 --- a/poincare/include/poincare/char_layout_node.h +++ b/poincare/include/poincare/char_layout_node.h @@ -23,7 +23,7 @@ public: // LayoutNode void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool isCollapsable(int * numberOfOpenParenthesis, bool goingLeft) const override; // TreeNode diff --git a/poincare/include/poincare/complex_argument.h b/poincare/include/poincare/complex_argument.h index 98b067551..9d469610a 100644 --- a/poincare/include/poincare/complex_argument.h +++ b/poincare/include/poincare/complex_argument.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "arg"; } diff --git a/poincare/include/poincare/condensed_sum_layout_node.h b/poincare/include/poincare/condensed_sum_layout_node.h index 28e0b5117..4b2c1d4e7 100644 --- a/poincare/include/poincare/condensed_sum_layout_node.h +++ b/poincare/include/poincare/condensed_sum_layout_node.h @@ -16,7 +16,7 @@ public: * a view with no cursor. */ void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override { assert(false); } void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override { assert(false); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "sum"); } diff --git a/poincare/include/poincare/confidence_interval.h b/poincare/include/poincare/confidence_interval.h index d56c43248..28b1ad62b 100644 --- a/poincare/include/poincare/confidence_interval.h +++ b/poincare/include/poincare/confidence_interval.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } virtual const char * name() const { return "confidence"; } diff --git a/poincare/include/poincare/conjugate.h b/poincare/include/poincare/conjugate.h index b40bef618..a7fb9c8eb 100644 --- a/poincare/include/poincare/conjugate.h +++ b/poincare/include/poincare/conjugate.h @@ -14,7 +14,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "conj"); } /* Simplification */ diff --git a/poincare/include/poincare/conjugate_layout_node.h b/poincare/include/poincare/conjugate_layout_node.h index 96cbdc3f8..173e28fd0 100644 --- a/poincare/include/poincare/conjugate_layout_node.h +++ b/poincare/include/poincare/conjugate_layout_node.h @@ -14,7 +14,7 @@ public: // LayoutNode void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool shouldCollapseSiblingsOnRight() const override { return true; } // TreeNode diff --git a/poincare/include/poincare/cosine.h b/poincare/include/poincare/cosine.h index 5358bbe26..598bef4a0 100644 --- a/poincare/include/poincare/cosine.h +++ b/poincare/include/poincare/cosine.h @@ -21,7 +21,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "cos"; } diff --git a/poincare/include/poincare/decimal.h b/poincare/include/poincare/decimal.h index 2bcd9b2ac..f541c0f83 100644 --- a/poincare/include/poincare/decimal.h +++ b/poincare/include/poincare/decimal.h @@ -44,9 +44,9 @@ public: Expression shallowBeautify(Context& context, Preferences::AngleUnit angleUnit) override; // Layout - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; private: // Worst case is -1.2345678901234E-1000 constexpr static int k_maxBufferSize = PrintFloat::k_numberOfStoredSignificantDigits+1+1+1+1+4+1; diff --git a/poincare/include/poincare/derivative.h b/poincare/include/poincare/derivative.h index f0e7ec4c4..99147499b 100644 --- a/poincare/include/poincare/derivative.h +++ b/poincare/include/poincare/derivative.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "diff"; } diff --git a/poincare/include/poincare/determinant.h b/poincare/include/poincare/determinant.h index 15f2ded50..bde320bf2 100644 --- a/poincare/include/poincare/determinant.h +++ b/poincare/include/poincare/determinant.h @@ -15,7 +15,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "det"; } diff --git a/poincare/include/poincare/division.h b/poincare/include/poincare/division.h index 902eff4bc..393e24873 100644 --- a/poincare/include/poincare/division.h +++ b/poincare/include/poincare/division.h @@ -18,9 +18,9 @@ public: int polynomialDegree(char symbolName) const override; private: /* Layout */ - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "/"); } /* Simplification */ diff --git a/poincare/include/poincare/division_quotient.h b/poincare/include/poincare/division_quotient.h index 2ca82d427..a706811a5 100644 --- a/poincare/include/poincare/division_quotient.h +++ b/poincare/include/poincare/division_quotient.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "quo"; } diff --git a/poincare/include/poincare/division_remainder.h b/poincare/include/poincare/division_remainder.h index 85dd02743..239d3658d 100644 --- a/poincare/include/poincare/division_remainder.h +++ b/poincare/include/poincare/division_remainder.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "rem"; } diff --git a/poincare/include/poincare/empty_expression.h b/poincare/include/poincare/empty_expression.h index 0e2fbc3d7..bf7830ac7 100644 --- a/poincare/include/poincare/empty_expression.h +++ b/poincare/include/poincare/empty_expression.h @@ -13,7 +13,7 @@ public: Type type() const override { return Type::EmptyExpression; } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; diff --git a/poincare/include/poincare/empty_layout_node.h b/poincare/include/poincare/empty_layout_node.h index b2c491e7c..80ca5063b 100644 --- a/poincare/include/poincare/empty_layout_node.h +++ b/poincare/include/poincare/empty_layout_node.h @@ -34,7 +34,7 @@ public: void deleteBeforeCursor(LayoutCursor * cursor) override; void moveCursorLeft(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool isEmpty() const override { return true; } // TreeNode diff --git a/poincare/include/poincare/equal.h b/poincare/include/poincare/equal.h index a43804838..404c6f7ef 100644 --- a/poincare/include/poincare/equal.h +++ b/poincare/include/poincare/equal.h @@ -19,7 +19,7 @@ private: Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "="); } /* Evalutation */ diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index 8d490165a..8e3d36175 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -1,7 +1,6 @@ #ifndef POINCARE_EXPRESSION_REFERENCE_H #define POINCARE_EXPRESSION_REFERENCE_H -#include #include #include #include @@ -13,7 +12,7 @@ namespace Poincare { class Context; -class Expression : public SerializableReference, public TreeByValue { +class Expression : public TreeByValue { friend class ExpressionNode; friend class NAryExpressionNode; friend class SymbolNode; @@ -25,8 +24,8 @@ public: /* Reference */ ExpressionNode * node() const override { - assert(!SerializableReference::node()->isGhost()); - return static_cast(SerializableReference::node()); + assert(!TreeByValue::node()->isGhost()); + return static_cast(TreeByValue::node()); } /* Circuit breaker */ @@ -89,7 +88,7 @@ public: /* Layout Helper */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return this->node()->createLayout(floatDisplayMode, numberOfSignificantDigits); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const { return this->node()->writeTextInBuffer(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits = PrintFloat::k_numberOfStoredSignificantDigits) const { return this->node()->serialize(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); } /* Simplification */ static Expression ParseAndSimplify(const char * text, Context & context, Preferences::AngleUnit angleUnit); @@ -112,7 +111,7 @@ public: Coordinate2D nextIntersection(char symbol, double start, double step, double max, Context & context, Preferences::AngleUnit angleUnit, const Expression expression) const; protected: - Expression(const ExpressionNode * n) : SerializableReference(n), TreeByValue(n) {} + Expression(const ExpressionNode * n) : TreeByValue(n) {} /* Hierarchy */ Expression childAtIndex(int i) const { return Expression(static_cast(TreeByReference::treeChildAtIndex(i).node())); diff --git a/poincare/include/poincare/expression_node.h b/poincare/include/poincare/expression_node.h index 6eab282ed..d23ebcae3 100644 --- a/poincare/include/poincare/expression_node.h +++ b/poincare/include/poincare/expression_node.h @@ -1,9 +1,10 @@ #ifndef POINCARE_EXPRESSION_NODE_H #define POINCARE_EXPRESSION_NODE_H -#include +#include #include #include +#include #include #include @@ -13,7 +14,7 @@ namespace Poincare { * make 'this' outdated. They should only be call only be call in a wrapper on * Expression. */ -class ExpressionNode : public SerializableNode { +class ExpressionNode : public TreeNode, public SerializationHelperInterface { friend class ApproximationHelper; friend class SymbolNode; friend class NAryExpressionNode; @@ -157,8 +158,12 @@ protected: /*!*/ virtual Expression cloneDenominator(Context & context, Preferences::AngleUnit angleUnit) const; /* Hierarchy */ - ExpressionNode * childAtIndex(int i) const override { return static_cast(SerializableNode::childAtIndex(i)); } - ExpressionNode * parent() const override { return static_cast(SerializableNode::parent()); } + ExpressionNode * childAtIndex(int i) const override { return static_cast(TreeNode::childAtIndex(i)); } + ExpressionNode * parent() const override { return static_cast(TreeNode::parent()); } + + /* SerializationHelperInterface */ + SerializationHelperInterface * serializableChildAtIndex(int i) const override { return childAtIndex(i); } + int numberOfSerializableChildren() const override { return numberOfChildren(); } }; } diff --git a/poincare/include/poincare/factor.h b/poincare/include/poincare/factor.h index 57f1f4594..c0c76a65a 100644 --- a/poincare/include/poincare/factor.h +++ b/poincare/include/poincare/factor.h @@ -18,7 +18,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "factor"; } diff --git a/poincare/include/poincare/factorial.h b/poincare/include/poincare/factorial.h index 6524b598a..8b59151f7 100644 --- a/poincare/include/poincare/factorial.h +++ b/poincare/include/poincare/factorial.h @@ -13,9 +13,9 @@ public: private: constexpr static int k_maxOperandValue = 100; /* Layout */ - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplication */ Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; Expression shallowBeautify(Context& context, Preferences::AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/float.h b/poincare/include/poincare/float.h index 08b6451eb..89e4027b9 100644 --- a/poincare/include/poincare/float.h +++ b/poincare/include/poincare/float.h @@ -32,7 +32,7 @@ public: Type type() const override { return Type::Float; } // Layout - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { assert(false); return 0; } diff --git a/poincare/include/poincare/floor.h b/poincare/include/poincare/floor.h index 7c24f10c8..c9f31250c 100644 --- a/poincare/include/poincare/floor.h +++ b/poincare/include/poincare/floor.h @@ -14,7 +14,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "floor"; } diff --git a/poincare/include/poincare/floor_layout_node.h b/poincare/include/poincare/floor_layout_node.h index 0488385f2..f14caa105 100644 --- a/poincare/include/poincare/floor_layout_node.h +++ b/poincare/include/poincare/floor_layout_node.h @@ -9,7 +9,7 @@ namespace Poincare { class FloorLayoutNode : public BracketPairLayoutNode { public: using BracketPairLayoutNode::BracketPairLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "floor"); } diff --git a/poincare/include/poincare/frac_part.h b/poincare/include/poincare/frac_part.h index 8ca3c529e..fecaa1d72 100644 --- a/poincare/include/poincare/frac_part.h +++ b/poincare/include/poincare/frac_part.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "frac"; } diff --git a/poincare/include/poincare/fraction_layout_node.h b/poincare/include/poincare/fraction_layout_node.h index 983236f75..e85cf0ab7 100644 --- a/poincare/include/poincare/fraction_layout_node.h +++ b/poincare/include/poincare/fraction_layout_node.h @@ -17,7 +17,7 @@ public: void moveCursorUp(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void deleteBeforeCursor(LayoutCursor * cursor) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool shouldCollapseSiblingsOnLeft() const override { return true; } bool shouldCollapseSiblingsOnRight() const override { return true; } int leftCollapsingAbsorbingChildIndex() const override { return 0; } diff --git a/poincare/include/poincare/great_common_divisor.h b/poincare/include/poincare/great_common_divisor.h index 69d33bac7..71b4a01ad 100644 --- a/poincare/include/poincare/great_common_divisor.h +++ b/poincare/include/poincare/great_common_divisor.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "gcd"; } diff --git a/poincare/include/poincare/grid_layout_node.h b/poincare/include/poincare/grid_layout_node.h index 1a89a80d6..8e6b3346e 100644 --- a/poincare/include/poincare/grid_layout_node.h +++ b/poincare/include/poincare/grid_layout_node.h @@ -34,7 +34,7 @@ public: void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; // SerializableNode - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { assert(false); return 0; } diff --git a/poincare/include/poincare/horizontal_layout_node.h b/poincare/include/poincare/horizontal_layout_node.h index 68d568874..dbb8482ed 100644 --- a/poincare/include/poincare/horizontal_layout_node.h +++ b/poincare/include/poincare/horizontal_layout_node.h @@ -29,7 +29,7 @@ public: void moveCursorRight(LayoutCursor * cursor, bool * shouldRecomputeLayout) override; LayoutCursor equivalentCursor(LayoutCursor * cursor) override; void deleteBeforeCursor(LayoutCursor * cursor) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool isHorizontal() const override { return true; } bool isEmpty() const override { return m_numberOfChildren == 1 && const_cast(this)->childAtIndex(0)->isEmpty(); } diff --git a/poincare/include/poincare/hyperbolic_arc_cosine.h b/poincare/include/poincare/hyperbolic_arc_cosine.h index 42d28455e..50c227b47 100644 --- a/poincare/include/poincare/hyperbolic_arc_cosine.h +++ b/poincare/include/poincare/hyperbolic_arc_cosine.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "acosh"; } diff --git a/poincare/include/poincare/hyperbolic_arc_sine.h b/poincare/include/poincare/hyperbolic_arc_sine.h index d6bb4f80f..4af716344 100644 --- a/poincare/include/poincare/hyperbolic_arc_sine.h +++ b/poincare/include/poincare/hyperbolic_arc_sine.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "asinh"; } diff --git a/poincare/include/poincare/hyperbolic_arc_tangent.h b/poincare/include/poincare/hyperbolic_arc_tangent.h index f4b02f5c5..a324ca2ce 100644 --- a/poincare/include/poincare/hyperbolic_arc_tangent.h +++ b/poincare/include/poincare/hyperbolic_arc_tangent.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "atanh"; } diff --git a/poincare/include/poincare/hyperbolic_cosine.h b/poincare/include/poincare/hyperbolic_cosine.h index 6ff0a1770..02e5a146f 100644 --- a/poincare/include/poincare/hyperbolic_cosine.h +++ b/poincare/include/poincare/hyperbolic_cosine.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "cosh"; } diff --git a/poincare/include/poincare/hyperbolic_sine.h b/poincare/include/poincare/hyperbolic_sine.h index 0d9578459..7f347dff8 100644 --- a/poincare/include/poincare/hyperbolic_sine.h +++ b/poincare/include/poincare/hyperbolic_sine.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "sinh"; } diff --git a/poincare/include/poincare/hyperbolic_tangent.h b/poincare/include/poincare/hyperbolic_tangent.h index a28fd80b1..18ca82b73 100644 --- a/poincare/include/poincare/hyperbolic_tangent.h +++ b/poincare/include/poincare/hyperbolic_tangent.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "tanh"; } diff --git a/poincare/include/poincare/imaginary_part.h b/poincare/include/poincare/imaginary_part.h index 94c782c4c..08b232d5e 100644 --- a/poincare/include/poincare/imaginary_part.h +++ b/poincare/include/poincare/imaginary_part.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "im"; } diff --git a/poincare/include/poincare/infinity.h b/poincare/include/poincare/infinity.h index 99a924f74..4bbc1e1f0 100644 --- a/poincare/include/poincare/infinity.h +++ b/poincare/include/poincare/infinity.h @@ -33,7 +33,7 @@ public: // Layout LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; private: template Evaluation templatedApproximate() const; bool m_negative; diff --git a/poincare/include/poincare/integer.h b/poincare/include/poincare/integer.h index 351b690fd..66f072c08 100644 --- a/poincare/include/poincare/integer.h +++ b/poincare/include/poincare/integer.h @@ -32,7 +32,7 @@ public: size_t numberOfDigits() const { return m_numberOfDigits; } // Layout - int writeTextInBuffer(char * buffer, int bufferSize) const; + int serialize(char * buffer, int bufferSize) const; LayoutReference createLayout() const; // Approximation @@ -123,7 +123,7 @@ public: // Layout LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; // TreeNode size_t size() const override; diff --git a/poincare/include/poincare/integral.h b/poincare/include/poincare/integral.h index f4fac248c..899f3ba00 100644 --- a/poincare/include/poincare/integral.h +++ b/poincare/include/poincare/integral.h @@ -15,7 +15,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "int"); } /* Simplification */ diff --git a/poincare/include/poincare/integral_layout_node.h b/poincare/include/poincare/integral_layout_node.h index 98eef8c8b..2544a8034 100644 --- a/poincare/include/poincare/integral_layout_node.h +++ b/poincare/include/poincare/integral_layout_node.h @@ -21,7 +21,7 @@ public: void moveCursorUp(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void deleteBeforeCursor(LayoutCursor * cursor) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; LayoutNode * layoutToPointWhenInserting() override { assert(lowerBoundLayout() != nullptr); return lowerBoundLayout(); diff --git a/poincare/include/poincare/layout_node.h b/poincare/include/poincare/layout_node.h index a478f3460..0718b6940 100644 --- a/poincare/include/poincare/layout_node.h +++ b/poincare/include/poincare/layout_node.h @@ -1,7 +1,8 @@ #ifndef POINCARE_LAYOUT_NODE_H #define POINCARE_LAYOUT_NODE_H -#include +#include +#include #include #include @@ -22,7 +23,7 @@ class LayoutReference; * We tackle this by not handling any event when the cursor points to an * AllocationFailure layout. */ -class LayoutNode : public SerializableNode { +class LayoutNode : public TreeNode, public SerializationHelperInterface { friend class LayoutReference; public: enum class VerticalDirection { @@ -32,7 +33,7 @@ public: // Constructor LayoutNode() : - SerializableNode(), + TreeNode(), m_baseline(0), m_frame(KDRectZero), m_baselined(false), @@ -49,6 +50,10 @@ public: KDCoordinate baseline(); virtual void invalidAllSizesPositionsAndBaselines(); + // SerializationHelperInterface + SerializationHelperInterface * serializableChildAtIndex(int i) const override { return childAtIndex(i); } + int numberOfSerializableChildren() const override { return numberOfChildren(); } + // TreeNode static TreeNode * FailedAllocationStaticNode(); TreeNode * failedAllocationStaticNode() override { return FailedAllocationStaticNode(); } diff --git a/poincare/include/poincare/layout_reference.h b/poincare/include/poincare/layout_reference.h index 5061976ea..508011192 100644 --- a/poincare/include/poincare/layout_reference.h +++ b/poincare/include/poincare/layout_reference.h @@ -2,21 +2,20 @@ #define POINCARE_LAYOUT_REFERENCE_H #include -#include +#include namespace Poincare { class LayoutCursor; -class LayoutReference : public SerializableReference { +class LayoutReference : public TreeByReference { friend class LayoutCursor; public: using TreeByReference::operator==; using TreeByReference::operator!=; LayoutReference(LayoutNode * node) : - TreeByReference(node), - SerializableReference(node) {} + TreeByReference(node) {} LayoutReference clone() const { TreeByReference c = TreeByReference::clone(); @@ -26,8 +25,8 @@ public: } LayoutNode * node() const override { - assert(!SerializableReference::node()->isGhost()); - return static_cast(SerializableReference::node()); + assert(!TreeByReference::node()->isGhost()); + return static_cast(TreeByReference::node()); } // Rendering diff --git a/poincare/include/poincare/least_common_multiple.h b/poincare/include/poincare/least_common_multiple.h index fb9eeb625..21a23fc06 100644 --- a/poincare/include/poincare/least_common_multiple.h +++ b/poincare/include/poincare/least_common_multiple.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "lcm"; } diff --git a/poincare/include/poincare/left_parenthesis_layout_node.h b/poincare/include/poincare/left_parenthesis_layout_node.h index 70eb4774c..a72630c87 100644 --- a/poincare/include/poincare/left_parenthesis_layout_node.h +++ b/poincare/include/poincare/left_parenthesis_layout_node.h @@ -17,7 +17,7 @@ public: bool isLeftParenthesis() const override { return true; } // Serializable Node - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Char(buffer, bufferSize, '('); } diff --git a/poincare/include/poincare/left_square_bracket_layout_node.h b/poincare/include/poincare/left_square_bracket_layout_node.h index a40e02c88..528dc1a85 100644 --- a/poincare/include/poincare/left_square_bracket_layout_node.h +++ b/poincare/include/poincare/left_square_bracket_layout_node.h @@ -9,7 +9,7 @@ namespace Poincare { class LeftSquareBracketLayoutNode : public SquareBracketLayoutNode { public: using SquareBracketLayoutNode::SquareBracketLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Char(buffer, bufferSize, '['); } bool isLeftBracket() const override { return true; } diff --git a/poincare/include/poincare/logarithm.h b/poincare/include/poincare/logarithm.h index 210e5f30e..7c80bf2b8 100644 --- a/poincare/include/poincare/logarithm.h +++ b/poincare/include/poincare/logarithm.h @@ -15,7 +15,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "log"); } /* Simplification */ diff --git a/poincare/include/poincare/matrix.h b/poincare/include/poincare/matrix.h index 053de8634..575790ffb 100644 --- a/poincare/include/poincare/matrix.h +++ b/poincare/include/poincare/matrix.h @@ -40,7 +40,7 @@ public: // Layout LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; private: template Evaluation templatedApproximate(Context& context, Preferences::AngleUnit angleUnit) const; int m_numberOfRows; diff --git a/poincare/include/poincare/matrix_dimension.h b/poincare/include/poincare/matrix_dimension.h index c1be4f52c..95c317833 100644 --- a/poincare/include/poincare/matrix_dimension.h +++ b/poincare/include/poincare/matrix_dimension.h @@ -15,7 +15,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "dim"; } diff --git a/poincare/include/poincare/matrix_inverse.h b/poincare/include/poincare/matrix_inverse.h index 48748e461..e6e0a4dc5 100644 --- a/poincare/include/poincare/matrix_inverse.h +++ b/poincare/include/poincare/matrix_inverse.h @@ -15,7 +15,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "inverse"; } diff --git a/poincare/include/poincare/matrix_layout_node.h b/poincare/include/poincare/matrix_layout_node.h index 3049305a1..bf010d1cf 100644 --- a/poincare/include/poincare/matrix_layout_node.h +++ b/poincare/include/poincare/matrix_layout_node.h @@ -26,7 +26,7 @@ public: bool isMatrix() const override { return true; } // SerializableNode - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // TreeNode size_t size() const override { return sizeof(MatrixLayoutNode); } diff --git a/poincare/include/poincare/matrix_trace.h b/poincare/include/poincare/matrix_trace.h index b34d3b2a0..63c0f47ea 100644 --- a/poincare/include/poincare/matrix_trace.h +++ b/poincare/include/poincare/matrix_trace.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "trace"; } diff --git a/poincare/include/poincare/matrix_transpose.h b/poincare/include/poincare/matrix_transpose.h index be19652a8..e91baf83d 100644 --- a/poincare/include/poincare/matrix_transpose.h +++ b/poincare/include/poincare/matrix_transpose.h @@ -15,7 +15,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "transpose"; } diff --git a/poincare/include/poincare/multiplication.h b/poincare/include/poincare/multiplication.h index 77567f03d..bf6b93c7e 100644 --- a/poincare/include/poincare/multiplication.h +++ b/poincare/include/poincare/multiplication.h @@ -34,9 +34,9 @@ private: /* Property */ Expression setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) override; /* Layout */ - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; Expression * privateShallowReduce(Context& context, Preferences::AngleUnit angleUnit, bool expand, bool canBeInterrupted); diff --git a/poincare/include/poincare/naperian_logarithm.h b/poincare/include/poincare/naperian_logarithm.h index aaa351164..6aecdfb72 100644 --- a/poincare/include/poincare/naperian_logarithm.h +++ b/poincare/include/poincare/naperian_logarithm.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "ln"; } diff --git a/poincare/include/poincare/nth_root.h b/poincare/include/poincare/nth_root.h index 83ce2dafa..1a0e6d97d 100644 --- a/poincare/include/poincare/nth_root.h +++ b/poincare/include/poincare/nth_root.h @@ -13,7 +13,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "root"); } /* Simplification */ diff --git a/poincare/include/poincare/nth_root_layout_node.h b/poincare/include/poincare/nth_root_layout_node.h index 348ce1b4b..104d928d3 100644 --- a/poincare/include/poincare/nth_root_layout_node.h +++ b/poincare/include/poincare/nth_root_layout_node.h @@ -26,7 +26,7 @@ public: void moveCursorUp(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void deleteBeforeCursor(LayoutCursor * cursor) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool shouldCollapseSiblingsOnRight() const override { return true; } bool hasUpperLeftIndex() const override { return m_hasIndex; } diff --git a/poincare/include/poincare/opposite.h b/poincare/include/poincare/opposite.h index 993a80fc5..483b818ae 100644 --- a/poincare/include/poincare/opposite.h +++ b/poincare/include/poincare/opposite.h @@ -33,9 +33,9 @@ public: } // Layout - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; // Simplification virtual Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) const override; diff --git a/poincare/include/poincare/parenthesis.h b/poincare/include/poincare/parenthesis.h index 7863df4d4..e9485599f 100644 --- a/poincare/include/poincare/parenthesis.h +++ b/poincare/include/poincare/parenthesis.h @@ -23,7 +23,7 @@ public: // Layout LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/permute_coefficient.h b/poincare/include/poincare/permute_coefficient.h index 023e19c03..5a50589ed 100644 --- a/poincare/include/poincare/permute_coefficient.h +++ b/poincare/include/poincare/permute_coefficient.h @@ -17,7 +17,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "permute"; } diff --git a/poincare/include/poincare/power.h b/poincare/include/poincare/power.h index fa1b42c3c..1af93a86f 100644 --- a/poincare/include/poincare/power.h +++ b/poincare/include/poincare/power.h @@ -31,8 +31,8 @@ private: Expression setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) override; /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } static const char * name() { return "^"; } diff --git a/poincare/include/poincare/prediction_interval.h b/poincare/include/poincare/prediction_interval.h index 949271c21..ec4741c4e 100644 --- a/poincare/include/poincare/prediction_interval.h +++ b/poincare/include/poincare/prediction_interval.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "prediction95"; } diff --git a/poincare/include/poincare/product_layout_node.h b/poincare/include/poincare/product_layout_node.h index 70dd60174..bb5e703fc 100644 --- a/poincare/include/poincare/product_layout_node.h +++ b/poincare/include/poincare/product_layout_node.h @@ -9,7 +9,7 @@ namespace Poincare { class ProductLayoutNode : public SequenceLayoutNode { public: using SequenceLayoutNode::SequenceLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; size_t size() const override { return sizeof(ProductLayoutNode); } #if TREE_LOG const char * description() const override { return "ProductLayout"; } diff --git a/poincare/include/poincare/randint.h b/poincare/include/poincare/randint.h index 93c3fbb95..930ce8e4e 100644 --- a/poincare/include/poincare/randint.h +++ b/poincare/include/poincare/randint.h @@ -15,7 +15,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "randint"; } diff --git a/poincare/include/poincare/random.h b/poincare/include/poincare/random.h index 5de890c9d..a80a1ed9b 100644 --- a/poincare/include/poincare/random.h +++ b/poincare/include/poincare/random.h @@ -19,7 +19,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "random"; } diff --git a/poincare/include/poincare/rational.h b/poincare/include/poincare/rational.h index 3412f626d..ac1cd4abc 100644 --- a/poincare/include/poincare/rational.h +++ b/poincare/include/poincare/rational.h @@ -19,8 +19,8 @@ public: #endif // Serialization Node - bool needsParenthesisWithParent(SerializableNode * e) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + bool needsParenthesesWithParent(SerializableNode * e) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Expression subclassing Type type() const override { return Type::Rational; } diff --git a/poincare/include/poincare/real_part.h b/poincare/include/poincare/real_part.h index abe8678f4..afe1bcff6 100644 --- a/poincare/include/poincare/real_part.h +++ b/poincare/include/poincare/real_part.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "re"; } diff --git a/poincare/include/poincare/right_parenthesis_layout_node.h b/poincare/include/poincare/right_parenthesis_layout_node.h index 40884032a..507294c6e 100644 --- a/poincare/include/poincare/right_parenthesis_layout_node.h +++ b/poincare/include/poincare/right_parenthesis_layout_node.h @@ -17,7 +17,7 @@ public: bool isRightParenthesis() const override { return true; } // SerializableNode - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Char(buffer, bufferSize, ')'); } diff --git a/poincare/include/poincare/right_square_bracket_layout_node.h b/poincare/include/poincare/right_square_bracket_layout_node.h index 1fd13bc6b..0dd804650 100644 --- a/poincare/include/poincare/right_square_bracket_layout_node.h +++ b/poincare/include/poincare/right_square_bracket_layout_node.h @@ -9,7 +9,7 @@ namespace Poincare { class RightSquareBracketLayoutNode : public SquareBracketLayoutNode { public: using SquareBracketLayoutNode::SquareBracketLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return SerializationHelper::Char(buffer, bufferSize, ']'); } bool isRightBracket() const override { return true; } diff --git a/poincare/include/poincare/round.h b/poincare/include/poincare/round.h index 01ee01259..6a38f69b1 100644 --- a/poincare/include/poincare/round.h +++ b/poincare/include/poincare/round.h @@ -16,7 +16,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "round"; } diff --git a/poincare/include/poincare/sequence.h b/poincare/include/poincare/sequence.h index e64447c51..aa2e89ddb 100644 --- a/poincare/include/poincare/sequence.h +++ b/poincare/include/poincare/sequence.h @@ -11,7 +11,7 @@ class Sequence : public StaticHierarchy<3> { using StaticHierarchy<3>::StaticHierarchy; private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } virtual LayoutRef createSequenceLayout(LayoutRef subscriptLayout, LayoutRef superscriptLayout, LayoutRef argumentLayout) const = 0; diff --git a/poincare/include/poincare/serializable_node.h b/poincare/include/poincare/serializable_node.h deleted file mode 100644 index 71d8ad105..000000000 --- a/poincare/include/poincare/serializable_node.h +++ /dev/null @@ -1,19 +0,0 @@ -#ifndef POINCARE_SERIALIZABLE_NODE_H -#define POINCARE_SERIALIZABLE_NODE_H - -#include -#include - -namespace Poincare { - -class SerializableNode : public TreeNode { -public: - using TreeNode::TreeNode; - virtual bool needsParenthesisWithParent(SerializableNode * parentNode) const { return false; } //TODO - virtual int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const = 0; - -}; - -} - -#endif diff --git a/poincare/include/poincare/serializable_reference.h b/poincare/include/poincare/serializable_reference.h deleted file mode 100644 index bb67e899c..000000000 --- a/poincare/include/poincare/serializable_reference.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef POINCARE_SERIALIZABLE_REFERENCE_H -#define POINCARE_SERIALIZABLE_REFERENCE_H - -#include -#include -#include - -namespace Poincare { - -class SerializableReference : virtual public TreeByReference { -public: - SerializableNode * node() const override { return static_cast(TreeByReference::node()); } - // Serialization - bool needsParenthesisWithParent(SerializableReference parentRef) { - assert(isDefined()); - return node()->needsParenthesisWithParent(parentRef.node()); - } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const { - assert(isDefined()); - return node()->writeTextInBuffer(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); - } - - // Tree - SerializableReference serializableChildAtIndex(int i) { - TreeByReference treeRefChild = TreeByReference::treeChildAtIndex(i); - return SerializableReference(static_cast(treeRefChild.node())); - } -protected: - SerializableReference(const SerializableNode * n) : TreeByReference(n) {} -}; - -} - -#endif diff --git a/poincare/include/poincare/serialization_helper.h b/poincare/include/poincare/serialization_helper.h index af9d0c0d6..7c1e79c7b 100644 --- a/poincare/include/poincare/serialization_helper.h +++ b/poincare/include/poincare/serialization_helper.h @@ -1,15 +1,14 @@ #ifndef POINCARE_SERIALIZATION_HELPER_H #define POINCARE_SERIALIZATION_HELPER_H -#include -#include +#include namespace Poincare { namespace SerializationHelper { /* SerializableReference to Text */ static int Infix( - const SerializableReference serializableRef, + const SerializationHelperInterface * interface, char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, @@ -19,7 +18,7 @@ namespace SerializationHelper { int lastChildIndex = -1); static int Prefix( - const SerializableReference serializableRef, + const SerializationHelperInterface * interface, char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, diff --git a/poincare/include/poincare/serialization_helper_interface.h b/poincare/include/poincare/serialization_helper_interface.h new file mode 100644 index 000000000..a2f40ae04 --- /dev/null +++ b/poincare/include/poincare/serialization_helper_interface.h @@ -0,0 +1,19 @@ +#ifndef POINCARE_SERIALIZATION_HELPER_INTERFACE_H +#define POINCARE_SERIALIZATION_HELPER_INTERFACE_H + +#include + +namespace Poincare { + +class SerializationHelperInterface { +public: + virtual int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const = 0; + virtual bool needsParenthesesWithParent(const SerializationHelperInterface * parent) const { return false; }; + + virtual SerializationHelperInterface * serializableChildAtIndex(int i) const = 0; + virtual int numberOfSerializableChildren() const = 0; +}; + +} + +#endif diff --git a/poincare/include/poincare/simplification_root.h b/poincare/include/poincare/simplification_root.h index 5eccc798d..36a4fd5f4 100644 --- a/poincare/include/poincare/simplification_root.h +++ b/poincare/include/poincare/simplification_root.h @@ -22,7 +22,7 @@ public: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return nullptr; } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return 0; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return 0; } Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { assert(false); return nullptr; diff --git a/poincare/include/poincare/sine.h b/poincare/include/poincare/sine.h index a78ea62bd..c82e44cbb 100644 --- a/poincare/include/poincare/sine.h +++ b/poincare/include/poincare/sine.h @@ -20,7 +20,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "sin"; } diff --git a/poincare/include/poincare/square_root.h b/poincare/include/poincare/square_root.h index aef5e670a..cb014511f 100644 --- a/poincare/include/poincare/square_root.h +++ b/poincare/include/poincare/square_root.h @@ -14,7 +14,7 @@ public: private: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; /* Evaluation */ diff --git a/poincare/include/poincare/store.h b/poincare/include/poincare/store.h index 6bcc4f380..f6e716380 100644 --- a/poincare/include/poincare/store.h +++ b/poincare/include/poincare/store.h @@ -19,7 +19,7 @@ private: Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Evalutation */ Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } Evaluation approximate(DoublePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return templatedApproximate(context, angleUnit); } diff --git a/poincare/include/poincare/subtraction.h b/poincare/include/poincare/subtraction.h index b6655d413..541848775 100644 --- a/poincare/include/poincare/subtraction.h +++ b/poincare/include/poincare/subtraction.h @@ -15,11 +15,11 @@ public: int polynomialDegree(char symbolName) const override; private: /* Layout */ - bool needsParenthesisWithParent(SerializableNode * parentNode) const override; + bool needsParenthesesWithParent(SerializableNode * parentNode) const override; LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Infix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } static const char * name() { return "-"; } diff --git a/poincare/include/poincare/sum_layout_node.h b/poincare/include/poincare/sum_layout_node.h index 195f67458..537628153 100644 --- a/poincare/include/poincare/sum_layout_node.h +++ b/poincare/include/poincare/sum_layout_node.h @@ -9,7 +9,7 @@ namespace Poincare { class SumLayoutNode : public SequenceLayoutNode { public: using SequenceLayoutNode::SequenceLayoutNode; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; private: void render(KDContext * ctx, KDPoint p, KDColor expressionColor, KDColor backgroundColor) override; }; diff --git a/poincare/include/poincare/symbol.h b/poincare/include/poincare/symbol.h index 02dfcbe0b..4c115b033 100644 --- a/poincare/include/poincare/symbol.h +++ b/poincare/include/poincare/symbol.h @@ -34,7 +34,7 @@ public: /* Layout */ LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression shallowReduce(Context& context, Preferences::AngleUnit angleUnit) override; diff --git a/poincare/include/poincare/tangent.h b/poincare/include/poincare/tangent.h index 698e74b5e..f47d96246 100644 --- a/poincare/include/poincare/tangent.h +++ b/poincare/include/poincare/tangent.h @@ -18,7 +18,7 @@ private: LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); } - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); } const char * name() const { return "tan"; } diff --git a/poincare/include/poincare/undefined.h b/poincare/include/poincare/undefined.h index 86df69e90..a3d9bc1de 100644 --- a/poincare/include/poincare/undefined.h +++ b/poincare/include/poincare/undefined.h @@ -30,7 +30,7 @@ public: // Layout LayoutRef createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode = Preferences::PrintFloatMode::Decimal, int numberOfSignificantDigits = 0) const override; private: template Evaluation templatedApproximate() const; }; diff --git a/poincare/include/poincare/vertical_offset_layout_node.h b/poincare/include/poincare/vertical_offset_layout_node.h index 665165219..345a679cf 100644 --- a/poincare/include/poincare/vertical_offset_layout_node.h +++ b/poincare/include/poincare/vertical_offset_layout_node.h @@ -29,7 +29,7 @@ public: void moveCursorUp(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override; void deleteBeforeCursor(LayoutCursor * cursor) override; - int writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; bool mustHaveLeftSibling() const override { return true; } bool isVerticalOffset() const override { return true; } diff --git a/poincare/src/addition.cpp b/poincare/src/addition.cpp index 5c4110e78..515497a76 100644 --- a/poincare/src/addition.cpp +++ b/poincare/src/addition.cpp @@ -56,7 +56,7 @@ int Addition::getPolynomialCoefficients(char symbolName, Expression coefficients /* Layout */ -bool Addition::needParenthesisWithParent(const Expression * e) const { +bool Addition::needsParenthesesWithParent(const SerializationHelperInterface * e) const { Type types[] = {Type::Subtraction, Type::Opposite, Type::Multiplication, Type::Division, Type::Power, Type::Factorial}; return e->isOfType(types, 6); } diff --git a/poincare/src/binomial_coefficient_layout_node.cpp b/poincare/src/binomial_coefficient_layout_node.cpp index 6ebeabce0..187423545 100644 --- a/poincare/src/binomial_coefficient_layout_node.cpp +++ b/poincare/src/binomial_coefficient_layout_node.cpp @@ -74,7 +74,7 @@ void BinomialCoefficientLayoutNode::moveCursorDown(LayoutCursor * cursor, bool * LayoutNode::moveCursorDown(cursor, shouldRecomputeLayout, equivalentPositionVisited); } -int BinomialCoefficientLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int BinomialCoefficientLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "binomial"); } diff --git a/poincare/src/bracket_pair_layout_node.cpp b/poincare/src/bracket_pair_layout_node.cpp index e062695fd..161bf178f 100644 --- a/poincare/src/bracket_pair_layout_node.cpp +++ b/poincare/src/bracket_pair_layout_node.cpp @@ -97,7 +97,7 @@ void BracketPairLayoutNode::didCollapseSiblings(LayoutCursor * cursor) { } } -int BracketPairLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int BracketPairLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -109,7 +109,7 @@ int BracketPairLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Pref if (numberOfChar >= bufferSize-1) { return bufferSize-1;} // Write the argument - numberOfChar += const_cast(this)->childLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->childLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the closing bracket diff --git a/poincare/src/char_layout_node.cpp b/poincare/src/char_layout_node.cpp index 744610535..b03e63131 100644 --- a/poincare/src/char_layout_node.cpp +++ b/poincare/src/char_layout_node.cpp @@ -27,7 +27,7 @@ void CharLayoutNode::moveCursorRight(LayoutCursor * cursor, bool * shouldRecompu } } -int CharLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int CharLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SerializationHelper::Char(buffer, bufferSize, m_char); } diff --git a/poincare/src/conjugate_layout_node.cpp b/poincare/src/conjugate_layout_node.cpp index f781f344d..a7f0d0d81 100644 --- a/poincare/src/conjugate_layout_node.cpp +++ b/poincare/src/conjugate_layout_node.cpp @@ -53,7 +53,7 @@ void ConjugateLayoutNode::moveCursorRight(LayoutCursor * cursor, bool * shouldRe } } -int ConjugateLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int ConjugateLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "conj"); } diff --git a/poincare/src/decimal.cpp b/poincare/src/decimal.cpp index 4f4f0f269..ebc88be12 100644 --- a/poincare/src/decimal.cpp +++ b/poincare/src/decimal.cpp @@ -96,7 +96,7 @@ Expression DecimalNode::shallowBeautify(Context & context, Preferences::AngleUni return reference; } -bool DecimalNode::needsParenthesisWithParent(SerializableNode * parentNode) const { +bool DecimalNode::needsParenthesesWithParent(SerializableNode * parentNode) const { if (!m_negative) { return false; } @@ -110,7 +110,7 @@ LayoutRef DecimalNode::createLayout(Preferences::PrintFloatMode floatDisplayMode return LayoutHelper::String(buffer, numberOfChars); } -int DecimalNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int DecimalNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return convertToText(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); } @@ -149,7 +149,7 @@ int DecimalNode::convertToText(char * buffer, int bufferSize, Preferences::Print buffer[currentChar++] = '-'; if (currentChar >= bufferSize-1) { return bufferSize-1; } } - int mantissaLength = mantissaRef.writeTextInBuffer(tempBuffer, PrintFloat::k_numberOfStoredSignificantDigits+1, mode, numberOfSignificantDigits); + int mantissaLength = mantissaRef.serialize(tempBuffer, PrintFloat::k_numberOfStoredSignificantDigits+1, mode, numberOfSignificantDigits); if (strcmp(tempBuffer, "inf") == 0) { currentChar += strlcpy(buffer+currentChar, tempBuffer, bufferSize-currentChar); return currentChar; @@ -184,7 +184,7 @@ int DecimalNode::convertToText(char * buffer, int bufferSize, Preferences::Print } if (currentChar >= bufferSize-1) { return bufferSize-1; } buffer[currentChar++] = Ion::Charset::Exponent; - currentChar += IntegerReference(exponent).writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, mode, numberOfSignificantDigits); + currentChar += IntegerReference(exponent).serialize(buffer+currentChar, bufferSize-currentChar, mode, numberOfSignificantDigits); return currentChar; } /* Case 1: Decimal mode */ diff --git a/poincare/src/division.cpp b/poincare/src/division.cpp index 93100af49..ed73740a9 100644 --- a/poincare/src/division.cpp +++ b/poincare/src/division.cpp @@ -30,7 +30,7 @@ int Division::polynomialDegree(char symbolName) const { return operand(0)->polynomialDegree(symbolName); } -bool Division::needParenthesisWithParent(const Expression * e) const { +bool Division::needsParenthesesWithParent(const SerializationHelperInterface * e) const { Type types[] = {Type::Division, Type::Power, Type::Factorial}; return e->isOfType(types, 3); } diff --git a/poincare/src/empty_expression.cpp b/poincare/src/empty_expression.cpp index ba842bde7..c27247ca4 100644 --- a/poincare/src/empty_expression.cpp +++ b/poincare/src/empty_expression.cpp @@ -10,7 +10,7 @@ Expression * EmptyExpression::clone() const { return new EmptyExpression(); } -int EmptyExpression::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int EmptyExpression::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SerializationHelper::Char(buffer, bufferSize, Ion::Charset::Empty); } diff --git a/poincare/src/empty_layout_node.cpp b/poincare/src/empty_layout_node.cpp index 906935d09..8caeb03b8 100644 --- a/poincare/src/empty_layout_node.cpp +++ b/poincare/src/empty_layout_node.cpp @@ -33,7 +33,7 @@ void EmptyLayoutNode::moveCursorRight(LayoutCursor * cursor, bool * shouldRecomp } } -int EmptyLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int EmptyLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/expression.cpp b/poincare/src/expression.cpp index ce2b5d175..7a67093d3 100644 --- a/poincare/src/expression.cpp +++ b/poincare/src/expression.cpp @@ -146,7 +146,7 @@ int Expression::getPolynomialCoefficients(char symbolName, Expression coefficien bool Expression::isEqualToItsApproximationLayout(Expression approximation, int bufferSize, Preferences::AngleUnit angleUnit, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits, Context & context) { char buffer[bufferSize]; - approximation.writeTextInBuffer(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); + approximation.serialize(buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); /* Warning: we cannot use directly the the approximate expression but we have * to re-serialize it because the number of stored significative * numbers and the number of displayed significative numbers might not be diff --git a/poincare/src/factorial.cpp b/poincare/src/factorial.cpp index f3659a774..2ff745093 100644 --- a/poincare/src/factorial.cpp +++ b/poincare/src/factorial.cpp @@ -30,7 +30,7 @@ Expression * Factorial::clone() const { /* Layout */ -bool Factorial::needParenthesisWithParent(const Expression * e) const { +bool Factorial::needsParenthesesWithParent(const SerializationHelperInterface * e) const { return e->type() == Type::Factorial; } @@ -100,18 +100,18 @@ LayoutRef Factorial::createLayout(Preferences::PrintFloatMode floatDisplayMode, return result; } -int Factorial::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int Factorial::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } buffer[bufferSize-1] = 0; int numberOfChar = 0; - if (operand(0)->needParenthesisWithParent(this)) { + if (operand(0)->needsParenthesesWithParent(this)) { buffer[numberOfChar++] = '('; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } } - numberOfChar += operand(0)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); - if (operand(0)->needParenthesisWithParent(this)) { + numberOfChar += operand(0)->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + if (operand(0)->needsParenthesesWithParent(this)) { buffer[numberOfChar++] = ')'; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } } diff --git a/poincare/src/fraction_layout_node.cpp b/poincare/src/fraction_layout_node.cpp index adaba8284..4cc846b42 100644 --- a/poincare/src/fraction_layout_node.cpp +++ b/poincare/src/fraction_layout_node.cpp @@ -124,7 +124,7 @@ void FractionLayoutNode::deleteBeforeCursor(LayoutCursor * cursor) { LayoutNode::deleteBeforeCursor(cursor); } -int FractionLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int FractionLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/horizontal_layout_node.cpp b/poincare/src/horizontal_layout_node.cpp index 129406317..019c3f54f 100644 --- a/poincare/src/horizontal_layout_node.cpp +++ b/poincare/src/horizontal_layout_node.cpp @@ -164,7 +164,7 @@ void HorizontalLayoutNode::deleteBeforeCursor(LayoutCursor * cursor) { LayoutNode::deleteBeforeCursor(cursor); } -int HorizontalLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int HorizontalLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (numberOfChildren() == 0) { if (bufferSize == 0) { return -1; diff --git a/poincare/src/infinity.cpp b/poincare/src/infinity.cpp index 429a169b7..044c01bdc 100644 --- a/poincare/src/infinity.cpp +++ b/poincare/src/infinity.cpp @@ -17,11 +17,11 @@ InfinityNode * InfinityNode::FailedAllocationStaticNode() { LayoutRef InfinityNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { char buffer[5]; - int numberOfChars = writeTextInBuffer(buffer, 5, floatDisplayMode, numberOfSignificantDigits); + int numberOfChars = serialize(buffer, 5, floatDisplayMode, numberOfSignificantDigits); return LayoutHelper::String(buffer, numberOfChars); } -int InfinityNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int InfinityNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/integer.cpp b/poincare/src/integer.cpp index f25eebd3a..1a8fdf0ca 100644 --- a/poincare/src/integer.cpp +++ b/poincare/src/integer.cpp @@ -40,7 +40,7 @@ static inline int8_t sign(bool negative) { // Layout -int NaturalIntegerAbstract::writeTextInBuffer(char * buffer, int bufferSize) const { +int NaturalIntegerAbstract::serialize(char * buffer, int bufferSize) const { if (bufferSize == 0) { return -1; } @@ -81,7 +81,7 @@ int NaturalIntegerAbstract::writeTextInBuffer(char * buffer, int bufferSize) con LayoutRef NaturalIntegerAbstract::createLayout() const { char buffer[k_maxNumberOfDigitsBase10]; - int numberOfChars = writeTextInBuffer(buffer, k_maxNumberOfDigitsBase10); + int numberOfChars = serialize(buffer, k_maxNumberOfDigitsBase10); return LayoutHelper::String(buffer, numberOfChars); } @@ -426,7 +426,7 @@ LayoutRef IntegerNode::createLayout(Preferences::PrintFloatMode floatDisplayMode return naturalLayout; } -int IntegerNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int IntegerNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -438,7 +438,7 @@ int IntegerNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::P if (numberOfChar >= bufferSize-1) { return bufferSize-1; } - numberOfChar += NaturalIntegerAbstract::writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); + numberOfChar += NaturalIntegerAbstract::serialize(buffer+numberOfChar, bufferSize-numberOfChar); return numberOfChar; } diff --git a/poincare/src/integral_layout_node.cpp b/poincare/src/integral_layout_node.cpp index d4603fdcf..1e4f2e8ef 100644 --- a/poincare/src/integral_layout_node.cpp +++ b/poincare/src/integral_layout_node.cpp @@ -149,7 +149,7 @@ void IntegralLayoutNode::deleteBeforeCursor(LayoutCursor * cursor) { LayoutNode::deleteBeforeCursor(cursor); } -int IntegralLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int IntegralLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -168,7 +168,7 @@ int IntegralLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Prefere } // Write the argument - numberOfChar += const_cast(this)->integrandLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->integrandLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -176,7 +176,7 @@ int IntegralLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Prefere if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the lower bound - numberOfChar += const_cast(this)->lowerBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->lowerBoundLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -184,7 +184,7 @@ int IntegralLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Prefere if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the upper bound - numberOfChar += const_cast(this)->upperBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->upperBoundLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the closing parenthesis diff --git a/poincare/src/matrix.cpp b/poincare/src/matrix.cpp index 1de51a81e..7a9469ad9 100644 --- a/poincare/src/matrix.cpp +++ b/poincare/src/matrix.cpp @@ -31,7 +31,7 @@ LayoutRef MatrixNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, return layout; } -int MatrixNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int MatrixNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -49,7 +49,7 @@ int MatrixNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::Pr if (currentChar >= bufferSize-1) { return currentChar; } - currentChar += childAtIndex(i*m_numberOfColumns)->writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, floatDisplayMode, numberOfSignificantDigits); + currentChar += childAtIndex(i*m_numberOfColumns)->serialize(buffer+currentChar, bufferSize-currentChar, floatDisplayMode, numberOfSignificantDigits); if (currentChar >= bufferSize-1) { return currentChar; } @@ -58,7 +58,7 @@ int MatrixNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::Pr if (currentChar >= bufferSize-1) { return currentChar; } - currentChar += childAtIndex(i*m_numberOfColumns+j)->writeTextInBuffer(buffer+currentChar, bufferSize-currentChar, floatDisplayMode, numberOfSignificantDigits); + currentChar += childAtIndex(i*m_numberOfColumns+j)->serialize(buffer+currentChar, bufferSize-currentChar, floatDisplayMode, numberOfSignificantDigits); if (currentChar >= bufferSize-1) { return currentChar; } diff --git a/poincare/src/matrix_layout_node.cpp b/poincare/src/matrix_layout_node.cpp index 5a999df34..085a1c42d 100644 --- a/poincare/src/matrix_layout_node.cpp +++ b/poincare/src/matrix_layout_node.cpp @@ -108,7 +108,7 @@ void MatrixLayoutNode::willAddSiblingToEmptyChildAtIndex(int childIndex) { // SerializableNode -int MatrixLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int MatrixLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/multiplication.cpp b/poincare/src/multiplication.cpp index feac0302c..e4c41e6bd 100644 --- a/poincare/src/multiplication.cpp +++ b/poincare/src/multiplication.cpp @@ -80,7 +80,7 @@ int Multiplication::getPolynomialCoefficients(char symbolName, Expression coeffi return deg; } -bool Multiplication::needParenthesisWithParent(const Expression * e) const { +bool Multiplication::needsParenthesesWithParent(const SerializationHelperInterface * e) const { Type types[] = {Type::Division, Type::Power, Type::Factorial}; return e->isOfType(types, 3); } @@ -90,7 +90,7 @@ LayoutRef Multiplication::createLayout(Preferences::PrintFloatMode floatDisplayM return LayoutHelper::Infix(this, floatDisplayMode, numberOfSignificantDigits, middleDotString); } -int Multiplication::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int Multiplication::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { const char multiplicationString[] = {Ion::Charset::MultiplicationSign, 0}; return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, multiplicationString); } diff --git a/poincare/src/nth_root_layout_node.cpp b/poincare/src/nth_root_layout_node.cpp index 05a957804..880ac9890 100644 --- a/poincare/src/nth_root_layout_node.cpp +++ b/poincare/src/nth_root_layout_node.cpp @@ -156,7 +156,7 @@ void NthRootLayoutNode::deleteBeforeCursor(LayoutCursor * cursor) { } static_assert('\x91' == Ion::Charset::Root, "Unicode error"); -int NthRootLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int NthRootLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { // Case: root(x,n) if (m_hasIndex && (const_cast(this))->indexLayout() @@ -187,7 +187,7 @@ int NthRootLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferen return bufferSize-1; } - numberOfChar += (const_cast(this))->radicandLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += (const_cast(this))->radicandLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } buffer[numberOfChar++] = ')'; diff --git a/poincare/src/opposite.cpp b/poincare/src/opposite.cpp index ea219837c..d5bd0c018 100644 --- a/poincare/src/opposite.cpp +++ b/poincare/src/opposite.cpp @@ -34,7 +34,7 @@ ExpressionNode::Sign OppositeNode::sign() const { /* Layout */ -bool OppositeNode::needsParenthesisWithParent(SerializableNode * e) const { +bool OppositeNode::needsParenthesesWithParent(SerializableNode * e) const { Type types[] = {Type::Addition, Type::Subtraction, Type::Opposite, Type::Multiplication, Type::Division, Type::Power, Type::Factorial}; return static_cast(e)->isOfType(types, 7); } @@ -49,7 +49,7 @@ LayoutRef OppositeNode::createLayout(Preferences::PrintFloatMode floatDisplayMod return result; } -int OppositeNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int OppositeNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -57,7 +57,7 @@ int OppositeNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences:: int numberOfChar = 0; if (bufferSize == 1) { return 0; } buffer[numberOfChar++] = '-'; - numberOfChar += childAtIndex(0)->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += childAtIndex(0)->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); buffer[numberOfChar] = 0; return numberOfChar; } diff --git a/poincare/src/parenthesis.cpp b/poincare/src/parenthesis.cpp index 67f04c5a2..9e3fa338e 100644 --- a/poincare/src/parenthesis.cpp +++ b/poincare/src/parenthesis.cpp @@ -17,7 +17,7 @@ LayoutRef ParenthesisNode::createLayout(Preferences::PrintFloatMode floatDisplay return LayoutHelper::Parentheses(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), false); } -int ParenthesisNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int ParenthesisNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SerializationHelper::Prefix(Parenthesis(const_cast(this)), buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ""); } diff --git a/poincare/src/power.cpp b/poincare/src/power.cpp index 542897a04..07288f45b 100644 --- a/poincare/src/power.cpp +++ b/poincare/src/power.cpp @@ -166,7 +166,7 @@ template MatrixComplex Power::computeOnMatrices(const MatrixCompl return MatrixComplex::Undefined(); } -bool Power::needParenthesisWithParent(const Expression * e) const { +bool Power::needsParenthesesWithParent(const SerializationHelperInterface * e) const { Type types[] = {Type::Power, Type::Factorial}; return e->isOfType(types, 2); } diff --git a/poincare/src/print_float.cpp b/poincare/src/print_float.cpp index 30fa64729..9ddd8e743 100644 --- a/poincare/src/print_float.cpp +++ b/poincare/src/print_float.cpp @@ -20,7 +20,7 @@ void PrintFloat::printBase10IntegerWithDecimalMarker(char * buffer, int bufferLe * always > 0 as we asserted a minimal number of available chars. */ assert(bufferLength > 0 && decimalMarkerPosition != 0); char tempBuffer[PrintFloat::k_maxFloatBufferLength]; - int intLength = i.writeTextInBuffer(tempBuffer, PrintFloat::k_maxFloatBufferLength); + int intLength = i.serialize(tempBuffer, PrintFloat::k_maxFloatBufferLength); int firstDigitChar = tempBuffer[0] == '-' ? 1 : 0; for (int k = bufferLength-1; k >= firstDigitChar; k--) { if (k == decimalMarkerPosition) { diff --git a/poincare/src/product_layout_node.cpp b/poincare/src/product_layout_node.cpp index 1b003e2f8..f1e6a4060 100644 --- a/poincare/src/product_layout_node.cpp +++ b/poincare/src/product_layout_node.cpp @@ -6,7 +6,7 @@ namespace Poincare { static inline KDCoordinate max(KDCoordinate x, KDCoordinate y) { return x > y ? x : y; } -int ProductLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int ProductLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SequenceLayoutNode::writeDerivedClassInBuffer("product", buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); } diff --git a/poincare/src/rational.cpp b/poincare/src/rational.cpp index 02bd19423..4e08dc868 100644 --- a/poincare/src/rational.cpp +++ b/poincare/src/rational.cpp @@ -38,7 +38,7 @@ size_t RationalNode::size() const { // Serialization Node -bool RationalNode::needsParenthesisWithParent(SerializableNode * e) const { +bool RationalNode::needsParenthesesWithParent(SerializableNode * e) const { if (denominator().isOne()) { return false; } @@ -46,7 +46,7 @@ bool RationalNode::needsParenthesisWithParent(SerializableNode * e) const { return static_cast(e)->isOfType(types, 3); } -int RationalNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int RationalNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -58,7 +58,7 @@ int RationalNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences:: if (numberOfChar >= bufferSize-1) { return bufferSize-1; } - numberOfChar += numerator().writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); + numberOfChar += numerator().serialize(buffer+numberOfChar, bufferSize-numberOfChar); if (denominator().isOne()) { return numberOfChar; } @@ -66,7 +66,7 @@ int RationalNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences:: return numberOfChar; } buffer[numberOfChar++] = '/'; - numberOfChar += denominator().writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar); + numberOfChar += denominator().serialize(buffer+numberOfChar, bufferSize-numberOfChar); return numberOfChar; } diff --git a/poincare/src/sequence_layout_node.cpp b/poincare/src/sequence_layout_node.cpp index a81891e4c..bb450a381 100644 --- a/poincare/src/sequence_layout_node.cpp +++ b/poincare/src/sequence_layout_node.cpp @@ -194,7 +194,7 @@ int SequenceLayoutNode::writeDerivedClassInBuffer(const char * operatorName, cha if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the argument - numberOfChar += const_cast(this)->argumentLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->argumentLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -202,7 +202,7 @@ int SequenceLayoutNode::writeDerivedClassInBuffer(const char * operatorName, cha if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the lower bound - numberOfChar += const_cast(this)->lowerBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->lowerBoundLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the comma @@ -210,7 +210,7 @@ int SequenceLayoutNode::writeDerivedClassInBuffer(const char * operatorName, cha if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the upper bound - numberOfChar += const_cast(this)->upperBoundLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->upperBoundLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } // Write the closing parenthesis diff --git a/poincare/src/serialization_helper.cpp b/poincare/src/serialization_helper.cpp index 2bbe1ed61..c4392478e 100644 --- a/poincare/src/serialization_helper.cpp +++ b/poincare/src/serialization_helper.cpp @@ -1,11 +1,12 @@ #include +#include #include namespace Poincare { -static void writeChildTreeInBuffer(SerializableRef childRef, SerializableRef parentRef, char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfDigits, int * numberOfChar) { +static void serializeChild(const SerializationHelperInterface * childInterface, const SerializationHelperInterface * interface, char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfDigits, int * numberOfChar) { // Write the child with parentheses if needed - bool addParentheses = childRef.needsParenthesisWithParent(parentRef); + bool addParentheses = childInterface->needsParenthesesWithParent(interface); if (addParentheses) { buffer[*numberOfChar] = '('; numberOfChar++; @@ -13,7 +14,7 @@ static void writeChildTreeInBuffer(SerializableRef childRef, SerializableRef par return; } } - *numberOfChar += childRef.writeTextInBuffer(buffer + *numberOfChar, bufferSize - *numberOfChar, floatDisplayMode, numberOfDigits); + *numberOfChar += childInterface->serialize(buffer + *numberOfChar, bufferSize - *numberOfChar, floatDisplayMode, numberOfDigits); if (*numberOfChar >= bufferSize-1) { return; } @@ -24,7 +25,7 @@ static void writeChildTreeInBuffer(SerializableRef childRef, SerializableRef par } int SerializationHelper::Infix( - const SerializableRef serializableRef, + const SerializationHelperInterface * interface, char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, @@ -33,8 +34,6 @@ int SerializationHelper::Infix( int firstChildIndex, int lastChildIndex) { - assert(serializableRef.isDefined()); - // If buffer has size 0 or 1, put a zero if it fits and return if (bufferSize == 0) { return -1; @@ -45,13 +44,13 @@ int SerializationHelper::Infix( return 0; } - // Get some information on the SerializableRef + // Get some information on the interface int numberOfChar = 0; - int numberOfChildren = serializableRef.numberOfChildren(); + int numberOfChildren = interface->numberOfSerializableChildren(); assert(numberOfChildren > 0); // Write the first child, with parentheses if needed - writeChildTreeInBuffer((const_cast(&serializableRef))->serializableChildAtIndex(firstChildIndex), serializableRef, buffer, bufferSize, floatDisplayMode, numberOfDigits, &numberOfChar); + serializeChild(interface->serializableChildAtIndex(firstChildIndex), interface, buffer, bufferSize, floatDisplayMode, numberOfDigits, &numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } @@ -64,7 +63,7 @@ int SerializationHelper::Infix( return bufferSize-1; } // Write the child, with parentheses if needed - writeChildTreeInBuffer((const_cast(&serializableRef))->serializableChildAtIndex(i), serializableRef, buffer, bufferSize, floatDisplayMode, numberOfDigits, &numberOfChar); + serializeChild(interface->serializableChildAtIndex(firstChildIndex), interface, buffer, bufferSize, floatDisplayMode, numberOfDigits, &numberOfChar); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } @@ -76,7 +75,7 @@ int SerializationHelper::Infix( } int SerializationHelper::Prefix( - const SerializableRef serializableRef, + const SerializationHelperInterface * interface, char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, @@ -84,8 +83,6 @@ int SerializationHelper::Prefix( const char * operatorName, bool writeFirstChild) { - assert(serializableRef.isDefined()); - // If buffer has size 0 or 1, put a zero if it fits and return if (bufferSize == 0) { return -1; @@ -107,7 +104,7 @@ int SerializationHelper::Prefix( return bufferSize-1; } - int childrenCount = serializableRef.numberOfChildren(); + int childrenCount = interface->numberOfSerializableChildren(); if (childrenCount > 0) { if (!writeFirstChild) { assert(childrenCount > 1); @@ -115,7 +112,7 @@ int SerializationHelper::Prefix( int firstChildIndex = writeFirstChild ? 0 : 1; // Write the first child - numberOfChar += const_cast(&serializableRef)->serializableChildAtIndex(firstChildIndex).writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits); + numberOfChar += interface->serializableChildAtIndex(firstChildIndex)->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } @@ -126,7 +123,7 @@ int SerializationHelper::Prefix( if (numberOfChar >= bufferSize-1) { return bufferSize-1; } - numberOfChar += const_cast(&serializableRef)->serializableChildAtIndex(i).writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits); + numberOfChar += interface->serializableChildAtIndex(i)->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } diff --git a/poincare/src/square_root.cpp b/poincare/src/square_root.cpp index a155b5ca0..a6acf1b1a 100644 --- a/poincare/src/square_root.cpp +++ b/poincare/src/square_root.cpp @@ -20,7 +20,7 @@ Expression * SquareRoot::clone() const { } static_assert('\x91' == Ion::Charset::Root, "Unicode error"); -int SquareRoot::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int SquareRoot::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::writePrefixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "\x91"); } diff --git a/poincare/src/store.cpp b/poincare/src/store.cpp index 974402c79..107631e9b 100644 --- a/poincare/src/store.cpp +++ b/poincare/src/store.cpp @@ -24,7 +24,7 @@ int Store::polynomialDegree(char symbolName) const { return -1; } -int Store::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int Store::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::writeInfixExpressionTextInBuffer(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "\x90"); } diff --git a/poincare/src/subtraction.cpp b/poincare/src/subtraction.cpp index 70eaaed65..16a0734ea 100644 --- a/poincare/src/subtraction.cpp +++ b/poincare/src/subtraction.cpp @@ -33,7 +33,7 @@ int Subtraction::polynomialDegree(char symbolName) const { /* Layout */ -bool Subtraction::needParenthesisWithParent(const Expression * e) const { +bool Subtraction::needsParenthesesWithParent(const SerializationHelperInterface * e) const { Type types[] = {Type::Subtraction, Type::Opposite, Type::Multiplication, Type::Division, Type::Power, Type::Factorial}; return e->isOfType(types, 6); } diff --git a/poincare/src/sum_layout_node.cpp b/poincare/src/sum_layout_node.cpp index 3216dc1a4..b9186029a 100644 --- a/poincare/src/sum_layout_node.cpp +++ b/poincare/src/sum_layout_node.cpp @@ -25,7 +25,7 @@ const uint8_t symbolPixel[SumLayoutNode::k_symbolHeight][SumLayoutNode::k_symbol }; -int SumLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int SumLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return SequenceLayoutNode::writeDerivedClassInBuffer("sum", buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits); } diff --git a/poincare/src/symbol.cpp b/poincare/src/symbol.cpp index 59c5958ed..df46e2ecf 100644 --- a/poincare/src/symbol.cpp +++ b/poincare/src/symbol.cpp @@ -35,7 +35,7 @@ ExpressionNode::Sign SymbolNode::sign() const { Expression SymbolNode::replaceSymbolWithExpression(char symbol, Expression expression) { if (m_name == symbol) { Expression value = expression.clone(); - if (parent() && value.needsParenthesisWithParent(parent())) { + if (parent() && value.needsParenthesesWithParent(parent())) { value = ParenthesisReference(value); } return value; @@ -136,7 +136,7 @@ LayoutRef SymbolNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, return LayoutHelper::String(&m_name, 1); } -int SymbolNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int SymbolNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } @@ -335,7 +335,7 @@ Expression Symbol::replaceSymbolWithExpression(char symbol, Expression expressio if (name() == symbol) { Expression value = expression.clone(); Expression p = parent(); - if (p.isDefined() && value.needsParenthesisWithParent(p)) { + if (p.isDefined() && value.needsParenthesesWithParent(p)) { value = Parenthesis(value); } return value; diff --git a/poincare/src/undefined.cpp b/poincare/src/undefined.cpp index cad11a04e..7d0d2c2ab 100644 --- a/poincare/src/undefined.cpp +++ b/poincare/src/undefined.cpp @@ -24,7 +24,7 @@ LayoutRef UndefinedNode::createLayout(Preferences::PrintFloatMode floatDisplayMo return LayoutHelper::String(buffer, numberOfChars); } -int UndefinedNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int UndefinedNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (bufferSize == 0) { return -1; } diff --git a/poincare/src/vertical_offset_layout_node.cpp b/poincare/src/vertical_offset_layout_node.cpp index 2ed7df979..c04a0fdd2 100644 --- a/poincare/src/vertical_offset_layout_node.cpp +++ b/poincare/src/vertical_offset_layout_node.cpp @@ -158,7 +158,7 @@ void VerticalOffsetLayoutNode::deleteBeforeCursor(LayoutCursor * cursor) { LayoutNode::deleteBeforeCursor(cursor); } -int VerticalOffsetLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { +int VerticalOffsetLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { if (m_type == Type::Subscript) { if (bufferSize == 0) { return -1; @@ -174,7 +174,7 @@ int VerticalOffsetLayoutNode::writeTextInBuffer(char * buffer, int bufferSize, P numberOfChar += SerializationHelper::Char(buffer+numberOfChar, bufferSize-numberOfChar, '{'); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } - numberOfChar += const_cast(this)->indiceLayout()->writeTextInBuffer(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); + numberOfChar += const_cast(this)->indiceLayout()->serialize(buffer+numberOfChar, bufferSize-numberOfChar, floatDisplayMode, numberOfSignificantDigits); if (numberOfChar >= bufferSize-1) { return bufferSize-1; } numberOfChar += SerializationHelper::Char(buffer+numberOfChar, bufferSize-numberOfChar, '}'); diff --git a/poincare/test/convert_expression_to_text.cpp b/poincare/test/convert_expression_to_text.cpp index 81b35195c..52ad534d3 100644 --- a/poincare/test/convert_expression_to_text.cpp +++ b/poincare/test/convert_expression_to_text.cpp @@ -43,7 +43,7 @@ void assert_expression_prints_to(Expression * e, const char * result, Preference memset(taggedBuffer, tag, bufferSize+2*tagSize); char * buffer = taggedBuffer + tagSize; - e->writeTextInBuffer(buffer, bufferSize, mode, numberOfSignificantDigits); + e->serialize(buffer, bufferSize, mode, numberOfSignificantDigits); translate_in_ASCII_chars(buffer); for (int i=0; iwriteTextInBuffer(buffer, sizeof(buffer), DecimalMode, numberOfSignifiantDigits); + m->serialize(buffer, sizeof(buffer), DecimalMode, numberOfSignifiantDigits); translate_in_ASCII_chars(buffer); #if POINCARE_TESTS_PRINT_EXPRESSIONS print_expression(e, 0); @@ -119,7 +119,7 @@ void assert_parsed_expression_layout_serialize_to_self(const char * expressionLa ExpressionLayout * el = e->createLayout(DecimalMode, PrintFloat::k_numberOfStoredSignificantDigits); int bufferSize = 255; char buffer[bufferSize]; - el->writeTextInBuffer(buffer, bufferSize); + el->serialize(buffer, bufferSize); #if POINCARE_TESTS_PRINT_EXPRESSIONS cout << "---- serialized to: " << buffer << " ----\n" << endl; #endif @@ -131,7 +131,7 @@ void assert_parsed_expression_layout_serialize_to_self(const char * expressionLa void assert_expression_layout_serialize_to(Poincare::ExpressionLayout * layout, const char * serialization) { int bufferSize = 255; char buffer[bufferSize]; - layout->writeTextInBuffer(buffer, bufferSize); + layout->serialize(buffer, bufferSize); #if POINCARE_TESTS_PRINT_EXPRESSIONS cout << "---- Serialize: " << serialization << "----" << endl; cout << "---- serialized to: " << buffer << " ----" << endl;