From cda6f522f02ef5e90ef5d1b159423a1b6a659754 Mon Sep 17 00:00:00 2001 From: Ruben Dashyan Date: Fri, 19 Oct 2018 18:06:55 +0200 Subject: [PATCH] [poincare] New static NumberOfChildren() method in Expression subclasses --- poincare/include/poincare/absolute_value.h | 3 ++- poincare/include/poincare/arc_cosine.h | 3 ++- poincare/include/poincare/arc_sine.h | 3 ++- poincare/include/poincare/arc_tangent.h | 3 ++- poincare/include/poincare/binomial_coefficient.h | 3 ++- poincare/include/poincare/ceiling.h | 3 ++- poincare/include/poincare/complex_argument.h | 3 ++- poincare/include/poincare/confidence_interval.h | 4 +++- poincare/include/poincare/conjugate.h | 4 ++-- poincare/include/poincare/cosine.h | 3 ++- poincare/include/poincare/derivative.h | 3 ++- poincare/include/poincare/determinant.h | 3 ++- poincare/include/poincare/division_quotient.h | 3 ++- poincare/include/poincare/division_remainder.h | 3 ++- poincare/include/poincare/expression.h | 1 + poincare/include/poincare/factor.h | 3 ++- poincare/include/poincare/floor.h | 3 ++- poincare/include/poincare/frac_part.h | 3 ++- poincare/include/poincare/great_common_divisor.h | 3 ++- poincare/include/poincare/hyperbolic_arc_cosine.h | 1 + poincare/include/poincare/hyperbolic_arc_sine.h | 1 + poincare/include/poincare/hyperbolic_arc_tangent.h | 1 + poincare/include/poincare/hyperbolic_cosine.h | 1 + poincare/include/poincare/hyperbolic_sine.h | 1 + poincare/include/poincare/hyperbolic_tangent.h | 1 + poincare/include/poincare/imaginary_part.h | 3 ++- poincare/include/poincare/integral.h | 3 ++- poincare/include/poincare/least_common_multiple.h | 3 ++- poincare/include/poincare/logarithm.h | 4 +++- poincare/include/poincare/matrix_dimension.h | 3 ++- poincare/include/poincare/matrix_inverse.h | 3 ++- poincare/include/poincare/matrix_trace.h | 3 ++- poincare/include/poincare/matrix_transpose.h | 3 ++- poincare/include/poincare/naperian_logarithm.h | 4 +++- poincare/include/poincare/nth_root.h | 3 ++- poincare/include/poincare/permute_coefficient.h | 3 ++- poincare/include/poincare/prediction_interval.h | 3 ++- poincare/include/poincare/product.h | 1 + poincare/include/poincare/randint.h | 3 ++- poincare/include/poincare/random.h | 3 ++- poincare/include/poincare/real_part.h | 3 ++- poincare/include/poincare/round.h | 3 ++- poincare/include/poincare/sine.h | 3 ++- poincare/include/poincare/square_root.h | 3 ++- poincare/include/poincare/sum.h | 1 + poincare/include/poincare/tangent.h | 3 ++- poincare/src/absolute_value.cpp | 2 ++ poincare/src/arc_cosine.cpp | 2 ++ poincare/src/arc_sine.cpp | 2 ++ poincare/src/arc_tangent.cpp | 2 ++ poincare/src/binomial_coefficient.cpp | 2 ++ poincare/src/ceiling.cpp | 2 ++ poincare/src/complex_argument.cpp | 4 ++-- poincare/src/confidence_interval.cpp | 2 ++ poincare/src/conjugate.cpp | 2 ++ poincare/src/cosine.cpp | 2 ++ poincare/src/derivative.cpp | 2 ++ poincare/src/determinant.cpp | 2 ++ poincare/src/division_quotient.cpp | 2 ++ poincare/src/division_remainder.cpp | 2 ++ poincare/src/factor.cpp | 2 ++ poincare/src/floor.cpp | 2 ++ poincare/src/frac_part.cpp | 2 ++ poincare/src/great_common_divisor.cpp | 2 ++ poincare/src/imaginary_part.cpp | 2 ++ poincare/src/integral.cpp | 2 ++ poincare/src/least_common_multiple.cpp | 2 ++ poincare/src/logarithm.cpp | 6 ++++++ poincare/src/matrix_dimension.cpp | 2 ++ poincare/src/matrix_inverse.cpp | 2 ++ poincare/src/matrix_trace.cpp | 2 ++ poincare/src/matrix_transpose.cpp | 3 +++ poincare/src/naperian_logarithm.cpp | 2 ++ poincare/src/nth_root.cpp | 2 ++ poincare/src/permute_coefficient.cpp | 2 ++ poincare/src/prediction_interval.cpp | 2 ++ poincare/src/randint.cpp | 2 ++ poincare/src/random.cpp | 2 ++ poincare/src/real_part.cpp | 2 ++ poincare/src/round.cpp | 2 ++ poincare/src/sine.cpp | 2 ++ poincare/src/square_root.cpp | 2 ++ poincare/src/tangent.cpp | 2 ++ 83 files changed, 165 insertions(+), 40 deletions(-) diff --git a/poincare/include/poincare/absolute_value.h b/poincare/include/poincare/absolute_value.h index 3d47fbe36..d1e592f84 100644 --- a/poincare/include/poincare/absolute_value.h +++ b/poincare/include/poincare/absolute_value.h @@ -10,7 +10,7 @@ class AbsoluteValueNode final : public ExpressionNode { public: // TreeNode size_t size() const override { return sizeof(AbsoluteValueNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "AbsoluteValue"; @@ -50,6 +50,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "abs"; } + static const int NumberOfChildren() { return 1; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); private: diff --git a/poincare/include/poincare/arc_cosine.h b/poincare/include/poincare/arc_cosine.h index 7b51a13ba..0ef96f9d0 100644 --- a/poincare/include/poincare/arc_cosine.h +++ b/poincare/include/poincare/arc_cosine.h @@ -12,7 +12,7 @@ public: // TreeNode size_t size() const override { return sizeof(ArcCosineNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "ArcCosine"; @@ -46,6 +46,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "acos"; } + static const int NumberOfChildren() { return 1; } 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 c20eaab45..b1b64edd2 100644 --- a/poincare/include/poincare/arc_sine.h +++ b/poincare/include/poincare/arc_sine.h @@ -12,7 +12,7 @@ public: // TreeNode size_t size() const override { return sizeof(ArcSineNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "ArcSine"; @@ -45,6 +45,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "asin"; } + static const int NumberOfChildren() { return 1; } 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 52ada154a..e7d9ac4e1 100644 --- a/poincare/include/poincare/arc_tangent.h +++ b/poincare/include/poincare/arc_tangent.h @@ -12,7 +12,7 @@ public: // TreeNode size_t size() const override { return sizeof(ArcTangentNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "ArcTangent"; @@ -45,6 +45,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "atan"; } + static const int NumberOfChildren() { return 1; } 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 b4a32dc7e..5caed992d 100644 --- a/poincare/include/poincare/binomial_coefficient.h +++ b/poincare/include/poincare/binomial_coefficient.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(BinomialCoefficientNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "BinomialCoefficient"; @@ -44,6 +44,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "binomial"; } + static const int NumberOfChildren() { return 2; } // 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 48e2b9b60..6fe7887c4 100644 --- a/poincare/include/poincare/ceiling.h +++ b/poincare/include/poincare/ceiling.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(CeilingNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Ceiling"; @@ -44,6 +44,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "ceil"; } + static const int NumberOfChildren() { return 1; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/complex_argument.h b/poincare/include/poincare/complex_argument.h index bf72ce710..ac7473f13 100644 --- a/poincare/include/poincare/complex_argument.h +++ b/poincare/include/poincare/complex_argument.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(ComplexArgumentNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "ComplexArgument"; @@ -44,6 +44,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "arg"; } + static const int NumberOfChildren() { return 1; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/confidence_interval.h b/poincare/include/poincare/confidence_interval.h index 4162e1ef3..fa3485193 100644 --- a/poincare/include/poincare/confidence_interval.h +++ b/poincare/include/poincare/confidence_interval.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(ConfidenceIntervalNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "ConfidenceInterval"; @@ -50,6 +50,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "confidence"; } + static const int NumberOfChildren() { return 2; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); @@ -66,6 +67,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "prediction"; } + static const int NumberOfChildren() { return 2; } }; } diff --git a/poincare/include/poincare/conjugate.h b/poincare/include/poincare/conjugate.h index 642e10251..192254914 100644 --- a/poincare/include/poincare/conjugate.h +++ b/poincare/include/poincare/conjugate.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(ConjugateNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Conjugate"; @@ -44,11 +44,11 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "conj"; } + static const int NumberOfChildren() { return 1; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; - } #endif diff --git a/poincare/include/poincare/cosine.h b/poincare/include/poincare/cosine.h index 2a2402991..85b2ad842 100644 --- a/poincare/include/poincare/cosine.h +++ b/poincare/include/poincare/cosine.h @@ -12,7 +12,7 @@ public: // TreeNode size_t size() const override { return sizeof(CosineNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Cosine"; @@ -48,6 +48,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "cos"; } + static const int NumberOfChildren() { return 1; } 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 05d8e46a9..583244039 100644 --- a/poincare/include/poincare/derivative.h +++ b/poincare/include/poincare/derivative.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(DerivativeNode); } - int numberOfChildren() const override { return 3; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Derivative"; @@ -53,6 +53,7 @@ public: replaceChildAtIndexInPlace(2, child3); } static const char * Name() { return "diff"; } + static const int NumberOfChildren() { return 3; } 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 194af5d0c..4bd485984 100644 --- a/poincare/include/poincare/determinant.h +++ b/poincare/include/poincare/determinant.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(DeterminantNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Determinant"; @@ -40,6 +40,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "det"; } + static const int NumberOfChildren() { return 1; } 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 7e8ec8ced..953ec511f 100644 --- a/poincare/include/poincare/division_quotient.h +++ b/poincare/include/poincare/division_quotient.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(DivisionQuotientNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "DivisionQuotient"; @@ -40,6 +40,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "quo"; } + static const int NumberOfChildren() { return 2; } // 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 127acac60..f99b44974 100644 --- a/poincare/include/poincare/division_remainder.h +++ b/poincare/include/poincare/division_remainder.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(DivisionRemainderNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "DivisionRemainder"; @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "rem"; } + static const int NumberOfChildren() { return 2; } // Expression Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); diff --git a/poincare/include/poincare/expression.h b/poincare/include/poincare/expression.h index 88ead4d7e..1a68a88aa 100644 --- a/poincare/include/poincare/expression.h +++ b/poincare/include/poincare/expression.h @@ -24,6 +24,7 @@ class Expression : public TreeHandle { friend class Arithmetic; friend class BinomialCoefficient; friend class Ceiling; + friend class CommonLogarithm; friend class ComplexArgument; friend class ConfidenceInterval; friend class Conjugate; diff --git a/poincare/include/poincare/factor.h b/poincare/include/poincare/factor.h index 555fc467c..319d619bc 100644 --- a/poincare/include/poincare/factor.h +++ b/poincare/include/poincare/factor.h @@ -12,7 +12,7 @@ class FactorNode /*final*/ : public ExpressionNode { public: // TreeNode size_t size() const override { return sizeof(FactorNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Factor"; @@ -42,6 +42,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "factor"; } + static const int NumberOfChildren() { return 1; } 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 55dd96550..fa9b3c879 100644 --- a/poincare/include/poincare/floor.h +++ b/poincare/include/poincare/floor.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(FloorNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Floor"; @@ -44,6 +44,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "floor"; } + static const int NumberOfChildren() { return 1; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/frac_part.h b/poincare/include/poincare/frac_part.h index 2853edd23..c094ba8bd 100644 --- a/poincare/include/poincare/frac_part.h +++ b/poincare/include/poincare/frac_part.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(FracPartNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "FracPart"; @@ -44,6 +44,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "frac"; } + static const int NumberOfChildren() { return 1; } 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 7c2116a6b..3bc68963d 100644 --- a/poincare/include/poincare/great_common_divisor.h +++ b/poincare/include/poincare/great_common_divisor.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(GreatCommonDivisorNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "GreatCommonDivisor"; @@ -40,6 +40,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "gcd"; } + static const int NumberOfChildren() { return 2; } // 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 f3f602ed7..a0e1d3260 100644 --- a/poincare/include/poincare/hyperbolic_arc_cosine.h +++ b/poincare/include/poincare/hyperbolic_arc_cosine.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "acosh"; } + static const int NumberOfChildren() { return 1; } }; } diff --git a/poincare/include/poincare/hyperbolic_arc_sine.h b/poincare/include/poincare/hyperbolic_arc_sine.h index b2ee76caf..d267deb3f 100644 --- a/poincare/include/poincare/hyperbolic_arc_sine.h +++ b/poincare/include/poincare/hyperbolic_arc_sine.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "asinh"; } + static const int NumberOfChildren() { return 1; } }; } diff --git a/poincare/include/poincare/hyperbolic_arc_tangent.h b/poincare/include/poincare/hyperbolic_arc_tangent.h index 523940991..87d3de642 100644 --- a/poincare/include/poincare/hyperbolic_arc_tangent.h +++ b/poincare/include/poincare/hyperbolic_arc_tangent.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "atanh"; } + static const int NumberOfChildren() { return 1; } }; } diff --git a/poincare/include/poincare/hyperbolic_cosine.h b/poincare/include/poincare/hyperbolic_cosine.h index 41b434a6a..4c93632b2 100644 --- a/poincare/include/poincare/hyperbolic_cosine.h +++ b/poincare/include/poincare/hyperbolic_cosine.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "cosh"; } + static const int NumberOfChildren() { return 1; } }; } diff --git a/poincare/include/poincare/hyperbolic_sine.h b/poincare/include/poincare/hyperbolic_sine.h index 5f3f85105..adf99190a 100644 --- a/poincare/include/poincare/hyperbolic_sine.h +++ b/poincare/include/poincare/hyperbolic_sine.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "sinh"; } + static const int NumberOfChildren() { return 1; } }; } diff --git a/poincare/include/poincare/hyperbolic_tangent.h b/poincare/include/poincare/hyperbolic_tangent.h index 472ff0c80..5306f17fd 100644 --- a/poincare/include/poincare/hyperbolic_tangent.h +++ b/poincare/include/poincare/hyperbolic_tangent.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "tanh"; } + static const int NumberOfChildren() { return 1; } }; } diff --git a/poincare/include/poincare/imaginary_part.h b/poincare/include/poincare/imaginary_part.h index 50d97f73d..ac6b8e036 100644 --- a/poincare/include/poincare/imaginary_part.h +++ b/poincare/include/poincare/imaginary_part.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(ImaginaryPartNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "ImaginaryPart"; @@ -46,6 +46,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "im"; } + static const int NumberOfChildren() { return 1; } 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 4c1213f0a..5b888422d 100644 --- a/poincare/include/poincare/integral.h +++ b/poincare/include/poincare/integral.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(IntegralNode); } - int numberOfChildren() const override { return 4; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Integral"; @@ -57,6 +57,7 @@ public: replaceChildAtIndexInPlace(3, child4); } static const char * Name() { return "int"; } + static const int NumberOfChildren() { return 4; } // 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 74bbd35e1..9114c01c6 100644 --- a/poincare/include/poincare/least_common_multiple.h +++ b/poincare/include/poincare/least_common_multiple.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(LeastCommonMultipleNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "LeastCommonMultiple"; @@ -39,6 +39,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "lcm"; } + static const int NumberOfChildren() { return 2; } // 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 b27f9fcf1..4ed58f0b4 100644 --- a/poincare/include/poincare/logarithm.h +++ b/poincare/include/poincare/logarithm.h @@ -13,7 +13,7 @@ class LogarithmNode final : public ExpressionNode { public: // TreeNode size_t size() const override { return sizeof(LogarithmNode); } - int numberOfChildren() const override { assert(T == 1 || T == 2); return T; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Logarithm"; @@ -49,6 +49,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "log"; } + static const int NumberOfChildren() { return 2; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); Expression shallowBeautify(Context & context, Preferences::AngleUnit angleUnit); @@ -67,6 +68,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "log"; } + static const int NumberOfChildren() { return 1; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/matrix_dimension.h b/poincare/include/poincare/matrix_dimension.h index a90bf763a..5d1ddaead 100644 --- a/poincare/include/poincare/matrix_dimension.h +++ b/poincare/include/poincare/matrix_dimension.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(MatrixDimensionNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "MatrixDimension"; @@ -39,6 +39,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "dim"; } + static const int NumberOfChildren() { return 1; } 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 6cf27d22f..20acc420a 100644 --- a/poincare/include/poincare/matrix_inverse.h +++ b/poincare/include/poincare/matrix_inverse.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(MatrixInverseNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "MatrixInverse"; @@ -39,6 +39,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "inverse"; } + static const int NumberOfChildren() { return 1; } 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 1cfea24ab..a838f5d48 100644 --- a/poincare/include/poincare/matrix_trace.h +++ b/poincare/include/poincare/matrix_trace.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(MatrixTraceNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "MatrixTrace"; @@ -39,6 +39,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "trace"; } + static const int NumberOfChildren() { return 1; } 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 07464401e..20d8fe4f6 100644 --- a/poincare/include/poincare/matrix_transpose.h +++ b/poincare/include/poincare/matrix_transpose.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(MatrixTransposeNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "MatrixTranspose"; @@ -39,6 +39,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "transpose"; } + static const int NumberOfChildren() { return 1; } 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 e636f4c73..dd60e0511 100644 --- a/poincare/include/poincare/naperian_logarithm.h +++ b/poincare/include/poincare/naperian_logarithm.h @@ -10,7 +10,7 @@ class NaperianLogarithmNode final : public ExpressionNode { public: // TreeNode size_t size() const override { return sizeof(NaperianLogarithmNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "NaperianLogarithm"; @@ -49,6 +49,8 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "ln"; } + static const int NumberOfChildren() { return 1; } + 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 c501002d1..246ca9664 100644 --- a/poincare/include/poincare/nth_root.h +++ b/poincare/include/poincare/nth_root.h @@ -12,7 +12,7 @@ public: // TreeNode size_t size() const override { return sizeof(NthRootNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "NthRoot"; @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "root"; } + static const int NumberOfChildren() { return 2; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/permute_coefficient.h b/poincare/include/poincare/permute_coefficient.h index 440b6ef14..429eb162e 100644 --- a/poincare/include/poincare/permute_coefficient.h +++ b/poincare/include/poincare/permute_coefficient.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(PermuteCoefficientNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "PermuteCoefficient"; @@ -43,6 +43,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "permute"; } + static const int NumberOfChildren() { return 2; } // Expression 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 44725b70c..5c47e307d 100644 --- a/poincare/include/poincare/prediction_interval.h +++ b/poincare/include/poincare/prediction_interval.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(PredictionIntervalNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "PredictionInterval"; @@ -43,6 +43,7 @@ public: replaceChildAtIndexInPlace(1, child2); } static const char * Name() { return "prediction95"; } + static const int NumberOfChildren() { return 2; } // 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 b50bf2f85..68bc1c6e8 100644 --- a/poincare/include/poincare/product.h +++ b/poincare/include/poincare/product.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(3, operand3); } static const char * Name() { return "product"; } + static const int NumberOfChildren() { return 3; } }; } diff --git a/poincare/include/poincare/randint.h b/poincare/include/poincare/randint.h index f52b06608..20db8ec23 100644 --- a/poincare/include/poincare/randint.h +++ b/poincare/include/poincare/randint.h @@ -10,7 +10,7 @@ public: // TreeNode size_t size() const override { return sizeof(RandintNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Randint"; @@ -39,6 +39,7 @@ public: Randint(); Randint(const RandintNode * n) : Expression(n) {} static const char * Name() { return "randint"; } + static const int NumberOfChildren() { return 2; } }; } diff --git a/poincare/include/poincare/random.h b/poincare/include/poincare/random.h index 99a7f6297..c6a60c54f 100644 --- a/poincare/include/poincare/random.h +++ b/poincare/include/poincare/random.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(RandomNode); } - int numberOfChildren() const override { return 0; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Random"; @@ -42,6 +42,7 @@ public: Random(); Random(const RandomNode * n) : Expression(n) {} static const char * Name() { return "random"; } + static const int NumberOfChildren() { return 0; } template static T random(); private: diff --git a/poincare/include/poincare/real_part.h b/poincare/include/poincare/real_part.h index 5168f8fbf..74bee8175 100644 --- a/poincare/include/poincare/real_part.h +++ b/poincare/include/poincare/real_part.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(RealPartNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "RealPart"; @@ -46,6 +46,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "re"; } + static const int NumberOfChildren() { return 1; } 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 74fe89ea5..4a1369da3 100644 --- a/poincare/include/poincare/round.h +++ b/poincare/include/poincare/round.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(RoundNode); } - int numberOfChildren() const override { return 2; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Round"; @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(1, operand1); } static const char * Name() { return "round"; } + static const int NumberOfChildren() { return 2; } Expression shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols = true); }; diff --git a/poincare/include/poincare/sine.h b/poincare/include/poincare/sine.h index 3c4c0ebc6..b9b97db7c 100644 --- a/poincare/include/poincare/sine.h +++ b/poincare/include/poincare/sine.h @@ -12,7 +12,7 @@ public: // TreeNode size_t size() const override { return sizeof(SineNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Sine"; @@ -50,6 +50,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "sin"; } + static const int NumberOfChildren() { return 1; } 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 9db54dabd..6869b7878 100644 --- a/poincare/include/poincare/square_root.h +++ b/poincare/include/poincare/square_root.h @@ -14,7 +14,7 @@ public: // TreeNode size_t size() const override { return sizeof(SquareRootNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "SquareRoot"; @@ -49,6 +49,7 @@ public: constexpr static char k_name[2] = {Ion::Charset::Root, 0}; return k_name; } + static const int NumberOfChildren() { return 1; } 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 d87a21e10..cfbc317b5 100644 --- a/poincare/include/poincare/sum.h +++ b/poincare/include/poincare/sum.h @@ -41,6 +41,7 @@ public: replaceChildAtIndexInPlace(3, operand3); } static const char * Name() { return "sum"; } + static const int NumberOfChildren() { return 3; } }; } diff --git a/poincare/include/poincare/tangent.h b/poincare/include/poincare/tangent.h index 74863287f..66f012fa4 100644 --- a/poincare/include/poincare/tangent.h +++ b/poincare/include/poincare/tangent.h @@ -11,7 +11,7 @@ public: // TreeNode size_t size() const override { return sizeof(TangentNode); } - int numberOfChildren() const override { return 1; } + int numberOfChildren() const override; #if POINCARE_TREE_LOG virtual void logNodeName(std::ostream & stream) const override { stream << "Tangent"; @@ -48,6 +48,7 @@ public: replaceChildAtIndexInPlace(0, operand); } static const char * Name() { return "tan"; } + static const int NumberOfChildren() { return 1; } 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 2c5eb339c..8150886cd 100644 --- a/poincare/src/absolute_value.cpp +++ b/poincare/src/absolute_value.cpp @@ -8,6 +8,8 @@ namespace Poincare { +int AbsoluteValueNode::numberOfChildren() const { return AbsoluteValue::NumberOfChildren(); } + Expression AbsoluteValueNode::setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) { return AbsoluteValue(this).setSign(s, context, angleUnit); } diff --git a/poincare/src/arc_cosine.cpp b/poincare/src/arc_cosine.cpp index 15ffed8cb..4aa3add95 100644 --- a/poincare/src/arc_cosine.cpp +++ b/poincare/src/arc_cosine.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int ArcCosineNode::numberOfChildren() const { return ArcCosine::NumberOfChildren(); } + Layout ArcCosineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(ArcCosine(this), floatDisplayMode, numberOfSignificantDigits, ArcCosine::Name()); } diff --git a/poincare/src/arc_sine.cpp b/poincare/src/arc_sine.cpp index 52e607ee6..f6b214152 100644 --- a/poincare/src/arc_sine.cpp +++ b/poincare/src/arc_sine.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int ArcSineNode::numberOfChildren() const { return ArcSine::NumberOfChildren(); } + Layout ArcSineNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(ArcSine(this), floatDisplayMode, numberOfSignificantDigits, ArcSine::Name()); } diff --git a/poincare/src/arc_tangent.cpp b/poincare/src/arc_tangent.cpp index 19eb5fbd9..6fe794144 100644 --- a/poincare/src/arc_tangent.cpp +++ b/poincare/src/arc_tangent.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int ArcTangentNode::numberOfChildren() const { return ArcTangent::NumberOfChildren(); } + Layout ArcTangentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(ArcTangent(this), floatDisplayMode, numberOfSignificantDigits, ArcTangent::Name()); } diff --git a/poincare/src/binomial_coefficient.cpp b/poincare/src/binomial_coefficient.cpp index 40c37161e..59d00decd 100644 --- a/poincare/src/binomial_coefficient.cpp +++ b/poincare/src/binomial_coefficient.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int BinomialCoefficientNode::numberOfChildren() const { return BinomialCoefficient::NumberOfChildren(); } + Expression BinomialCoefficientNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return BinomialCoefficient(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/ceiling.cpp b/poincare/src/ceiling.cpp index c2077548c..a4ddca09e 100644 --- a/poincare/src/ceiling.cpp +++ b/poincare/src/ceiling.cpp @@ -11,6 +11,8 @@ namespace Poincare { +int CeilingNode::numberOfChildren() const { return Ceiling::NumberOfChildren(); } + Layout CeilingNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return CeilingLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } diff --git a/poincare/src/complex_argument.cpp b/poincare/src/complex_argument.cpp index 68fa253c0..38cd5eee3 100644 --- a/poincare/src/complex_argument.cpp +++ b/poincare/src/complex_argument.cpp @@ -9,6 +9,8 @@ extern "C" { namespace Poincare { +int ComplexArgumentNode::numberOfChildren() const { return ComplexArgument::NumberOfChildren(); } + Layout ComplexArgumentNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(ComplexArgument(this), floatDisplayMode, numberOfSignificantDigits, ComplexArgument::Name()); } @@ -44,7 +46,5 @@ Expression ComplexArgument::shallowReduce(Context & context, Preferences::AngleU return *this; } - - } diff --git a/poincare/src/confidence_interval.cpp b/poincare/src/confidence_interval.cpp index 525e1b485..fc4c807f2 100644 --- a/poincare/src/confidence_interval.cpp +++ b/poincare/src/confidence_interval.cpp @@ -11,6 +11,8 @@ namespace Poincare { +int ConfidenceIntervalNode::numberOfChildren() const { return ConfidenceInterval::NumberOfChildren(); } + Layout ConfidenceIntervalNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(ConfidenceInterval(this), floatDisplayMode, numberOfSignificantDigits, ConfidenceInterval::Name()); } diff --git a/poincare/src/conjugate.cpp b/poincare/src/conjugate.cpp index e70fe02ed..9860aedc2 100644 --- a/poincare/src/conjugate.cpp +++ b/poincare/src/conjugate.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int ConjugateNode::numberOfChildren() const { return Conjugate::NumberOfChildren(); } + Layout ConjugateNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return ConjugateLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } diff --git a/poincare/src/cosine.cpp b/poincare/src/cosine.cpp index 6442458d0..32c2d2e13 100644 --- a/poincare/src/cosine.cpp +++ b/poincare/src/cosine.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int CosineNode::numberOfChildren() const { return Cosine::NumberOfChildren(); } + float CosineNode::characteristicXRange(Context & context, Preferences::AngleUnit angleUnit) const { return Trigonometry::characteristicXRange(Cosine(this), context, angleUnit); } diff --git a/poincare/src/derivative.cpp b/poincare/src/derivative.cpp index de58e3bf0..d95f5bcf6 100644 --- a/poincare/src/derivative.cpp +++ b/poincare/src/derivative.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int DerivativeNode::numberOfChildren() const { return Derivative::NumberOfChildren(); } + int DerivativeNode::polynomialDegree(Context & context, const char * symbolName) const { if (childAtIndex(0)->polynomialDegree(context, symbolName) == 0 && childAtIndex(1)->polynomialDegree(context, symbolName) == 0 diff --git a/poincare/src/determinant.cpp b/poincare/src/determinant.cpp index 7a4319232..778940ad0 100644 --- a/poincare/src/determinant.cpp +++ b/poincare/src/determinant.cpp @@ -9,6 +9,8 @@ extern "C" { namespace Poincare { +int DeterminantNode::numberOfChildren() const { return Determinant::NumberOfChildren(); } + Layout DeterminantNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(Determinant(this), floatDisplayMode, numberOfSignificantDigits, Determinant::Name()); } diff --git a/poincare/src/division_quotient.cpp b/poincare/src/division_quotient.cpp index b7a6a8614..08d4e8cf9 100644 --- a/poincare/src/division_quotient.cpp +++ b/poincare/src/division_quotient.cpp @@ -8,6 +8,8 @@ namespace Poincare { +int DivisionQuotientNode::numberOfChildren() const { return DivisionQuotient::NumberOfChildren(); } + Expression DivisionQuotientNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return DivisionQuotient(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/division_remainder.cpp b/poincare/src/division_remainder.cpp index 5ee146ee4..219dc6bcb 100644 --- a/poincare/src/division_remainder.cpp +++ b/poincare/src/division_remainder.cpp @@ -8,6 +8,8 @@ namespace Poincare { +int DivisionRemainderNode::numberOfChildren() const { return DivisionRemainder::NumberOfChildren(); } + Layout DivisionRemainderNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(DivisionRemainder(this), floatDisplayMode, numberOfSignificantDigits, DivisionRemainder::Name()); } diff --git a/poincare/src/factor.cpp b/poincare/src/factor.cpp index bd03f0bca..640df12d0 100644 --- a/poincare/src/factor.cpp +++ b/poincare/src/factor.cpp @@ -14,6 +14,8 @@ extern "C" { namespace Poincare { +int FactorNode::numberOfChildren() const { return Factor::NumberOfChildren(); } + Layout FactorNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(Factor(this), floatDisplayMode, numberOfSignificantDigits, Factor::Name()); } diff --git a/poincare/src/floor.cpp b/poincare/src/floor.cpp index cfedd1635..c86089813 100644 --- a/poincare/src/floor.cpp +++ b/poincare/src/floor.cpp @@ -11,6 +11,8 @@ namespace Poincare { +int FloorNode::numberOfChildren() const { return Floor::NumberOfChildren(); } + Layout FloorNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return FloorLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } diff --git a/poincare/src/frac_part.cpp b/poincare/src/frac_part.cpp index f81320da3..7e7a89284 100644 --- a/poincare/src/frac_part.cpp +++ b/poincare/src/frac_part.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int FracPartNode::numberOfChildren() const { return FracPart::NumberOfChildren(); } + Layout FracPartNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(FracPart(this), floatDisplayMode, numberOfSignificantDigits, FracPart::Name()); } diff --git a/poincare/src/great_common_divisor.cpp b/poincare/src/great_common_divisor.cpp index 1fab2ee2f..77305b173 100644 --- a/poincare/src/great_common_divisor.cpp +++ b/poincare/src/great_common_divisor.cpp @@ -8,6 +8,8 @@ namespace Poincare { +int GreatCommonDivisorNode::numberOfChildren() const { return GreatCommonDivisor::NumberOfChildren(); } + Layout GreatCommonDivisorNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(GreatCommonDivisor(this), floatDisplayMode, numberOfSignificantDigits, GreatCommonDivisor::Name()); } diff --git a/poincare/src/imaginary_part.cpp b/poincare/src/imaginary_part.cpp index 755b14158..a7887c05c 100644 --- a/poincare/src/imaginary_part.cpp +++ b/poincare/src/imaginary_part.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int ImaginaryPartNode::numberOfChildren() const { return ImaginaryPart::NumberOfChildren(); } + Layout ImaginaryPartNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(ImaginaryPart(this), floatDisplayMode, numberOfSignificantDigits, ImaginaryPart::Name()); } diff --git a/poincare/src/integral.cpp b/poincare/src/integral.cpp index 20e304e7a..cf20c5524 100644 --- a/poincare/src/integral.cpp +++ b/poincare/src/integral.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int IntegralNode::numberOfChildren() const { return Integral::NumberOfChildren(); } + int IntegralNode::polynomialDegree(Context & context, const char * symbolName) const { if (childAtIndex(0)->polynomialDegree(context, symbolName) == 0 && childAtIndex(1)->polynomialDegree(context, symbolName) == 0 diff --git a/poincare/src/least_common_multiple.cpp b/poincare/src/least_common_multiple.cpp index 8c8d11be6..7a0909714 100644 --- a/poincare/src/least_common_multiple.cpp +++ b/poincare/src/least_common_multiple.cpp @@ -9,6 +9,8 @@ namespace Poincare { +int LeastCommonMultipleNode::numberOfChildren() const { return LeastCommonMultiple::NumberOfChildren(); } + Layout LeastCommonMultipleNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(LeastCommonMultiple(this), floatDisplayMode, numberOfSignificantDigits, LeastCommonMultiple::Name()); } diff --git a/poincare/src/logarithm.cpp b/poincare/src/logarithm.cpp index c6ed6ed14..6ea2c4416 100644 --- a/poincare/src/logarithm.cpp +++ b/poincare/src/logarithm.cpp @@ -20,6 +20,12 @@ namespace Poincare { +template<> +int LogarithmNode<1>::numberOfChildren() const { return CommonLogarithm::NumberOfChildren(); } + +template<> +int LogarithmNode<2>::numberOfChildren() const { return Logarithm::NumberOfChildren(); } + template<> Layout LogarithmNode<1>::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, CommonLogarithm::Name()); diff --git a/poincare/src/matrix_dimension.cpp b/poincare/src/matrix_dimension.cpp index 4581e0ab7..1fdd154b0 100644 --- a/poincare/src/matrix_dimension.cpp +++ b/poincare/src/matrix_dimension.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int MatrixDimensionNode::numberOfChildren() const { return MatrixDimension::NumberOfChildren(); } + Expression MatrixDimensionNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return MatrixDimension(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/matrix_inverse.cpp b/poincare/src/matrix_inverse.cpp index 107365230..79ab4ceca 100644 --- a/poincare/src/matrix_inverse.cpp +++ b/poincare/src/matrix_inverse.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int MatrixInverseNode::numberOfChildren() const { return MatrixInverse::NumberOfChildren(); } + Expression MatrixInverseNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return MatrixInverse(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/matrix_trace.cpp b/poincare/src/matrix_trace.cpp index ff4509b0e..3f25c406c 100644 --- a/poincare/src/matrix_trace.cpp +++ b/poincare/src/matrix_trace.cpp @@ -9,6 +9,8 @@ namespace Poincare { +int MatrixTraceNode::numberOfChildren() const { return MatrixTrace::NumberOfChildren(); } + Expression MatrixTraceNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return MatrixTrace(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/matrix_transpose.cpp b/poincare/src/matrix_transpose.cpp index c12102917..6cdb2775b 100644 --- a/poincare/src/matrix_transpose.cpp +++ b/poincare/src/matrix_transpose.cpp @@ -7,6 +7,9 @@ #include namespace Poincare { + +int MatrixTransposeNode::numberOfChildren() const { return MatrixTranspose::NumberOfChildren(); } + Expression MatrixTransposeNode::shallowReduce(Context & context, Preferences::AngleUnit angleUnit, bool replaceSymbols) { return MatrixTranspose(this).shallowReduce(context, angleUnit, replaceSymbols); } diff --git a/poincare/src/naperian_logarithm.cpp b/poincare/src/naperian_logarithm.cpp index e60354787..f5d1dd07b 100644 --- a/poincare/src/naperian_logarithm.cpp +++ b/poincare/src/naperian_logarithm.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int NaperianLogarithmNode::numberOfChildren() const { return NaperianLogarithm::NumberOfChildren(); } + Layout NaperianLogarithmNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(this, floatDisplayMode, numberOfSignificantDigits, NaperianLogarithm::Name()); } diff --git a/poincare/src/nth_root.cpp b/poincare/src/nth_root.cpp index 496105301..58ee716b0 100644 --- a/poincare/src/nth_root.cpp +++ b/poincare/src/nth_root.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int NthRootNode::numberOfChildren() const { return NthRoot::NumberOfChildren(); } + Layout NthRootNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return NthRootLayout( childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits), diff --git a/poincare/src/permute_coefficient.cpp b/poincare/src/permute_coefficient.cpp index 7a8b34d19..29562e65a 100644 --- a/poincare/src/permute_coefficient.cpp +++ b/poincare/src/permute_coefficient.cpp @@ -11,6 +11,8 @@ extern "C" { namespace Poincare { +int PermuteCoefficientNode::numberOfChildren() const { return PermuteCoefficient::NumberOfChildren(); } + Layout PermuteCoefficientNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(PermuteCoefficient(this), floatDisplayMode, numberOfSignificantDigits, PermuteCoefficient::Name()); } diff --git a/poincare/src/prediction_interval.cpp b/poincare/src/prediction_interval.cpp index eff4011b4..bb9a930aa 100644 --- a/poincare/src/prediction_interval.cpp +++ b/poincare/src/prediction_interval.cpp @@ -14,6 +14,8 @@ extern "C" { namespace Poincare { +int PredictionIntervalNode::numberOfChildren() const { return PredictionInterval::NumberOfChildren(); } + Layout PredictionIntervalNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(PredictionInterval(this), floatDisplayMode, numberOfSignificantDigits, PredictionInterval::Name()); } diff --git a/poincare/src/randint.cpp b/poincare/src/randint.cpp index f32488fd0..00ffb0a03 100644 --- a/poincare/src/randint.cpp +++ b/poincare/src/randint.cpp @@ -12,6 +12,8 @@ extern "C" { namespace Poincare { +int RandintNode::numberOfChildren() const { return Randint::NumberOfChildren(); } + Layout RandintNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(Randint(this), floatDisplayMode, numberOfSignificantDigits, Randint::Name()); } diff --git a/poincare/src/random.cpp b/poincare/src/random.cpp index 036724024..053c92c79 100644 --- a/poincare/src/random.cpp +++ b/poincare/src/random.cpp @@ -8,6 +8,8 @@ namespace Poincare { +int RandomNode::numberOfChildren() const { return Random::NumberOfChildren(); } + Expression RandomNode::setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) { return Random(this).setSign(s, context, angleUnit); } diff --git a/poincare/src/real_part.cpp b/poincare/src/real_part.cpp index e2d1e62fc..dad368088 100644 --- a/poincare/src/real_part.cpp +++ b/poincare/src/real_part.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int RealPartNode::numberOfChildren() const { return RealPart::NumberOfChildren(); } + Layout RealPartNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(RealPart(this), floatDisplayMode, numberOfSignificantDigits, RealPart::Name()); } diff --git a/poincare/src/round.cpp b/poincare/src/round.cpp index 52f68c130..ae1901ec6 100644 --- a/poincare/src/round.cpp +++ b/poincare/src/round.cpp @@ -9,6 +9,8 @@ namespace Poincare { +int RoundNode::numberOfChildren() const { return Round::NumberOfChildren(); } + Layout RoundNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return LayoutHelper::Prefix(Round(this), floatDisplayMode, numberOfSignificantDigits, Round::Name()); } diff --git a/poincare/src/sine.cpp b/poincare/src/sine.cpp index 53ab3798a..0c689c49a 100644 --- a/poincare/src/sine.cpp +++ b/poincare/src/sine.cpp @@ -7,6 +7,8 @@ namespace Poincare { +int SineNode::numberOfChildren() const { return Sine::NumberOfChildren(); } + float SineNode::characteristicXRange(Context & context, Preferences::AngleUnit angleUnit) const { return Trigonometry::characteristicXRange(Sine(this), context, angleUnit); } diff --git a/poincare/src/square_root.cpp b/poincare/src/square_root.cpp index 5c9d11538..b8cba4325 100644 --- a/poincare/src/square_root.cpp +++ b/poincare/src/square_root.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int SquareRootNode::numberOfChildren() const { return SquareRoot::NumberOfChildren(); } + Layout SquareRootNode::createLayout(Preferences::PrintFloatMode floatDisplayMode, int numberOfSignificantDigits) const { return NthRootLayout(childAtIndex(0)->createLayout(floatDisplayMode, numberOfSignificantDigits)); } diff --git a/poincare/src/tangent.cpp b/poincare/src/tangent.cpp index 2deb75063..f9b13001a 100644 --- a/poincare/src/tangent.cpp +++ b/poincare/src/tangent.cpp @@ -10,6 +10,8 @@ namespace Poincare { +int TangentNode::numberOfChildren() const { return Tangent::NumberOfChildren(); } + float TangentNode::characteristicXRange(Context & context, Preferences::AngleUnit angleUnit) const { return Trigonometry::characteristicXRange(Tangent(this), context, angleUnit); }