15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2010 Apple Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2302772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h" 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "DecimalNumber.h" 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WTF { 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)unsigned DecimalNumber::bufferLengthForStringDecimal() const 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned length = 0; 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if the exponent is negative the number decimal representation is of the form: 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [<sign>]0.[<zeros>]<significand> 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_exponent < 0) { 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += 2; // for "0." 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += -m_exponent - 1; 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += m_precision; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned digitsBeforeDecimalPoint = m_exponent + 1; 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the precision is <= than the number of digits to get up to the decimal 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // point, then there is no fractional part, number is of the form: 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [<sign>]<significand>[<zeros>] 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_precision <= digitsBeforeDecimalPoint) { 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += m_precision; 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += digitsBeforeDecimalPoint - m_precision; 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we get here, number starts before the decimal point, and ends after it, 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // as such is of the form: 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [<sign>]<significand-begin>.<significand-end> 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += digitsBeforeDecimalPoint; 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; // for decimal point 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += m_precision - digitsBeforeDecimalPoint; 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)unsigned DecimalNumber::bufferLengthForStringExponential() const 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned length = 0; 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the significand 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_precision > 1) { 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; // for decimal point 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += m_precision - 1; 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add "e+" or "e-" 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) length += 2; 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int exponent = (m_exponent >= 0) ? m_exponent : -m_exponent; 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the exponent 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (exponent >= 100) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (exponent >= 10) 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ++length; 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)unsigned DecimalNumber::toStringDecimal(LChar* buffer, unsigned bufferLength) const 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT_UNUSED(bufferLength, bufferLength >= bufferLengthForStringDecimal()); 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Should always be at least one digit to add to the string! 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_precision); 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LChar* next = buffer; 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // if the exponent is negative the number decimal representation is of the form: 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [<sign>]0.[<zeros>]<significand> 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_exponent < 0) { 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned zeros = -m_exponent - 1; 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '-'; 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '0'; 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '.'; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = 0; i < zeros; ++i) 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '0'; 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = 0; i < m_precision; ++i) 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = m_significand[i]; 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return next - buffer; 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned digitsBeforeDecimalPoint = m_exponent + 1; 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If the precision is <= than the number of digits to get up to the decimal 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // point, then there is no fractional part, number is of the form: 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [<sign>]<significand>[<zeros>] 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_precision <= digitsBeforeDecimalPoint) { 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '-'; 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = 0; i < m_precision; ++i) 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = m_significand[i]; 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = 0; i < (digitsBeforeDecimalPoint - m_precision); ++i) 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '0'; 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return next - buffer; 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // If we get here, number starts before the decimal point, and ends after it, 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // as such is of the form: 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // [<sign>]<significand-begin>.<significand-end> 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '-'; 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = 0; i < digitsBeforeDecimalPoint; ++i) 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = m_significand[i]; 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '.'; 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = digitsBeforeDecimalPoint; i < m_precision; ++i) 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = m_significand[i]; 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return next - buffer; 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)unsigned DecimalNumber::toStringExponential(LChar* buffer, unsigned bufferLength) const 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT_UNUSED(bufferLength, bufferLength >= bufferLengthForStringExponential()); 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Should always be at least one digit to add to the string! 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ASSERT(m_precision); 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LChar* next = buffer; 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the sign 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_sign) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '-'; 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the significand 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = m_significand[0]; 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_precision > 1) { 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '.'; 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (unsigned i = 1; i < m_precision; ++i) 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = m_significand[i]; 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add "e+" or "e-" 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = 'e'; 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) int exponent; 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (m_exponent >= 0) { 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '+'; 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) exponent = m_exponent; 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else { 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '-'; 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) exponent = -m_exponent; 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Add the exponent 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (exponent >= 100) 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '0' + exponent / 100; 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (exponent >= 10) 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '0' + (exponent % 100) / 10; 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *next++ = '0' + exponent % 10; 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return next - buffer; 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WTF 197