Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(31)

Side by Side Diff: third_party/WebKit/Source/wtf/text/IntegerToStringConversion.h

Issue 1611343002: wtf reformat test Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: pydent Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2012 Apple Inc. All Rights Reserved.
3 * Copyright (C) 2012 Patrick Gansterer <paroga@paroga.com> 3 * Copyright (C) 2012 Patrick Gansterer <paroga@paroga.com>
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details. 13 * Library General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
19 * 19 *
20 */ 20 */
21 21
22 #ifndef IntegerToStringConversion_h 22 #ifndef IntegerToStringConversion_h
23 #define IntegerToStringConversion_h 23 #define IntegerToStringConversion_h
24 24
25 #include "wtf/text/StringBuilder.h" 25 #include "wtf/text/StringBuilder.h"
26 #include "wtf/text/StringImpl.h" 26 #include "wtf/text/StringImpl.h"
27 27
28 namespace WTF { 28 namespace WTF {
29 29
30 enum PositiveOrNegativeNumber { 30 enum PositiveOrNegativeNumber { PositiveNumber, NegativeNumber };
31 PositiveNumber, 31
32 NegativeNumber 32 template <typename T>
33 struct ConversionTrait;
34
35 template <>
36 struct ConversionTrait<String> {
37 typedef PassRefPtr<StringImpl> ReturnType;
38 typedef void AdditionalArgumentType;
39 static inline ReturnType flush(LChar* characters, unsigned length, void*) {
40 return StringImpl::create(characters, length);
41 }
42 };
43 template <>
44 struct ConversionTrait<StringBuilder> {
45 typedef void ReturnType;
46 typedef StringBuilder AdditionalArgumentType;
47 static inline ReturnType flush(LChar* characters,
48 unsigned length,
49 StringBuilder* stringBuilder) {
50 stringBuilder->append(characters, length);
51 }
52 };
53 template <>
54 struct ConversionTrait<AtomicString> {
55 typedef AtomicString ReturnType;
56 typedef void AdditionalArgumentType;
57 static inline ReturnType flush(LChar* characters, unsigned length, void*) {
58 return AtomicString(characters, length);
59 }
33 }; 60 };
34 61
35 template<typename T> struct ConversionTrait; 62 template <typename T>
63 struct UnsignedIntegerTrait;
36 64
37 template<> struct ConversionTrait<String> { 65 template <>
38 typedef PassRefPtr<StringImpl> ReturnType; 66 struct UnsignedIntegerTrait<int> {
39 typedef void AdditionalArgumentType; 67 typedef unsigned Type;
40 static inline ReturnType flush(LChar* characters, unsigned length, void*) { return StringImpl::create(characters, length); }
41 }; 68 };
42 template<> struct ConversionTrait<StringBuilder> { 69 template <>
43 typedef void ReturnType; 70 struct UnsignedIntegerTrait<long> {
44 typedef StringBuilder AdditionalArgumentType; 71 typedef unsigned long Type;
45 static inline ReturnType flush(LChar* characters, unsigned length, StringBui lder* stringBuilder) { stringBuilder->append(characters, length); }
46 }; 72 };
47 template<> struct ConversionTrait<AtomicString> { 73 template <>
48 typedef AtomicString ReturnType; 74 struct UnsignedIntegerTrait<long long> {
49 typedef void AdditionalArgumentType; 75 typedef unsigned long long Type;
50 static inline ReturnType flush(LChar* characters, unsigned length, void*) { return AtomicString(characters, length); }
51 }; 76 };
52 77
53 template<typename T> struct UnsignedIntegerTrait; 78 template <typename T,
79 typename UnsignedIntegerType,
80 PositiveOrNegativeNumber NumberType>
81 static typename ConversionTrait<T>::ReturnType numberToStringImpl(
82 UnsignedIntegerType number,
83 typename ConversionTrait<T>::AdditionalArgumentType* additionalArgument) {
84 LChar buf[sizeof(UnsignedIntegerType) * 3 + 1];
85 LChar* end = buf + WTF_ARRAY_LENGTH(buf);
86 LChar* p = end;
54 87
55 template<> struct UnsignedIntegerTrait<int> { 88 do {
56 typedef unsigned Type; 89 *--p = static_cast<LChar>((number % 10) + '0');
57 }; 90 number /= 10;
58 template<> struct UnsignedIntegerTrait<long> { 91 } while (number);
59 typedef unsigned long Type;
60 };
61 template<> struct UnsignedIntegerTrait<long long> {
62 typedef unsigned long long Type;
63 };
64 92
65 template<typename T, typename UnsignedIntegerType, PositiveOrNegativeNumber Numb erType> 93 if (NumberType == NegativeNumber)
66 static typename ConversionTrait<T>::ReturnType numberToStringImpl(UnsignedIntege rType number, typename ConversionTrait<T>::AdditionalArgumentType* additionalArg ument) 94 *--p = '-';
67 {
68 LChar buf[sizeof(UnsignedIntegerType) * 3 + 1];
69 LChar* end = buf + WTF_ARRAY_LENGTH(buf);
70 LChar* p = end;
71 95
72 do { 96 return ConversionTrait<T>::flush(p, static_cast<unsigned>(end - p),
73 *--p = static_cast<LChar>((number % 10) + '0'); 97 additionalArgument);
74 number /= 10;
75 } while (number);
76
77 if (NumberType == NegativeNumber)
78 *--p = '-';
79
80 return ConversionTrait<T>::flush(p, static_cast<unsigned>(end - p), addition alArgument);
81 } 98 }
82 99
83 template<typename T, typename SignedIntegerType> 100 template <typename T, typename SignedIntegerType>
84 inline typename ConversionTrait<T>::ReturnType numberToStringSigned(SignedIntege rType number, typename ConversionTrait<T>::AdditionalArgumentType* additionalArg ument = 0) 101 inline typename ConversionTrait<T>::ReturnType numberToStringSigned(
85 { 102 SignedIntegerType number,
86 if (number < 0) 103 typename ConversionTrait<T>::AdditionalArgumentType* additionalArgument =
87 return numberToStringImpl<T, typename UnsignedIntegerTrait<SignedInteger Type>::Type, NegativeNumber>(-number, additionalArgument); 104 0) {
88 return numberToStringImpl<T, typename UnsignedIntegerTrait<SignedIntegerType >::Type, PositiveNumber>(number, additionalArgument); 105 if (number < 0)
106 return numberToStringImpl<
107 T, typename UnsignedIntegerTrait<SignedIntegerType>::Type,
108 NegativeNumber>(-number, additionalArgument);
109 return numberToStringImpl<
110 T, typename UnsignedIntegerTrait<SignedIntegerType>::Type,
111 PositiveNumber>(number, additionalArgument);
89 } 112 }
90 113
91 template<typename T, typename UnsignedIntegerType> 114 template <typename T, typename UnsignedIntegerType>
92 inline typename ConversionTrait<T>::ReturnType numberToStringUnsigned(UnsignedIn tegerType number, typename ConversionTrait<T>::AdditionalArgumentType* additiona lArgument = 0) 115 inline typename ConversionTrait<T>::ReturnType numberToStringUnsigned(
93 { 116 UnsignedIntegerType number,
94 return numberToStringImpl<T, UnsignedIntegerType, PositiveNumber>(number, ad ditionalArgument); 117 typename ConversionTrait<T>::AdditionalArgumentType* additionalArgument =
118 0) {
119 return numberToStringImpl<T, UnsignedIntegerType, PositiveNumber>(
120 number, additionalArgument);
95 } 121 }
96 122
97 } // namespace WTF 123 } // namespace WTF
98 124
99 #endif // IntegerToStringConversion_h 125 #endif // IntegerToStringConversion_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/wtf/text/Collator.h ('k') | third_party/WebKit/Source/wtf/text/StringBuffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698