From 23c07e02ca969ad8a611f4d643082adea7ec16d5 Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Thu, 18 Oct 2018 17:02:45 +0200 Subject: [PATCH] [poincare] New static Name() method in Expression subclasses Replaces the name() method in ExpressionNode subclasses. When necessary, the createLayout and serialize methods in thoses subclasses were moved to their .cpp file. --- poincare/include/poincare/absolute_value.h | 8 +++----- poincare/include/poincare/absolute_value_layout.h | 3 ++- poincare/include/poincare/addition.h | 8 ++------ poincare/include/poincare/arc_cosine.h | 9 ++------- poincare/include/poincare/arc_sine.h | 7 ++----- poincare/include/poincare/arc_tangent.h | 7 ++----- poincare/include/poincare/binomial_coefficient.h | 2 +- poincare/include/poincare/ceiling.h | 2 +- poincare/include/poincare/ceiling_layout.h | 3 ++- poincare/include/poincare/complex_argument.h | 3 ++- poincare/include/poincare/condensed_sum_layout.h | 3 ++- poincare/include/poincare/confidence_interval.h | 6 ++++-- poincare/include/poincare/conjugate.h | 1 + poincare/include/poincare/cosine.h | 7 ++----- poincare/include/poincare/derivative.h | 12 +++--------- poincare/include/poincare/determinant.h | 7 ++----- poincare/include/poincare/division.h | 7 +++---- poincare/include/poincare/division_quotient.h | 2 +- poincare/include/poincare/division_remainder.h | 2 +- poincare/include/poincare/factor.h | 8 ++------ poincare/include/poincare/floor.h | 2 +- poincare/include/poincare/floor_layout.h | 3 ++- poincare/include/poincare/frac_part.h | 2 +- poincare/include/poincare/great_common_divisor.h | 2 +- poincare/include/poincare/hyperbolic_arc_cosine.h | 5 ++++- poincare/include/poincare/hyperbolic_arc_sine.h | 5 ++++- poincare/include/poincare/hyperbolic_arc_tangent.h | 5 ++++- poincare/include/poincare/hyperbolic_cosine.h | 5 ++++- poincare/include/poincare/hyperbolic_sine.h | 5 ++++- poincare/include/poincare/hyperbolic_tangent.h | 5 ++++- .../poincare/hyperbolic_trigonometric_function.h | 7 ------- poincare/include/poincare/imaginary_part.h | 3 ++- poincare/include/poincare/integral.h | 1 + poincare/include/poincare/least_common_multiple.h | 7 ++----- poincare/include/poincare/logarithm.h | 7 ++----- poincare/include/poincare/matrix_dimension.h | 3 ++- poincare/include/poincare/matrix_inverse.h | 2 +- poincare/include/poincare/matrix_trace.h | 3 ++- poincare/include/poincare/matrix_transpose.h | 3 ++- poincare/include/poincare/naperian_logarithm.h | 12 +++--------- poincare/include/poincare/nth_root.h | 7 ++----- poincare/include/poincare/parenthesis.h | 1 - poincare/include/poincare/permute_coefficient.h | 8 ++------ poincare/include/poincare/power.h | 7 ++----- poincare/include/poincare/prediction_interval.h | 8 ++------ poincare/include/poincare/product.h | 3 ++- poincare/include/poincare/randint.h | 8 ++------ poincare/include/poincare/random.h | 8 ++------ poincare/include/poincare/real_part.h | 8 ++------ poincare/include/poincare/round.h | 8 ++------ poincare/include/poincare/sequence.h | 6 ------ poincare/include/poincare/sine.h | 7 ++----- poincare/include/poincare/square_root.h | 7 +++++-- poincare/include/poincare/store.h | 1 - poincare/include/poincare/subtraction.h | 3 +-- poincare/include/poincare/sum.h | 3 ++- poincare/include/poincare/tangent.h | 7 ++----- poincare/src/absolute_value.cpp | 6 ++++++ poincare/src/addition.cpp | 8 +++++++- poincare/src/arc_cosine.cpp | 7 ++++++- poincare/src/arc_sine.cpp | 7 ++++++- poincare/src/arc_tangent.cpp | 7 ++++++- poincare/src/binomial_coefficient.cpp | 3 ++- poincare/src/binomial_coefficient_layout.cpp | 3 ++- poincare/src/ceiling.cpp | 2 +- poincare/src/complex_argument.cpp | 4 ++-- poincare/src/confidence_interval.cpp | 14 +++++++++++--- poincare/src/conjugate.cpp | 2 +- poincare/src/conjugate_layout.cpp | 3 ++- poincare/src/cosine.cpp | 7 ++++++- poincare/src/derivative.cpp | 10 ++++++++++ poincare/src/determinant.cpp | 7 ++++++- poincare/src/division.cpp | 5 +++++ poincare/src/division_quotient.cpp | 4 ++-- poincare/src/division_remainder.cpp | 4 ++-- poincare/src/equal.cpp | 1 + poincare/src/factor.cpp | 9 +++++++-- poincare/src/floor.cpp | 2 +- poincare/src/frac_part.cpp | 4 ++-- poincare/src/great_common_divisor.cpp | 4 ++-- poincare/src/hyperbolic_arc_cosine.cpp | 10 ++++++++++ poincare/src/hyperbolic_arc_sine.cpp | 10 +++++++++- poincare/src/hyperbolic_arc_tangent.cpp | 10 ++++++++++ poincare/src/hyperbolic_cosine.cpp | 9 +++++++++ poincare/src/hyperbolic_sine.cpp | 9 +++++++++ poincare/src/hyperbolic_tangent.cpp | 9 +++++++++ poincare/src/hyperbolic_trigonometric_function.cpp | 5 ----- poincare/src/imaginary_part.cpp | 4 ++-- poincare/src/integral.cpp | 2 +- poincare/src/least_common_multiple.cpp | 7 ++++++- poincare/src/logarithm.cpp | 11 ++++++++++- poincare/src/matrix_dimension.cpp | 4 ++-- poincare/src/matrix_inverse.cpp | 4 ++-- poincare/src/matrix_trace.cpp | 4 ++-- poincare/src/matrix_transpose.cpp | 4 ++-- poincare/src/naperian_logarithm.cpp | 9 +++++++++ poincare/src/nth_root.cpp | 6 ++++++ poincare/src/nth_root_layout.cpp | 9 +++++---- poincare/src/parenthesis.cpp | 1 + poincare/src/permute_coefficient.cpp | 8 +++++++- poincare/src/power.cpp | 7 +++++++ poincare/src/prediction_interval.cpp | 9 ++++++++- poincare/src/preferences.cpp | 2 +- poincare/src/product.cpp | 6 ++++++ poincare/src/randint.cpp | 8 +++++++- poincare/src/random.cpp | 8 +++++++- poincare/src/real_part.cpp | 8 +++++++- poincare/src/round.cpp | 8 +++++++- poincare/src/sequence.cpp | 10 +++++++++- poincare/src/sine.cpp | 7 ++++++- poincare/src/square_root.cpp | 6 +++--- poincare/src/subtraction.cpp | 5 +++-- poincare/src/sum.cpp | 8 ++++++-- poincare/src/tangent.cpp | 7 ++++++- 114 files changed, 406 insertions(+), 245 deletions(-) diff --git a/poincare/include/poincare/absolute_value.h b/poincare/include/poincare/absolute_value.h index 4394ecb2d..3d47fbe36 100644 --- a/poincare/include/poincare/absolute_value.h +++ b/poincare/include/poincare/absolute_value.h @@ -3,8 +3,6 @@ #include #include -#include -#include namespace Poincare { @@ -37,9 +35,7 @@ public: // Layout Layout createLayout(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"); - } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -53,6 +49,8 @@ public: explicit AbsoluteValue(Expression operand) : AbsoluteValue() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "abs"; } + Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); private: Expression setSign(ExpressionNode::Sign s, Context & context, Preferences::AngleUnit angleUnit); diff --git a/poincare/include/poincare/absolute_value_layout.h b/poincare/include/poincare/absolute_value_layout.h index ee5881978..a1c452b4b 100644 --- a/poincare/include/poincare/absolute_value_layout.h +++ b/poincare/include/poincare/absolute_value_layout.h @@ -1,6 +1,7 @@ #ifndef POINCARE_ABSOLUTE_VALUE_LAYOUT_NODE_H #define POINCARE_ABSOLUTE_VALUE_LAYOUT_NODE_H +#include #include #include @@ -12,7 +13,7 @@ public: // SerializationHelperInterface int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "abs"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, AbsoluteValue::Name()); } // TreeNode diff --git a/poincare/include/poincare/addition.h b/poincare/include/poincare/addition.h index 692f8aec1..f5e71fd5c 100644 --- a/poincare/include/poincare/addition.h +++ b/poincare/include/poincare/addition.h @@ -2,10 +2,8 @@ #define POINCARE_ADDITION_H #include -#include #include #include -#include namespace Poincare { @@ -41,10 +39,7 @@ private: // Layout bool childNeedsParenthesis(const TreeNode * child) const override; Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); - } - static const char * name() { return "+"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -78,6 +73,7 @@ public: addChildAtIndexInPlace(children[i], i, i); } } + static const char * Name() { return "+"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit); diff --git a/poincare/include/poincare/arc_cosine.h b/poincare/include/poincare/arc_cosine.h index 2d6f39e8f..7b51a13ba 100644 --- a/poincare/include/poincare/arc_cosine.h +++ b/poincare/include/poincare/arc_cosine.h @@ -3,7 +3,6 @@ #include #include -#include #include namespace Poincare { @@ -25,12 +24,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { - return "acos"; - } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -51,6 +45,7 @@ public: explicit ArcCosine(Expression operand) : ArcCosine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "acos"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/arc_sine.h b/poincare/include/poincare/arc_sine.h index 316ab4060..c20eaab45 100644 --- a/poincare/include/poincare/arc_sine.h +++ b/poincare/include/poincare/arc_sine.h @@ -3,7 +3,6 @@ #include #include -#include #include namespace Poincare { @@ -25,10 +24,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "asin"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; //Evaluation @@ -48,6 +44,7 @@ public: explicit ArcSine(Expression operand) : ArcSine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "asin"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/arc_tangent.h b/poincare/include/poincare/arc_tangent.h index f6f8e90bb..52ada154a 100644 --- a/poincare/include/poincare/arc_tangent.h +++ b/poincare/include/poincare/arc_tangent.h @@ -3,7 +3,6 @@ #include #include -#include #include namespace Poincare { @@ -25,10 +24,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "atan"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; //Evaluation @@ -48,6 +44,7 @@ public: explicit ArcTangent(Expression operand) : ArcTangent() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "atan"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/binomial_coefficient.h b/poincare/include/poincare/binomial_coefficient.h index bad8f89da..b4a32dc7e 100644 --- a/poincare/include/poincare/binomial_coefficient.h +++ b/poincare/include/poincare/binomial_coefficient.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -44,6 +43,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "binomial"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/ceiling.h b/poincare/include/poincare/ceiling.h index 3e690cda5..48e2b9b60 100644 --- a/poincare/include/poincare/ceiling.h +++ b/poincare/include/poincare/ceiling.h @@ -24,7 +24,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "ceil"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -44,6 +43,7 @@ public: explicit Ceiling(Expression operand) : Ceiling() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "ceil"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/ceiling_layout.h b/poincare/include/poincare/ceiling_layout.h index 434682a70..0b41a6392 100644 --- a/poincare/include/poincare/ceiling_layout.h +++ b/poincare/include/poincare/ceiling_layout.h @@ -1,6 +1,7 @@ #ifndef POINCARE_CEILING_LAYOUT_NODE_H #define POINCARE_CEILING_LAYOUT_NODE_H +#include #include #include #include @@ -12,7 +13,7 @@ public: using BracketPairLayoutNode::BracketPairLayoutNode; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "ceil"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Ceiling::Name()); } // TreeNode diff --git a/poincare/include/poincare/complex_argument.h b/poincare/include/poincare/complex_argument.h index c2e2950b9..bf72ce710 100644 --- a/poincare/include/poincare/complex_argument.h +++ b/poincare/include/poincare/complex_argument.h @@ -23,7 +23,7 @@ public: private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; const char * name() const { return "arg"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -43,6 +43,7 @@ public: explicit ComplexArgument(Expression operand) : ComplexArgument() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "arg"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/condensed_sum_layout.h b/poincare/include/poincare/condensed_sum_layout.h index 06cd25c84..3490e90e0 100644 --- a/poincare/include/poincare/condensed_sum_layout.h +++ b/poincare/include/poincare/condensed_sum_layout.h @@ -1,6 +1,7 @@ #ifndef POINCARE_CONDENSED_SUM_LAYOUT_NODE_H #define POINCARE_CONDENSED_SUM_LAYOUT_NODE_H +#include #include #include #include @@ -19,7 +20,7 @@ public: void moveCursorUp(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override { assert(false); } void moveCursorDown(LayoutCursor * cursor, bool * shouldRecomputeLayout, bool equivalentPositionVisited = false) override { assert(false); } int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "sum"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Sum::Name()); } LayoutNode * layoutToPointWhenInserting() override { diff --git a/poincare/include/poincare/confidence_interval.h b/poincare/include/poincare/confidence_interval.h index ec3978581..4162e1ef3 100644 --- a/poincare/include/poincare/confidence_interval.h +++ b/poincare/include/poincare/confidence_interval.h @@ -26,7 +26,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - virtual const char * name() const { return "confidence"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -38,7 +37,8 @@ private: class SimplePredictionIntervalNode final : public ConfidenceIntervalNode { public: private: - const char * name() const override { return "prediction"; } + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; }; class ConfidenceInterval : public Expression { @@ -49,6 +49,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "confidence"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); @@ -64,6 +65,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "prediction"; } }; } diff --git a/poincare/include/poincare/conjugate.h b/poincare/include/poincare/conjugate.h index b1bfb5c0e..642e10251 100644 --- a/poincare/include/poincare/conjugate.h +++ b/poincare/include/poincare/conjugate.h @@ -43,6 +43,7 @@ public: explicit Conjugate(Expression operand) : Conjugate() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "conj"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/cosine.h b/poincare/include/poincare/cosine.h index 53db28dc5..2a2402991 100644 --- a/poincare/include/poincare/cosine.h +++ b/poincare/include/poincare/cosine.h @@ -3,7 +3,6 @@ #include #include -#include #include namespace Poincare { @@ -29,10 +28,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "cos"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplication Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -51,6 +47,7 @@ public: explicit Cosine(Expression operand) : Cosine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "cos"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/derivative.h b/poincare/include/poincare/derivative.h index 119fd12b9..05d8e46a9 100644 --- a/poincare/include/poincare/derivative.h +++ b/poincare/include/poincare/derivative.h @@ -2,8 +2,6 @@ #define POINCARE_DERIVATIVE_H #include -#include -#include #include namespace Poincare { @@ -26,13 +24,8 @@ public: private: // Layout - Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); - } - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); - } - const char * name() const { return "diff"; } + Layout createLayout(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, bool replaceSymbols = true) override; @@ -59,6 +52,7 @@ public: replaceChildAtIndexInPlace(1, child2); replaceChildAtIndexInPlace(2, child3); } + static const char * Name() { return "diff"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/determinant.h b/poincare/include/poincare/determinant.h index 05f62b5c8..194af5d0c 100644 --- a/poincare/include/poincare/determinant.h +++ b/poincare/include/poincare/determinant.h @@ -1,7 +1,6 @@ #ifndef POINCARE_DETERMINANT_H #define POINCARE_DETERMINANT_H -#include #include namespace Poincare { @@ -23,10 +22,7 @@ private: /* Layout */ Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Serialization */ - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); - } - const char * name() const { return "det"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; /* Approximation */ @@ -43,6 +39,7 @@ public: explicit Determinant(Expression operand) : Determinant() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "det"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/division.h b/poincare/include/poincare/division.h index 73d131ad0..d99ff7cbc 100644 --- a/poincare/include/poincare/division.h +++ b/poincare/include/poincare/division.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -44,9 +43,7 @@ public: // Layout bool childNeedsParenthesis(const TreeNode * child) const override; Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "/"); - } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -68,6 +65,8 @@ public: replaceChildAtIndexInPlace(1, denominator); } Division(const DivisionNode * n) : Expression(n) {} + static const char * Name() { return "/"; } + Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/division_quotient.h b/poincare/include/poincare/division_quotient.h index c702cda50..7e8ec8ced 100644 --- a/poincare/include/poincare/division_quotient.h +++ b/poincare/include/poincare/division_quotient.h @@ -23,7 +23,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "quo"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -40,6 +39,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "quo"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/division_remainder.h b/poincare/include/poincare/division_remainder.h index a887df7f4..127acac60 100644 --- a/poincare/include/poincare/division_remainder.h +++ b/poincare/include/poincare/division_remainder.h @@ -24,7 +24,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "rem"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -41,6 +40,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "rem"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/factor.h b/poincare/include/poincare/factor.h index 072fcfb72..555fc467c 100644 --- a/poincare/include/poincare/factor.h +++ b/poincare/include/poincare/factor.h @@ -1,8 +1,6 @@ #ifndef POINCARE_FACTOR_H #define POINCARE_FACTOR_H -#include -#include #include #include #include @@ -25,10 +23,7 @@ private: /* Layout */ Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Serialization */ - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); - } - const char * name() const { return "factor"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit) override; /* Evaluation */ @@ -46,6 +41,7 @@ public: explicit Factor(Expression operand) : Factor() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "factor"; } Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit); Multiplication createMultiplicationOfIntegerPrimeDecomposition(Integer i, Context & context, Preferences::AngleUnit angleUnit) const; diff --git a/poincare/include/poincare/floor.h b/poincare/include/poincare/floor.h index 86d969040..55dd96550 100644 --- a/poincare/include/poincare/floor.h +++ b/poincare/include/poincare/floor.h @@ -24,7 +24,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "floor"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -44,6 +43,7 @@ public: explicit Floor(Expression operand) : Floor() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "floor"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/floor_layout.h b/poincare/include/poincare/floor_layout.h index 90ea1612b..d78fcedb4 100644 --- a/poincare/include/poincare/floor_layout.h +++ b/poincare/include/poincare/floor_layout.h @@ -2,6 +2,7 @@ #define POINCARE_FLOOR_LAYOUT_NODE_H #include +#include #include #include @@ -11,7 +12,7 @@ class FloorLayoutNode final : public BracketPairLayoutNode { public: using BracketPairLayoutNode::BracketPairLayoutNode; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "floor"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Floor::Name()); } // TreeNode diff --git a/poincare/include/poincare/frac_part.h b/poincare/include/poincare/frac_part.h index a504d624b..2853edd23 100644 --- a/poincare/include/poincare/frac_part.h +++ b/poincare/include/poincare/frac_part.h @@ -24,7 +24,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "frac"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -44,6 +43,7 @@ public: explicit FracPart(Expression operand) : FracPart() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "frac"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/great_common_divisor.h b/poincare/include/poincare/great_common_divisor.h index 097944886..7c2116a6b 100644 --- a/poincare/include/poincare/great_common_divisor.h +++ b/poincare/include/poincare/great_common_divisor.h @@ -23,7 +23,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "gcd"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -40,6 +39,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "gcd"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/hyperbolic_arc_cosine.h b/poincare/include/poincare/hyperbolic_arc_cosine.h index a85048ad5..f3f602ed7 100644 --- a/poincare/include/poincare/hyperbolic_arc_cosine.h +++ b/poincare/include/poincare/hyperbolic_arc_cosine.h @@ -20,7 +20,9 @@ public: // Properties Type type() const override { return Type::HyperbolicArcCosine; } private: - const char * name() const override { return "acosh"; } + // Layout + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; //Evaluation template static Complex computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit); Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { @@ -38,6 +40,7 @@ public: explicit HyperbolicArcCosine(Expression operand) : HyperbolicArcCosine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "acosh"; } }; } diff --git a/poincare/include/poincare/hyperbolic_arc_sine.h b/poincare/include/poincare/hyperbolic_arc_sine.h index 39bf03df8..b2ee76caf 100644 --- a/poincare/include/poincare/hyperbolic_arc_sine.h +++ b/poincare/include/poincare/hyperbolic_arc_sine.h @@ -20,7 +20,9 @@ public: // Properties Type type() const override { return Type::HyperbolicArcSine; } private: - const char * name() const override { return "asinh"; } + // Layout + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; //Evaluation template static Complex computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit); Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { @@ -38,6 +40,7 @@ public: explicit HyperbolicArcSine(Expression operand) : HyperbolicArcSine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "asinh"; } }; } diff --git a/poincare/include/poincare/hyperbolic_arc_tangent.h b/poincare/include/poincare/hyperbolic_arc_tangent.h index 6e1b17013..523940991 100644 --- a/poincare/include/poincare/hyperbolic_arc_tangent.h +++ b/poincare/include/poincare/hyperbolic_arc_tangent.h @@ -20,7 +20,9 @@ public: // Properties Type type() const override { return Type::HyperbolicArcTangent; } private: - const char * name() const override { return "atanh"; } + // Layout + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; //Evaluation template static Complex computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit); Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { @@ -38,6 +40,7 @@ public: explicit HyperbolicArcTangent(Expression operand) : HyperbolicArcTangent() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "atanh"; } }; } diff --git a/poincare/include/poincare/hyperbolic_cosine.h b/poincare/include/poincare/hyperbolic_cosine.h index cfbf0c200..41b434a6a 100644 --- a/poincare/include/poincare/hyperbolic_cosine.h +++ b/poincare/include/poincare/hyperbolic_cosine.h @@ -20,7 +20,9 @@ public: // Properties Type type() const override { return Type::HyperbolicCosine; } private: - const char * name() const override { return "cosh"; } + // Layout + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; //Evaluation template static Complex computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit); Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { @@ -38,6 +40,7 @@ public: explicit HyperbolicCosine(Expression operand) : HyperbolicCosine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "cosh"; } }; } diff --git a/poincare/include/poincare/hyperbolic_sine.h b/poincare/include/poincare/hyperbolic_sine.h index dd2ed28a5..5f3f85105 100644 --- a/poincare/include/poincare/hyperbolic_sine.h +++ b/poincare/include/poincare/hyperbolic_sine.h @@ -20,7 +20,9 @@ public: // Properties Type type() const override { return Type::HyperbolicSine; } private: - const char * name() const override { return "sinh"; } + // Layout + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; //Evaluation template static Complex computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit); Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { @@ -38,6 +40,7 @@ public: explicit HyperbolicSine(Expression operand) : HyperbolicSine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "sinh"; } }; } diff --git a/poincare/include/poincare/hyperbolic_tangent.h b/poincare/include/poincare/hyperbolic_tangent.h index 6e68cf676..472ff0c80 100644 --- a/poincare/include/poincare/hyperbolic_tangent.h +++ b/poincare/include/poincare/hyperbolic_tangent.h @@ -20,7 +20,9 @@ public: // Properties Type type() const override { return Type::HyperbolicTangent; } private: - const char * name() const override { return "tanh"; } + // Layout + Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; //Evaluation template static Complex computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit); Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { @@ -38,6 +40,7 @@ public: explicit HyperbolicTangent(Expression operand) : HyperbolicTangent() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "tanh"; } }; } diff --git a/poincare/include/poincare/hyperbolic_trigonometric_function.h b/poincare/include/poincare/hyperbolic_trigonometric_function.h index c0d479fb7..886ed020b 100644 --- a/poincare/include/poincare/hyperbolic_trigonometric_function.h +++ b/poincare/include/poincare/hyperbolic_trigonometric_function.h @@ -2,7 +2,6 @@ #define POINCARE_HYPERBOLIC_TRIGONOMETRIC_FUNCTION_H #include -#include #include namespace Poincare { @@ -12,12 +11,6 @@ public: // TreeNode int numberOfChildren() const override { return 1; } private: - // Layout - Layout createLayout(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, name()); - } - virtual const char * name() const = 0; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; }; diff --git a/poincare/include/poincare/imaginary_part.h b/poincare/include/poincare/imaginary_part.h index 36e5c94b9..50d97f73d 100644 --- a/poincare/include/poincare/imaginary_part.h +++ b/poincare/include/poincare/imaginary_part.h @@ -23,7 +23,7 @@ public: private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; const char * name() const { return "im"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -45,6 +45,7 @@ public: explicit ImaginaryPart(Expression operand) : ImaginaryPart() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "im"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/integral.h b/poincare/include/poincare/integral.h index 16b70baf2..4c1213f0a 100644 --- a/poincare/include/poincare/integral.h +++ b/poincare/include/poincare/integral.h @@ -56,6 +56,7 @@ public: replaceChildAtIndexInPlace(2, child3); replaceChildAtIndexInPlace(3, child4); } + static const char * Name() { return "int"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/least_common_multiple.h b/poincare/include/poincare/least_common_multiple.h index a748e9ecc..74bbd35e1 100644 --- a/poincare/include/poincare/least_common_multiple.h +++ b/poincare/include/poincare/least_common_multiple.h @@ -1,7 +1,6 @@ #ifndef POINCARE_LEAST_COMMON_MULTIPLE_H #define POINCARE_LEAST_COMMON_MULTIPLE_H -#include #include namespace Poincare { @@ -22,10 +21,7 @@ public: private: /* Layout */ Layout createLayout(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, name()); - } - const char * name() const { return "lcm"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; /* Simplification */ Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; /* Evaluation */ @@ -42,6 +38,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "lcm"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/logarithm.h b/poincare/include/poincare/logarithm.h index aa8a1b140..be27963a2 100644 --- a/poincare/include/poincare/logarithm.h +++ b/poincare/include/poincare/logarithm.h @@ -5,8 +5,6 @@ #include #include #include -#include -#include namespace Poincare { @@ -27,9 +25,7 @@ public: // Layout Layout createLayout(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, "log"); - } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit) override; @@ -56,6 +52,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "log"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit); diff --git a/poincare/include/poincare/matrix_dimension.h b/poincare/include/poincare/matrix_dimension.h index da9a8dd79..a90bf763a 100644 --- a/poincare/include/poincare/matrix_dimension.h +++ b/poincare/include/poincare/matrix_dimension.h @@ -23,7 +23,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "dim"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -39,6 +38,8 @@ public: explicit MatrixDimension(Expression operand) : MatrixDimension() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "dim"; } + Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/matrix_inverse.h b/poincare/include/poincare/matrix_inverse.h index b134bc32d..6cf27d22f 100644 --- a/poincare/include/poincare/matrix_inverse.h +++ b/poincare/include/poincare/matrix_inverse.h @@ -23,7 +23,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "inverse"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -39,6 +38,7 @@ public: explicit MatrixInverse(Expression operand) : MatrixInverse() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "inverse"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/matrix_trace.h b/poincare/include/poincare/matrix_trace.h index f0cf0c6c2..1cfea24ab 100644 --- a/poincare/include/poincare/matrix_trace.h +++ b/poincare/include/poincare/matrix_trace.h @@ -23,7 +23,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "trace"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -39,6 +38,8 @@ public: explicit MatrixTrace(Expression operand) : MatrixTrace() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "trace"; } + Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/matrix_transpose.h b/poincare/include/poincare/matrix_transpose.h index c6afb12cd..07464401e 100644 --- a/poincare/include/poincare/matrix_transpose.h +++ b/poincare/include/poincare/matrix_transpose.h @@ -23,7 +23,6 @@ private: // Layout Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; - const char * name() const { return "transpose"; } // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -39,6 +38,8 @@ public: explicit MatrixTranspose(Expression operand) : MatrixTranspose() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "transpose"; } + Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/naperian_logarithm.h b/poincare/include/poincare/naperian_logarithm.h index 0f682ea1f..e636f4c73 100644 --- a/poincare/include/poincare/naperian_logarithm.h +++ b/poincare/include/poincare/naperian_logarithm.h @@ -3,8 +3,6 @@ #include #include -#include -#include namespace Poincare { @@ -24,13 +22,8 @@ public: private: // Layout - Layout createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, name()); - } - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); - } - static const char * name() { return "ln"; } + Layout createLayout(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, bool replaceSymbols = true) override; /* Evaluation */ @@ -55,6 +48,7 @@ public: explicit NaperianLogarithm(Expression operand) : NaperianLogarithm() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "ln"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/nth_root.h b/poincare/include/poincare/nth_root.h index 699902199..c501002d1 100644 --- a/poincare/include/poincare/nth_root.h +++ b/poincare/include/poincare/nth_root.h @@ -2,8 +2,6 @@ #define POINCARE_NTH_ROOT_H #include -#include -#include namespace Poincare { @@ -24,9 +22,7 @@ public: private: // Layout Layout createLayout(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, "root"); - } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -44,6 +40,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "root"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/parenthesis.h b/poincare/include/poincare/parenthesis.h index cf20f3381..46d81809f 100644 --- a/poincare/include/poincare/parenthesis.h +++ b/poincare/include/poincare/parenthesis.h @@ -2,7 +2,6 @@ #define POINCARE_PARENTHESIS_H #include -#include namespace Poincare { diff --git a/poincare/include/poincare/permute_coefficient.h b/poincare/include/poincare/permute_coefficient.h index ca1037b92..440b6ef14 100644 --- a/poincare/include/poincare/permute_coefficient.h +++ b/poincare/include/poincare/permute_coefficient.h @@ -1,8 +1,6 @@ #ifndef POINCARE_PERMUTE_COEFFICIENT_H #define POINCARE_PERMUTE_COEFFICIENT_H -#include -#include #include #include @@ -27,10 +25,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "permute"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -47,6 +42,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "permute"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/power.h b/poincare/include/poincare/power.h index 98c927160..223ce5cf7 100644 --- a/poincare/include/poincare/power.h +++ b/poincare/include/poincare/power.h @@ -4,7 +4,6 @@ #include #include #include -#include namespace Poincare { @@ -40,10 +39,7 @@ private: // Serialize bool childNeedsParenthesis(const TreeNode * child) const override; - int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override { - return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); - } - static const char * name() { return "^"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplify Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -69,6 +65,7 @@ class Power final : public Expression { public: Power(Expression base, Expression exponent); Power(const PowerNode * n) : Expression(n) {} + static const char * Name() { return "^"; } Expression setSign(ExpressionNode::Sign s, Context & context, Preferences::AngleUnit angleUnit); int getPolynomialCoefficients(Context & context, const char * symbolName, Expression coefficients[]) const; Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/prediction_interval.h b/poincare/include/poincare/prediction_interval.h index 189814000..44725b70c 100644 --- a/poincare/include/poincare/prediction_interval.h +++ b/poincare/include/poincare/prediction_interval.h @@ -1,9 +1,7 @@ #ifndef POINCARE_PREDICTION_INTERVAL_H #define POINCARE_PREDICTION_INTERVAL_H -#include #include -#include namespace Poincare { @@ -27,10 +25,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "prediction95"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -47,6 +42,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "prediction95"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/product.h b/poincare/include/poincare/product.h index 71d95b723..b50bf2f85 100644 --- a/poincare/include/poincare/product.h +++ b/poincare/include/poincare/product.h @@ -17,9 +17,9 @@ public: Type type() const override { return Type::Product; } private: - const char * name() const override { return "product"; } float emptySequenceValue() const override { return 1.0f; } Layout createSequenceLayout(Layout argumentLayout, Layout symbolLayout, Layout subscriptLayout, Layout superscriptLayout) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; Evaluation evaluateWithNextTerm(DoublePrecision p, Evaluation a, Evaluation b) const override { return templatedApproximateWithNextTerm(a, b); } @@ -40,6 +40,7 @@ public: replaceChildAtIndexInPlace(2, operand2); replaceChildAtIndexInPlace(3, operand3); } + static const char * Name() { return "product"; } }; } diff --git a/poincare/include/poincare/randint.h b/poincare/include/poincare/randint.h index c44ced26c..fee8d372e 100644 --- a/poincare/include/poincare/randint.h +++ b/poincare/include/poincare/randint.h @@ -1,9 +1,7 @@ #ifndef POINCARE_RANDINT_H #define POINCARE_RANDINT_H -#include #include -#include namespace Poincare { @@ -24,10 +22,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "randint"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Evaluation Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return templateApproximate(context, angleUnit); @@ -43,6 +38,7 @@ friend class RandintNode; public: Randint(); Randint(const RandintNode * n) : Expression(n) {} + static const char * Name() { return "randint"; } template static T random(); }; diff --git a/poincare/include/poincare/random.h b/poincare/include/poincare/random.h index d2c19f4e0..99a7f6297 100644 --- a/poincare/include/poincare/random.h +++ b/poincare/include/poincare/random.h @@ -3,8 +3,6 @@ #include #include -#include -#include namespace Poincare { @@ -27,10 +25,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "random"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Evaluation Evaluation approximate(SinglePrecision p, Context& context, Preferences::AngleUnit angleUnit) const override { return templateApproximate(); @@ -46,6 +41,7 @@ friend class RandomNode; public: Random(); Random(const RandomNode * n) : Expression(n) {} + static const char * Name() { return "random"; } template static T random(); private: diff --git a/poincare/include/poincare/real_part.h b/poincare/include/poincare/real_part.h index e211a3a15..5168f8fbf 100644 --- a/poincare/include/poincare/real_part.h +++ b/poincare/include/poincare/real_part.h @@ -1,9 +1,7 @@ #ifndef POINCARE_REEL_PART_H #define POINCARE_REEL_PART_H -#include #include -#include #include namespace Poincare { @@ -25,10 +23,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "re"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -50,6 +45,7 @@ public: explicit RealPart(Expression operand) : RealPart() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "re"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/round.h b/poincare/include/poincare/round.h index fba94846a..74fe89ea5 100644 --- a/poincare/include/poincare/round.h +++ b/poincare/include/poincare/round.h @@ -1,10 +1,8 @@ #ifndef POINCARE_ROUND_H #define POINCARE_ROUND_H -#include #include #include -#include namespace Poincare { @@ -25,10 +23,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "round"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplification Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; // Evaluation @@ -45,6 +40,7 @@ public: replaceChildAtIndexInPlace(0, operand0); replaceChildAtIndexInPlace(1, operand1); } + static const char * Name() { return "round"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/sequence.h b/poincare/include/poincare/sequence.h index d702c0ace..adcb454a8 100644 --- a/poincare/include/poincare/sequence.h +++ b/poincare/include/poincare/sequence.h @@ -1,8 +1,6 @@ #ifndef POINCARE_SEQUENCE_H #define POINCARE_SEQUENCE_H -#include -#include #include #include @@ -13,11 +11,7 @@ public: int numberOfChildren() const override { return 4; } private: Layout createLayout(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, name()); - } virtual Layout createSequenceLayout(Layout argumentLayout, Layout symbolLayout, Layout subscriptLayout, Layout superscriptLayout) const = 0; - virtual const char * name() const = 0; /* Approximation */ 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/sine.h b/poincare/include/poincare/sine.h index ff81ddbf8..3c4c0ebc6 100644 --- a/poincare/include/poincare/sine.h +++ b/poincare/include/poincare/sine.h @@ -3,7 +3,6 @@ #include #include -#include #include namespace Poincare { @@ -29,10 +28,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "sin"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplication Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -53,6 +49,7 @@ public: explicit Sine(Expression operand) : Sine() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "sin"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/square_root.h b/poincare/include/poincare/square_root.h index 934c9a9e4..9db54dabd 100644 --- a/poincare/include/poincare/square_root.h +++ b/poincare/include/poincare/square_root.h @@ -3,7 +3,7 @@ #include #include -#include +#include namespace Poincare { @@ -45,11 +45,14 @@ public: explicit SquareRoot(Expression operand) : Expression(TreePool::sharedPool()->createTreeNode()) { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { + constexpr static char k_name[2] = {Ion::Charset::Root, 0}; + return k_name; + } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; - } #endif diff --git a/poincare/include/poincare/store.h b/poincare/include/poincare/store.h index c4c0f0da2..ee87fa4e0 100644 --- a/poincare/include/poincare/store.h +++ b/poincare/include/poincare/store.h @@ -3,7 +3,6 @@ #include #include -#include #include namespace Poincare { diff --git a/poincare/include/poincare/subtraction.h b/poincare/include/poincare/subtraction.h index 950873f7a..dca380399 100644 --- a/poincare/include/poincare/subtraction.h +++ b/poincare/include/poincare/subtraction.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -43,7 +42,6 @@ public: Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; private: - static const char * name() { return "-"; } /* Evaluation */ template static MatrixComplex computeOnMatrixAndComplex(const MatrixComplex m, const std::complex c) { return ApproximationHelper::ElementWiseOnMatrixComplexAndComplex(m, c, compute); @@ -62,6 +60,7 @@ public: replaceChildAtIndexInPlace(0, child1); replaceChildAtIndexInPlace(1, child2); } + static const char * Name() { return "-"; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/sum.h b/poincare/include/poincare/sum.h index 7befcd894..d87a21e10 100644 --- a/poincare/include/poincare/sum.h +++ b/poincare/include/poincare/sum.h @@ -17,9 +17,9 @@ public: Type type() const override { return Type::Sum; } private: - const char * name() const override { return "sum"; } float emptySequenceValue() const override { return 0.0f; } Layout createSequenceLayout(Layout argumentLayout, Layout symbolLayout, Layout subscriptLayout, Layout superscriptLayout) const override; + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; Evaluation evaluateWithNextTerm(DoublePrecision p, Evaluation a, Evaluation b) const override { return templatedApproximateWithNextTerm(a, b); } @@ -40,6 +40,7 @@ public: replaceChildAtIndexInPlace(2, operand2); replaceChildAtIndexInPlace(3, operand3); } + static const char * Name() { return "sum"; } }; } diff --git a/poincare/include/poincare/tangent.h b/poincare/include/poincare/tangent.h index 018670d4c..74863287f 100644 --- a/poincare/include/poincare/tangent.h +++ b/poincare/include/poincare/tangent.h @@ -3,7 +3,6 @@ #include #include -#include namespace Poincare { @@ -26,10 +25,7 @@ public: private: // Layout Layout createLayout(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, name()); - } - const char * name() const { return "tan"; } + int serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const override; // Simplication Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true) override; @@ -51,6 +47,7 @@ public: explicit Tangent(Expression operand) : Tangent() { replaceChildAtIndexInPlace(0, operand); } + static const char * Name() { return "tan"; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/src/absolute_value.cpp b/poincare/src/absolute_value.cpp index 498c78520..2c5eb339c 100644 --- a/poincare/src/absolute_value.cpp +++ b/poincare/src/absolute_value.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include #include #include @@ -14,6 +16,10 @@ Layout AbsoluteValueNode::createLayout(Preferences::PrintFloatMode floatDisplayM return AbsoluteValueLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } +int AbsoluteValueNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, AbsoluteValue::Name()); +} + Expression AbsoluteValueNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return AbsoluteValue(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/addition.cpp b/poincare/src/addition.cpp index c0a19d0d6..c6b7f8ae2 100644 --- a/poincare/src/addition.cpp +++ b/poincare/src/addition.cpp @@ -5,6 +5,8 @@ #include #include //#include +#include +#include #include namespace Poincare { @@ -36,7 +38,11 @@ bool AdditionNode::childNeedsParenthesis(const TreeNode * child) const { } Layout AdditionNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Infix(Addition(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Infix(Addition(this), floatDisplayMode, numberOfSignificantDigits, Addition::Name()); +} + +int AdditionNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Addition::Name()); } // Simplication diff --git a/poincare/src/arc_cosine.cpp b/poincare/src/arc_cosine.cpp index ed900ca1c..15ffed8cb 100644 --- a/poincare/src/arc_cosine.cpp +++ b/poincare/src/arc_cosine.cpp @@ -1,13 +1,18 @@ #include #include #include +#include #include #include namespace Poincare { Layout ArcCosineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(ArcCosine(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(ArcCosine(this), floatDisplayMode, numberOfSignificantDigits, ArcCosine::Name()); +} + +int ArcCosineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ArcCosine::Name()); } Expression ArcCosineNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/arc_sine.cpp b/poincare/src/arc_sine.cpp index 9d1750122..52e607ee6 100644 --- a/poincare/src/arc_sine.cpp +++ b/poincare/src/arc_sine.cpp @@ -1,13 +1,18 @@ #include #include #include +#include #include #include namespace Poincare { Layout ArcSineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(ArcSine(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(ArcSine(this), floatDisplayMode, numberOfSignificantDigits, ArcSine::Name()); +} + +int ArcSineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ArcSine::Name()); } Expression ArcSineNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/arc_tangent.cpp b/poincare/src/arc_tangent.cpp index 9fd780f46..19eb5fbd9 100644 --- a/poincare/src/arc_tangent.cpp +++ b/poincare/src/arc_tangent.cpp @@ -1,13 +1,18 @@ #include #include #include +#include #include #include namespace Poincare { Layout ArcTangentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(ArcTangent(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(ArcTangent(this), floatDisplayMode, numberOfSignificantDigits, ArcTangent::Name()); +} + +int ArcTangentNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ArcTangent::Name()); } template diff --git a/poincare/src/binomial_coefficient.cpp b/poincare/src/binomial_coefficient.cpp index 775fe1173..40c37161e 100644 --- a/poincare/src/binomial_coefficient.cpp +++ b/poincare/src/binomial_coefficient.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include #include @@ -20,7 +21,7 @@ Layout BinomialCoefficientNode::createLayout(Preferences::PrintFloatMode floatDi } int BinomialCoefficientNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "binomial"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, BinomialCoefficient::Name()); } template diff --git a/poincare/src/binomial_coefficient_layout.cpp b/poincare/src/binomial_coefficient_layout.cpp index dbf653b2d..b1f169677 100644 --- a/poincare/src/binomial_coefficient_layout.cpp +++ b/poincare/src/binomial_coefficient_layout.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -73,7 +74,7 @@ void BinomialCoefficientLayoutNode::moveCursorDown(LayoutCursor * cursor, bool * } int BinomialCoefficientLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "binomial"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, BinomialCoefficient::Name()); } KDSize BinomialCoefficientLayoutNode::computeSize() { diff --git a/poincare/src/ceiling.cpp b/poincare/src/ceiling.cpp index 82b3b9966..c2077548c 100644 --- a/poincare/src/ceiling.cpp +++ b/poincare/src/ceiling.cpp @@ -16,7 +16,7 @@ Layout CeilingNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, i } int CeilingNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Ceiling::Name()); } template diff --git a/poincare/src/complex_argument.cpp b/poincare/src/complex_argument.cpp index ee3bebab0..68fa253c0 100644 --- a/poincare/src/complex_argument.cpp +++ b/poincare/src/complex_argument.cpp @@ -10,11 +10,11 @@ extern "C" { namespace Poincare { Layout ComplexArgumentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(ComplexArgument(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(ComplexArgument(this), floatDisplayMode, numberOfSignificantDigits, ComplexArgument::Name()); } int ComplexArgumentNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ComplexArgument::Name()); } Expression ComplexArgumentNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/confidence_interval.cpp b/poincare/src/confidence_interval.cpp index dbc589242..525e1b485 100644 --- a/poincare/src/confidence_interval.cpp +++ b/poincare/src/confidence_interval.cpp @@ -1,9 +1,9 @@ #include #include -#include #include #include #include +#include #include #include #include @@ -12,11 +12,11 @@ namespace Poincare { Layout ConfidenceIntervalNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(ConfidenceInterval(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(ConfidenceInterval(this), floatDisplayMode, numberOfSignificantDigits, ConfidenceInterval::Name()); } int ConfidenceIntervalNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ConfidenceInterval::Name()); } Expression ConfidenceIntervalNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { @@ -38,6 +38,14 @@ Evaluation ConfidenceIntervalNode::templatedApproximate(Context& context, Pre return MatrixComplex(operands, 1, 2); } +Layout SimplePredictionIntervalNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(SimplePredictionInterval(this), floatDisplayMode, numberOfSignificantDigits, SimplePredictionInterval::Name()); +} + +int SimplePredictionIntervalNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, SimplePredictionInterval::Name()); +} + ConfidenceInterval::ConfidenceInterval() : Expression(TreePool::sharedPool()->createTreeNode()) {} Expression ConfidenceInterval::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/conjugate.cpp b/poincare/src/conjugate.cpp index 0c1576ca7..e70fe02ed 100644 --- a/poincare/src/conjugate.cpp +++ b/poincare/src/conjugate.cpp @@ -12,7 +12,7 @@ Layout ConjugateNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, } int ConjugateNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "conj"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Conjugate::Name()); } Expression ConjugateNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/conjugate_layout.cpp b/poincare/src/conjugate_layout.cpp index f556bd39d..c7f022daf 100644 --- a/poincare/src/conjugate_layout.cpp +++ b/poincare/src/conjugate_layout.cpp @@ -1,3 +1,4 @@ +#include #include #include #include @@ -51,7 +52,7 @@ void ConjugateLayoutNode::moveCursorRight(LayoutCursor * cursor, bool * shouldRe } int ConjugateLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "conj"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Conjugate::Name()); } KDSize ConjugateLayoutNode::computeSize() { diff --git a/poincare/src/cosine.cpp b/poincare/src/cosine.cpp index 998d0f3f8..6442458d0 100644 --- a/poincare/src/cosine.cpp +++ b/poincare/src/cosine.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -18,7 +19,11 @@ Complex CosineNode::computeOnComplex(const std::complex c, Preferences::An } Layout CosineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Cosine(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Cosine(this), floatDisplayMode, numberOfSignificantDigits, Cosine::Name()); +} + +int CosineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Cosine::Name()); } Expression CosineNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/derivative.cpp b/poincare/src/derivative.cpp index 619918ccf..de58e3bf0 100644 --- a/poincare/src/derivative.cpp +++ b/poincare/src/derivative.cpp @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include #include @@ -20,6 +22,14 @@ int DerivativeNode::polynomialDegree(Context & context, const char * symbolName) return ExpressionNode::polynomialDegree(context, symbolName); } +Layout DerivativeNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, Derivative::Name()); +} + +int DerivativeNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Derivative::Name()); +} + Expression DerivativeNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return Derivative(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/determinant.cpp b/poincare/src/determinant.cpp index e7d4f5200..7a4319232 100644 --- a/poincare/src/determinant.cpp +++ b/poincare/src/determinant.cpp @@ -1,6 +1,7 @@ #include #include #include +#include extern "C" { #include } @@ -9,7 +10,11 @@ extern "C" { namespace Poincare { Layout DeterminantNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Determinant(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Determinant(this), floatDisplayMode, numberOfSignificantDigits, Determinant::Name()); +} + +int DeterminantNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Determinant::Name()); } // TODO: handle this exactly in shallowReduce for small dimensions. diff --git a/poincare/src/division.cpp b/poincare/src/division.cpp index 306643571..5c977df8f 100644 --- a/poincare/src/division.cpp +++ b/poincare/src/division.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -35,6 +36,10 @@ Layout DivisionNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, return FractionLayout(numerator->createLayout(floatDisplayMode, numberOfSignificantDigits), denominator->createLayout(floatDisplayMode, numberOfSignificantDigits)); } +int DivisionNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Division::Name()); +} + Expression DivisionNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return Division(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/division_quotient.cpp b/poincare/src/division_quotient.cpp index fea7ab2df..b7a6a8614 100644 --- a/poincare/src/division_quotient.cpp +++ b/poincare/src/division_quotient.cpp @@ -13,10 +13,10 @@ Expression DivisionQuotientNode::shallowReduce(Context & context, Preferences::A } Layout DivisionQuotientNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(DivisionQuotient(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(DivisionQuotient(this), floatDisplayMode, numberOfSignificantDigits, DivisionQuotient::Name()); } int DivisionQuotientNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, DivisionQuotient::Name()); } template diff --git a/poincare/src/division_remainder.cpp b/poincare/src/division_remainder.cpp index 4518810da..5ee146ee4 100644 --- a/poincare/src/division_remainder.cpp +++ b/poincare/src/division_remainder.cpp @@ -9,11 +9,11 @@ namespace Poincare { Layout DivisionRemainderNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(DivisionRemainder(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(DivisionRemainder(this), floatDisplayMode, numberOfSignificantDigits, DivisionRemainder::Name()); } int DivisionRemainderNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, DivisionRemainder::Name()); } Expression DivisionRemainderNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/equal.cpp b/poincare/src/equal.cpp index f3509c81c..b5e20a540 100644 --- a/poincare/src/equal.cpp +++ b/poincare/src/equal.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include extern "C" { diff --git a/poincare/src/factor.cpp b/poincare/src/factor.cpp index 7e28fe156..bd03f0bca 100644 --- a/poincare/src/factor.cpp +++ b/poincare/src/factor.cpp @@ -4,7 +4,8 @@ #include #include #include - +#include +#include extern "C" { #include #include @@ -14,7 +15,11 @@ extern "C" { namespace Poincare { Layout FactorNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Factor(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Factor(this), floatDisplayMode, numberOfSignificantDigits, Factor::Name()); +} + +int FactorNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Factor::Name()); } Factor::Factor() : Expression(TreePool::sharedPool()->createTreeNode()) {} diff --git a/poincare/src/floor.cpp b/poincare/src/floor.cpp index 615868d4c..cfedd1635 100644 --- a/poincare/src/floor.cpp +++ b/poincare/src/floor.cpp @@ -16,7 +16,7 @@ Layout FloorNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int } int FloorNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Floor::Name()); } template diff --git a/poincare/src/frac_part.cpp b/poincare/src/frac_part.cpp index 6e8eea1da..f81320da3 100644 --- a/poincare/src/frac_part.cpp +++ b/poincare/src/frac_part.cpp @@ -8,11 +8,11 @@ namespace Poincare { Layout FracPartNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(FracPart(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(FracPart(this), floatDisplayMode, numberOfSignificantDigits, FracPart::Name()); } int FracPartNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, FracPart::Name()); } Expression FracPartNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/great_common_divisor.cpp b/poincare/src/great_common_divisor.cpp index f2e78e8bf..1fab2ee2f 100644 --- a/poincare/src/great_common_divisor.cpp +++ b/poincare/src/great_common_divisor.cpp @@ -9,11 +9,11 @@ namespace Poincare { Layout GreatCommonDivisorNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(GreatCommonDivisor(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(GreatCommonDivisor(this), floatDisplayMode, numberOfSignificantDigits, GreatCommonDivisor::Name()); } int GreatCommonDivisorNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, GreatCommonDivisor::Name()); } Expression GreatCommonDivisorNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/hyperbolic_arc_cosine.cpp b/poincare/src/hyperbolic_arc_cosine.cpp index f2febb6ff..2cefdc6a2 100644 --- a/poincare/src/hyperbolic_arc_cosine.cpp +++ b/poincare/src/hyperbolic_arc_cosine.cpp @@ -1,9 +1,19 @@ #include #include +#include +#include #include namespace Poincare { +Layout HyperbolicArcCosineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(HyperbolicArcCosine(this), floatDisplayMode, numberOfSignificantDigits, HyperbolicArcCosine::Name()); +} + +int HyperbolicArcCosineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, HyperbolicArcCosine::Name()); +} + template Complex HyperbolicArcCosineNode::computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit) { std::complex result = std::acosh(c); diff --git a/poincare/src/hyperbolic_arc_sine.cpp b/poincare/src/hyperbolic_arc_sine.cpp index 2b860654c..191108232 100644 --- a/poincare/src/hyperbolic_arc_sine.cpp +++ b/poincare/src/hyperbolic_arc_sine.cpp @@ -1,9 +1,18 @@ #include #include +#include +#include #include namespace Poincare { +Layout HyperbolicArcSineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(HyperbolicArcSine(this), floatDisplayMode, numberOfSignificantDigits, HyperbolicArcSine::Name()); +} +int HyperbolicArcSineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, HyperbolicArcSine::Name()); +} + template Complex HyperbolicArcSineNode::computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit) { std::complex result = std::asinh(c); @@ -21,5 +30,4 @@ Complex HyperbolicArcSineNode::computeOnComplex(const std::complex c, Pref template Complex Poincare::HyperbolicArcSineNode::computeOnComplex(std::complex, Preferences::AngleUnit); template Complex Poincare::HyperbolicArcSineNode::computeOnComplex(std::complex, Preferences::AngleUnit); - } diff --git a/poincare/src/hyperbolic_arc_tangent.cpp b/poincare/src/hyperbolic_arc_tangent.cpp index 105ecc4a2..46dab4595 100644 --- a/poincare/src/hyperbolic_arc_tangent.cpp +++ b/poincare/src/hyperbolic_arc_tangent.cpp @@ -1,9 +1,19 @@ #include #include +#include +#include #include namespace Poincare { +Layout HyperbolicArcTangentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(HyperbolicArcTangent(this), floatDisplayMode, numberOfSignificantDigits, HyperbolicArcTangent::Name()); +} + +int HyperbolicArcTangentNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, HyperbolicArcTangent::Name()); +} + template Complex HyperbolicArcTangentNode::computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit) { std::complex result = std::atanh(c); diff --git a/poincare/src/hyperbolic_cosine.cpp b/poincare/src/hyperbolic_cosine.cpp index e938c1fd3..a34b6013a 100644 --- a/poincare/src/hyperbolic_cosine.cpp +++ b/poincare/src/hyperbolic_cosine.cpp @@ -1,7 +1,16 @@ #include +#include +#include namespace Poincare { +Layout HyperbolicCosineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(HyperbolicCosine(this), floatDisplayMode, numberOfSignificantDigits, HyperbolicCosine::Name()); +} +int HyperbolicCosineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, HyperbolicCosine::Name()); +} + template Complex HyperbolicCosineNode::computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit) { return Complex(Trigonometry::RoundToMeaningfulDigits(std::cosh(c), c)); diff --git a/poincare/src/hyperbolic_sine.cpp b/poincare/src/hyperbolic_sine.cpp index 4c557d5b5..ae84f7a7f 100644 --- a/poincare/src/hyperbolic_sine.cpp +++ b/poincare/src/hyperbolic_sine.cpp @@ -1,7 +1,16 @@ #include +#include +#include namespace Poincare { +Layout HyperbolicSineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(HyperbolicSine(this), floatDisplayMode, numberOfSignificantDigits, HyperbolicSine::Name()); +} +int HyperbolicSineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, HyperbolicSine::Name()); +} + template Complex HyperbolicSineNode::computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit) { return Complex(Trigonometry::RoundToMeaningfulDigits(std::sinh(c), c)); diff --git a/poincare/src/hyperbolic_tangent.cpp b/poincare/src/hyperbolic_tangent.cpp index cc99ccb4f..47aadd4cc 100644 --- a/poincare/src/hyperbolic_tangent.cpp +++ b/poincare/src/hyperbolic_tangent.cpp @@ -1,7 +1,16 @@ #include +#include +#include namespace Poincare { +Layout HyperbolicTangentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(HyperbolicTangent(this), floatDisplayMode, numberOfSignificantDigits, HyperbolicTangent::Name()); +} +int HyperbolicTangentNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, HyperbolicTangent::Name()); +} + template Complex HyperbolicTangentNode::computeOnComplex(const std::complex c, Preferences::AngleUnit angleUnit) { return Complex(Trigonometry::RoundToMeaningfulDigits(std::tanh(c), c)); diff --git a/poincare/src/hyperbolic_trigonometric_function.cpp b/poincare/src/hyperbolic_trigonometric_function.cpp index 614d9698a..173b757a2 100644 --- a/poincare/src/hyperbolic_trigonometric_function.cpp +++ b/poincare/src/hyperbolic_trigonometric_function.cpp @@ -1,12 +1,7 @@ #include -#include namespace Poincare { -Layout HyperbolicTrigonometricFunctionNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(HyperbolicTrigonometricFunction(this), floatDisplayMode, numberOfSignificantDigits, name()); -} - Expression HyperbolicTrigonometricFunctionNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return HyperbolicTrigonometricFunction(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/imaginary_part.cpp b/poincare/src/imaginary_part.cpp index dbea0642e..755b14158 100644 --- a/poincare/src/imaginary_part.cpp +++ b/poincare/src/imaginary_part.cpp @@ -8,11 +8,11 @@ namespace Poincare { Layout ImaginaryPartNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(ImaginaryPart(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(ImaginaryPart(this), floatDisplayMode, numberOfSignificantDigits, ImaginaryPart::Name()); } int ImaginaryPartNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, ImaginaryPart::Name()); } Expression ImaginaryPartNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/integral.cpp b/poincare/src/integral.cpp index 7e498a95e..20e304e7a 100644 --- a/poincare/src/integral.cpp +++ b/poincare/src/integral.cpp @@ -31,7 +31,7 @@ Layout IntegralNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, } int IntegralNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "int"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Integral::Name()); } Expression IntegralNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/least_common_multiple.cpp b/poincare/src/least_common_multiple.cpp index 3a068a0b2..8c8d11be6 100644 --- a/poincare/src/least_common_multiple.cpp +++ b/poincare/src/least_common_multiple.cpp @@ -3,13 +3,18 @@ #include #include #include +#include #include #include namespace Poincare { Layout LeastCommonMultipleNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(LeastCommonMultiple(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(LeastCommonMultiple(this), floatDisplayMode, numberOfSignificantDigits, LeastCommonMultiple::Name()); +} + +int LeastCommonMultipleNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, LeastCommonMultiple::Name()); } Expression LeastCommonMultipleNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/logarithm.cpp b/poincare/src/logarithm.cpp index 36a2522d2..6f0b4c923 100644 --- a/poincare/src/logarithm.cpp +++ b/poincare/src/logarithm.cpp @@ -8,6 +8,8 @@ #include #include #include +#include +#include #include #include #include @@ -20,7 +22,7 @@ namespace Poincare { template<> Layout LogarithmNode<1>::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, "log"); + return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, Logarithm::Name()); } template<> @@ -30,6 +32,11 @@ Layout LogarithmNode<2>::createLayout(Preferences::PrintFloatMode floatDisplayMo childAtIndex(1)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } +template +int LogarithmNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Logarithm::Name()); +} + template Expression LogarithmNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return Logarithm(this).shallowReduce(context, angleUnit, replaceSymbols); @@ -302,6 +309,8 @@ template Evaluation LogarithmNode<1>::templatedApproximate(Poincar template Evaluation LogarithmNode<1>::templatedApproximate(Poincare::Context&, Poincare::Preferences::AngleUnit) const; template Evaluation LogarithmNode<2>::templatedApproximate(Poincare::Context&, Poincare::Preferences::AngleUnit) const; template Evaluation LogarithmNode<2>::templatedApproximate(Poincare::Context&, Poincare::Preferences::AngleUnit) const; +template int LogarithmNode<1>::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const; +template int LogarithmNode<2>::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const; template Expression LogarithmNode<1>::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols); template Expression LogarithmNode<2>::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols); template Expression LogarithmNode<1>::shallowBeautify(Context & context, Preferences::AngleUnit angleUnit); diff --git a/poincare/src/matrix_dimension.cpp b/poincare/src/matrix_dimension.cpp index dc4039941..4581e0ab7 100644 --- a/poincare/src/matrix_dimension.cpp +++ b/poincare/src/matrix_dimension.cpp @@ -12,11 +12,11 @@ Expression MatrixDimensionNode::shallowReduce(Context & context, Preferences::An } Layout MatrixDimensionNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(MatrixDimension(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(MatrixDimension(this), floatDisplayMode, numberOfSignificantDigits, MatrixDimension::Name()); } int MatrixDimensionNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, MatrixDimension::Name()); } template diff --git a/poincare/src/matrix_inverse.cpp b/poincare/src/matrix_inverse.cpp index 4d29f89dd..107365230 100644 --- a/poincare/src/matrix_inverse.cpp +++ b/poincare/src/matrix_inverse.cpp @@ -15,11 +15,11 @@ Expression MatrixInverseNode::shallowReduce(Context & context, Preferences::Angl } Layout MatrixInverseNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(MatrixInverse(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(MatrixInverse(this), floatDisplayMode, numberOfSignificantDigits, MatrixInverse::Name()); } int MatrixInverseNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, MatrixInverse::Name()); } // TODO: handle this exactly in shallowReduce for small dimensions. diff --git a/poincare/src/matrix_trace.cpp b/poincare/src/matrix_trace.cpp index 3683f0aa1..ff4509b0e 100644 --- a/poincare/src/matrix_trace.cpp +++ b/poincare/src/matrix_trace.cpp @@ -14,11 +14,11 @@ Expression MatrixTraceNode::shallowReduce(Context & context, Preferences::AngleU } Layout MatrixTraceNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(MatrixTrace(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(MatrixTrace(this), floatDisplayMode, numberOfSignificantDigits, MatrixTrace::Name()); } int MatrixTraceNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, MatrixTrace::Name()); } template diff --git a/poincare/src/matrix_transpose.cpp b/poincare/src/matrix_transpose.cpp index 17bb8b9e0..c12102917 100644 --- a/poincare/src/matrix_transpose.cpp +++ b/poincare/src/matrix_transpose.cpp @@ -12,11 +12,11 @@ Expression MatrixTransposeNode::shallowReduce(Context & context, Preferences::An } Layout MatrixTransposeNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(MatrixTranspose(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(MatrixTranspose(this), floatDisplayMode, numberOfSignificantDigits, MatrixTranspose::Name()); } int MatrixTransposeNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, MatrixTranspose::Name()); } template diff --git a/poincare/src/naperian_logarithm.cpp b/poincare/src/naperian_logarithm.cpp index 1213a3f75..e60354787 100644 --- a/poincare/src/naperian_logarithm.cpp +++ b/poincare/src/naperian_logarithm.cpp @@ -1,10 +1,19 @@ #include #include #include +#include +#include #include namespace Poincare { +Layout NaperianLogarithmNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, NaperianLogarithm::Name()); +} +int NaperianLogarithmNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, NaperianLogarithm::Name()); +} + Expression NaperianLogarithmNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return NaperianLogarithm(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/nth_root.cpp b/poincare/src/nth_root.cpp index 26c42a456..496105301 100644 --- a/poincare/src/nth_root.cpp +++ b/poincare/src/nth_root.cpp @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include @@ -14,6 +16,10 @@ Layout NthRootNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, i childAtIndex(1)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } +int NthRootNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, NthRoot::Name()); +} + Expression NthRootNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return NthRoot(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/nth_root_layout.cpp b/poincare/src/nth_root_layout.cpp index 73c0330b9..e77b7df35 100644 --- a/poincare/src/nth_root_layout.cpp +++ b/poincare/src/nth_root_layout.cpp @@ -1,4 +1,6 @@ +#include #include +#include #include #include #include @@ -146,18 +148,17 @@ void NthRootLayoutNode::deleteBeforeCursor(LayoutCursor * cursor) { LayoutNode::deleteBeforeCursor(cursor); } -static_assert('\x91' == Ion::Charset::Root, "Unicode error"); int NthRootLayoutNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { // Case: root(x,n) if (m_hasIndex && (const_cast(this))->indexLayout() && !(const_cast(this))->indexLayout()->isEmpty()) { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "root"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, NthRoot::Name()); } // Case: squareRoot(x) if (!m_hasIndex) { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "\x91"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, SquareRoot::Name()); } // Case: root(x,empty) // Write "'SquareRootSymbol'('radicandLayout')". @@ -168,7 +169,7 @@ int NthRootLayoutNode::serialize(char * buffer, int bufferSize, Preferences::Pri buffer[bufferSize-1] = 0; int numberOfChar = 0; - buffer[numberOfChar++] = '\x91'; + buffer[numberOfChar++] = Ion::Charset::Root; if (numberOfChar >= bufferSize-1) { return bufferSize-1; } diff --git a/poincare/src/parenthesis.cpp b/poincare/src/parenthesis.cpp index 81ca0c142..7b3f64092 100644 --- a/poincare/src/parenthesis.cpp +++ b/poincare/src/parenthesis.cpp @@ -1,4 +1,5 @@ #include +#include #include namespace Poincare { diff --git a/poincare/src/permute_coefficient.cpp b/poincare/src/permute_coefficient.cpp index 71a04aa0e..7a8b34d19 100644 --- a/poincare/src/permute_coefficient.cpp +++ b/poincare/src/permute_coefficient.cpp @@ -1,6 +1,8 @@ #include #include #include +#include +#include extern "C" { #include @@ -10,7 +12,11 @@ extern "C" { namespace Poincare { Layout PermuteCoefficientNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(PermuteCoefficient(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(PermuteCoefficient(this), floatDisplayMode, numberOfSignificantDigits, PermuteCoefficient::Name()); +} + +int PermuteCoefficientNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, PermuteCoefficient::Name()); } Expression PermuteCoefficientNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/power.cpp b/poincare/src/power.cpp index 644e6dcd5..c80a449ac 100644 --- a/poincare/src/power.cpp +++ b/poincare/src/power.cpp @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -122,6 +123,12 @@ bool PowerNode::childNeedsParenthesis(const TreeNode * child) const { return static_cast(child)->isOfType(types, 6); } +int PowerNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Power::Name()); +} + + + // Simplify Expression PowerNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/prediction_interval.cpp b/poincare/src/prediction_interval.cpp index 0c6ddbaa8..eff4011b4 100644 --- a/poincare/src/prediction_interval.cpp +++ b/poincare/src/prediction_interval.cpp @@ -5,6 +5,8 @@ #include #include #include +#include +#include extern "C" { #include } @@ -13,9 +15,14 @@ extern "C" { namespace Poincare { Layout PredictionIntervalNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(PredictionInterval(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(PredictionInterval(this), floatDisplayMode, numberOfSignificantDigits, PredictionInterval::Name()); } +int PredictionIntervalNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, PredictionInterval::Name()); +} + + Expression PredictionIntervalNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return PredictionInterval(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/preferences.cpp b/poincare/src/preferences.cpp index 467f0065c..41139a7fc 100644 --- a/poincare/src/preferences.cpp +++ b/poincare/src/preferences.cpp @@ -6,7 +6,7 @@ namespace Poincare { Preferences::Preferences() : m_angleUnit(AngleUnit::Degree), m_displayMode(Preferences::PrintFloatMode::Decimal), - m_editionMode(EditionMode::Edition2D), + m_editionMode(EditionMode::Edition1D), m_complexFormat(Preferences::ComplexFormat::Cartesian), m_numberOfSignificantDigits(PrintFloat::k_numberOfPrintedSignificantDigits) { diff --git a/poincare/src/product.cpp b/poincare/src/product.cpp index 440ac6676..b18bdd30a 100644 --- a/poincare/src/product.cpp +++ b/poincare/src/product.cpp @@ -1,6 +1,8 @@ #include #include #include +#include +#include extern "C" { #include #include @@ -13,6 +15,10 @@ Layout ProductNode::createSequenceLayout(Layout argumentLayout, Layout symbolLay return ProductLayout(argumentLayout, symbolLayout, subscriptLayout, superscriptLayout); } +int ProductNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Product::Name()); +} + template Evaluation ProductNode::templatedApproximateWithNextTerm(Evaluation a, Evaluation b) const { if (a.type() == EvaluationNode::Type::Complex && b.type() == EvaluationNode::Type::Complex) { diff --git a/poincare/src/randint.cpp b/poincare/src/randint.cpp index e7c2635a3..f32488fd0 100644 --- a/poincare/src/randint.cpp +++ b/poincare/src/randint.cpp @@ -2,6 +2,8 @@ #include #include #include +#include +#include extern "C" { #include @@ -11,7 +13,11 @@ extern "C" { namespace Poincare { Layout RandintNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Randint(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Randint(this), floatDisplayMode, numberOfSignificantDigits, Randint::Name()); +} + +int RandintNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Randint::Name()); } template Evaluation RandintNode::templateApproximate(Context & context, Preferences::AngleUnit angleUnit) const { diff --git a/poincare/src/random.cpp b/poincare/src/random.cpp index 43c155bf0..036724024 100644 --- a/poincare/src/random.cpp +++ b/poincare/src/random.cpp @@ -1,6 +1,8 @@ #include #include #include +#include +#include #include #include @@ -11,7 +13,11 @@ Expression RandomNode::setSign(Sign s, Context & context, Preferences::AngleUnit } Layout RandomNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Random(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Random(this), floatDisplayMode, numberOfSignificantDigits, Random::Name()); +} + +int RandomNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Random::Name()); } template Evaluation RandomNode::templateApproximate() const { diff --git a/poincare/src/real_part.cpp b/poincare/src/real_part.cpp index 8c767f9d8..e2d1e62fc 100644 --- a/poincare/src/real_part.cpp +++ b/poincare/src/real_part.cpp @@ -1,4 +1,6 @@ #include +#include +#include #include #include #include @@ -6,7 +8,11 @@ namespace Poincare { Layout RealPartNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(RealPart(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(RealPart(this), floatDisplayMode, numberOfSignificantDigits, RealPart::Name()); +} + +int RealPartNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, RealPart::Name()); } Expression RealPartNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/round.cpp b/poincare/src/round.cpp index 7de81b8fe..52f68c130 100644 --- a/poincare/src/round.cpp +++ b/poincare/src/round.cpp @@ -2,13 +2,19 @@ #include #include #include +#include +#include #include #include namespace Poincare { Layout RoundNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Round(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Round(this), floatDisplayMode, numberOfSignificantDigits, Round::Name()); +} + +int RoundNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Round::Name()); } Expression RoundNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/sequence.cpp b/poincare/src/sequence.cpp index f5e1aad0e..8603e26a5 100644 --- a/poincare/src/sequence.cpp +++ b/poincare/src/sequence.cpp @@ -12,7 +12,12 @@ extern "C" { namespace Poincare { Layout SequenceNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return createSequenceLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), childAtIndex(1)->createLayout(floatDisplayMode, numberOfSignificantDigits), childAtIndex(2)->createLayout(floatDisplayMode, numberOfSignificantDigits), childAtIndex(3)->createLayout(floatDisplayMode, numberOfSignificantDigits)); + return createSequenceLayout( + childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), + childAtIndex(1)->createLayout(floatDisplayMode, numberOfSignificantDigits), + childAtIndex(2)->createLayout(floatDisplayMode, numberOfSignificantDigits), + childAtIndex(3)->createLayout(floatDisplayMode, numberOfSignificantDigits) + ); } template @@ -39,4 +44,7 @@ Evaluation SequenceNode::templatedApproximate(Context& context, Preferences:: return result; } +template Evaluation SequenceNode::templatedApproximate(Context& context, Preferences::AngleUnit angleUnit) const; +template Evaluation SequenceNode::templatedApproximate(Context& context, Preferences::AngleUnit angleUnit) const; + } diff --git a/poincare/src/sine.cpp b/poincare/src/sine.cpp index 8b3342b98..53ab3798a 100644 --- a/poincare/src/sine.cpp +++ b/poincare/src/sine.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include @@ -18,7 +19,11 @@ Complex SineNode::computeOnComplex(const std::complex c, Preferences::Angl } Layout SineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Sine(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Sine(this), floatDisplayMode, numberOfSignificantDigits, Sine::Name()); +} + +int SineNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Sine::Name()); } Expression SineNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/square_root.cpp b/poincare/src/square_root.cpp index f2851a75f..5c9d11538 100644 --- a/poincare/src/square_root.cpp +++ b/poincare/src/square_root.cpp @@ -1,5 +1,7 @@ #include #include +#include +#include #include #include #include @@ -12,9 +14,8 @@ Layout SquareRootNode::createLayout(Preferences::PrintFloatMode floatDisplayMode return NthRootLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } -static_assert('\x91' == Ion::Charset::Root, "Unicode error"); int SquareRootNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, "\x91"); + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, SquareRoot::Name()); } template @@ -33,7 +34,6 @@ Expression SquareRootNode::shallowReduce(Context & context, Preferences::AngleUn return SquareRoot(this).shallowReduce(context, angleUnit, replaceSymbols); } - SquareRoot::SquareRoot() : Expression(TreePool::sharedPool()->createTreeNode()) {} Expression SquareRoot::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { diff --git a/poincare/src/subtraction.cpp b/poincare/src/subtraction.cpp index c72133850..aebed1741 100644 --- a/poincare/src/subtraction.cpp +++ b/poincare/src/subtraction.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -31,11 +32,11 @@ bool SubtractionNode::childNeedsParenthesis(const TreeNode * child) const { } Layout SubtractionNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Infix(Subtraction(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Infix(Subtraction(this), floatDisplayMode, numberOfSignificantDigits, Subtraction::Name()); } int SubtractionNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, name()); + return SerializationHelper::Infix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Subtraction::Name()); } template MatrixComplex SubtractionNode::computeOnComplexAndMatrix(const std::complex c, const MatrixComplex m) { diff --git a/poincare/src/sum.cpp b/poincare/src/sum.cpp index 76aa4f29f..e2aad351a 100644 --- a/poincare/src/sum.cpp +++ b/poincare/src/sum.cpp @@ -1,7 +1,8 @@ #include #include #include - +#include +#include extern "C" { #include #include @@ -10,11 +11,14 @@ extern "C" { namespace Poincare { - Layout SumNode::createSequenceLayout(Layout argumentLayout, Layout symbolLayout, Layout subscriptLayout, Layout superscriptLayout) const { return SumLayout(argumentLayout, symbolLayout, subscriptLayout, superscriptLayout); } +int SumNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Sum::Name()); +} + template Evaluation SumNode::templatedApproximateWithNextTerm(Evaluation a, Evaluation b) const { if (a.type() == EvaluationNode::Type::Complex && b.type() == EvaluationNode::Type::Complex) { diff --git a/poincare/src/tangent.cpp b/poincare/src/tangent.cpp index 325ef44ff..2deb75063 100644 --- a/poincare/src/tangent.cpp +++ b/poincare/src/tangent.cpp @@ -2,6 +2,7 @@ #include #include #include +#include #include #include #include @@ -14,7 +15,11 @@ float TangentNode::characteristicXRange(Context & context, Preferences::AngleUni } Layout TangentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { - return LayoutHelper::Prefix(Tangent(this), floatDisplayMode, numberOfSignificantDigits, name()); + return LayoutHelper::Prefix(Tangent(this), floatDisplayMode, numberOfSignificantDigits, Tangent::Name()); +} + +int TangentNode::serialize(char * buffer, int bufferSize, Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { + return SerializationHelper::Prefix(this, buffer, bufferSize, floatDisplayMode, numberOfSignificantDigits, Tangent::Name()); } template