~ubuntu-branches/ubuntu/raring/qtwebkit-source/raring-proposed

« back to all changes in this revision

Viewing changes to Source/WTF/wtf/dtoa.h

  • Committer: Package Import Robot
  • Author(s): Jonathan Riddell
  • Date: 2013-02-18 14:24:18 UTC
  • Revision ID: package-import@ubuntu.com-20130218142418-eon0jmjg3nj438uy
Tags: upstream-2.3
ImportĀ upstreamĀ versionĀ 2.3

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 *  Copyright (C) 2003, 2008, 2012 Apple Inc. All rights reserved.
 
3
 *
 
4
 *  This library is free software; you can redistribute it and/or
 
5
 *  modify it under the terms of the GNU Library General Public
 
6
 *  License as published by the Free Software Foundation; either
 
7
 *  version 2 of the License, or (at your option) any later version.
 
8
 *
 
9
 *  This library is distributed in the hope that it will be useful,
 
10
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 
11
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 
12
 *  Library General Public License for more details.
 
13
 *
 
14
 *  You should have received a copy of the GNU Library General Public License
 
15
 *  along with this library; see the file COPYING.LIB.  If not, write to
 
16
 *  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
17
 *  Boston, MA 02110-1301, USA.
 
18
 *
 
19
 */
 
20
 
 
21
#ifndef WTF_dtoa_h
 
22
#define WTF_dtoa_h
 
23
 
 
24
#include <wtf/ASCIICType.h>
 
25
#include <wtf/dtoa/double-conversion.h>
 
26
#include <wtf/unicode/Unicode.h>
 
27
 
 
28
namespace WTF {
 
29
 
 
30
class Mutex;
 
31
 
 
32
extern Mutex* s_dtoaP5Mutex;
 
33
 
 
34
typedef char DtoaBuffer[80];
 
35
 
 
36
WTF_EXPORT_PRIVATE void dtoa(DtoaBuffer result, double dd, bool& sign, int& exponent, unsigned& precision);
 
37
WTF_EXPORT_PRIVATE void dtoaRoundSF(DtoaBuffer result, double dd, int ndigits, bool& sign, int& exponent, unsigned& precision);
 
38
WTF_EXPORT_PRIVATE void dtoaRoundDP(DtoaBuffer result, double dd, int ndigits, bool& sign, int& exponent, unsigned& precision);
 
39
 
 
40
// Size = 80 for sizeof(DtoaBuffer) + some sign bits, decimal point, 'e', exponent digits.
 
41
const unsigned NumberToStringBufferLength = 96;
 
42
typedef char NumberToStringBuffer[NumberToStringBufferLength];
 
43
typedef LChar NumberToLStringBuffer[NumberToStringBufferLength];
 
44
 
 
45
WTF_EXPORT_PRIVATE const char* numberToString(double, NumberToStringBuffer);
 
46
WTF_EXPORT_PRIVATE const char* numberToFixedPrecisionString(double, unsigned significantFigures, NumberToStringBuffer, bool truncateTrailingZeros = false);
 
47
WTF_EXPORT_PRIVATE const char* numberToFixedWidthString(double, unsigned decimalPlaces, NumberToStringBuffer);
 
48
 
 
49
double parseDouble(const LChar* string, size_t length, size_t& parsedLength);
 
50
double parseDouble(const UChar* string, size_t length, size_t& parsedLength);
 
51
 
 
52
namespace Internal {
 
53
    WTF_EXPORT_PRIVATE double parseDoubleFromLongString(const UChar* string, size_t length, size_t& parsedLength);
 
54
}
 
55
 
 
56
inline double parseDouble(const LChar* string, size_t length, size_t& parsedLength)
 
57
{
 
58
    return double_conversion::StringToDoubleConverter::StringToDouble(reinterpret_cast<const char*>(string), length, &parsedLength);
 
59
}
 
60
 
 
61
inline double parseDouble(const UChar* string, size_t length, size_t& parsedLength)
 
62
{
 
63
    const size_t conversionBufferSize = 64;
 
64
    if (length > conversionBufferSize)
 
65
        return Internal::parseDoubleFromLongString(string, length, parsedLength);
 
66
    LChar conversionBuffer[conversionBufferSize];
 
67
    for (int i = 0; i < static_cast<int>(length); ++i)
 
68
        conversionBuffer[i] = isASCII(string[i]) ? string[i] : 0;
 
69
    return parseDouble(conversionBuffer, length, parsedLength);
 
70
}
 
71
    
 
72
} // namespace WTF
 
73
 
 
74
using WTF::NumberToStringBuffer;
 
75
using WTF::NumberToLStringBuffer;
 
76
using WTF::numberToString;
 
77
using WTF::numberToFixedPrecisionString;
 
78
using WTF::numberToFixedWidthString;
 
79
using WTF::parseDouble;
 
80
 
 
81
#endif // WTF_dtoa_h