From 48ee8f85d29f0dff5682dfa925c53d33be11f1ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9a=20Saviot?= Date: Thu, 27 Sep 2018 16:32:22 +0200 Subject: [PATCH] [poincare] Clean Rational and Decimal size() methods --- poincare/src/decimal.cpp | 8 ++++++-- poincare/src/rational.cpp | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/poincare/src/decimal.cpp b/poincare/src/decimal.cpp index 9f43cb1f5..e7b93577f 100644 --- a/poincare/src/decimal.cpp +++ b/poincare/src/decimal.cpp @@ -47,8 +47,12 @@ void DecimalNode::initToMatchSize(size_t goalSize) { assert(size() == goalSize); } +static size_t DecimalSize(uint8_t numberOfDigitsInMantissa) { + return sizeof(DecimalNode)+ sizeof(native_uint_t)*numberOfDigitsInMantissa; +} + size_t DecimalNode::size() const { - return sizeof(DecimalNode)+ sizeof(native_uint_t)*m_numberOfDigitsInMantissa; + return DecimalSize(m_numberOfDigitsInMantissa); } Expression DecimalNode::setSign(Sign s, Context & context, Preferences::AngleUnit angleUnit) { @@ -320,7 +324,7 @@ Decimal::Decimal(T f) : Number() { /* We do not get rid of the useless 0s ending the mantissa here because we want * to keep them if they were entered by the user. */ Decimal::Decimal(Integer m, int e) : - Decimal(sizeof(DecimalNode)+m.numberOfDigits()*sizeof(native_uint_t), m, e) {} + Decimal(DecimalSize(m.numberOfDigits()), m, e) {} Decimal::Decimal(size_t size, const Integer & m, int e) : Number(TreePool::sharedPool()->createTreeNode(size)) { diff --git a/poincare/src/rational.cpp b/poincare/src/rational.cpp index 23c293fa7..8ab7ff96c 100644 --- a/poincare/src/rational.cpp +++ b/poincare/src/rational.cpp @@ -55,7 +55,7 @@ Integer RationalNode::denominator() const { // Tree Node -static inline size_t RationalSize(uint8_t numeratorNumberOfDigits, uint8_t denominatorNumberOfDigits) { +static size_t RationalSize(uint8_t numeratorNumberOfDigits, uint8_t denominatorNumberOfDigits) { uint8_t realNumeratorSize = numeratorNumberOfDigits > Integer::k_maxNumberOfDigits ? 0 : numeratorNumberOfDigits; uint8_t realDenominatorSize = denominatorNumberOfDigits > Integer::k_maxNumberOfDigits ? 0 : denominatorNumberOfDigits; return sizeof(RationalNode) + sizeof(native_uint_t)*(realNumeratorSize + realDenominatorSize);