| OLD | NEW |
| 1 /* | 1 /* |
| 2 * (C) 1999 Lars Knoll (knoll@kde.org) | 2 * (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. | 3 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Apple Inc.
All rights reserved. |
| 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, |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 67 // FIXME: Like the strict functions above, these give false for "ok" when there
is trailing garbage. | 67 // FIXME: Like the strict functions above, these give false for "ok" when there
is trailing garbage. |
| 68 // Like the non-strict functions above, these return the value when there is tra
iling garbage. | 68 // Like the non-strict functions above, these return the value when there is tra
iling garbage. |
| 69 // It would be better if these were more consistent with the above functions ins
tead. | 69 // It would be better if these were more consistent with the above functions ins
tead. |
| 70 WTF_EXPORT double charactersToDouble(const LChar*, size_t, bool* ok = 0); | 70 WTF_EXPORT double charactersToDouble(const LChar*, size_t, bool* ok = 0); |
| 71 WTF_EXPORT double charactersToDouble(const UChar*, size_t, bool* ok = 0); | 71 WTF_EXPORT double charactersToDouble(const UChar*, size_t, bool* ok = 0); |
| 72 WTF_EXPORT float charactersToFloat(const LChar*, size_t, bool* ok = 0); | 72 WTF_EXPORT float charactersToFloat(const LChar*, size_t, bool* ok = 0); |
| 73 WTF_EXPORT float charactersToFloat(const UChar*, size_t, bool* ok = 0); | 73 WTF_EXPORT float charactersToFloat(const UChar*, size_t, bool* ok = 0); |
| 74 WTF_EXPORT float charactersToFloat(const LChar*, size_t, size_t& parsedLength); | 74 WTF_EXPORT float charactersToFloat(const LChar*, size_t, size_t& parsedLength); |
| 75 WTF_EXPORT float charactersToFloat(const UChar*, size_t, size_t& parsedLength); | 75 WTF_EXPORT float charactersToFloat(const UChar*, size_t, size_t& parsedLength); |
| 76 | 76 |
| 77 class ASCIILiteral; | |
| 78 | |
| 79 enum TrailingZerosTruncatingPolicy { | 77 enum TrailingZerosTruncatingPolicy { |
| 80 KeepTrailingZeros, | 78 KeepTrailingZeros, |
| 81 TruncateTrailingZeros | 79 TruncateTrailingZeros |
| 82 }; | 80 }; |
| 83 | 81 |
| 84 template<bool isSpecialCharacter(UChar), typename CharacterType> | 82 template<bool isSpecialCharacter(UChar), typename CharacterType> |
| 85 bool isAllSpecialCharacters(const CharacterType*, size_t); | 83 bool isAllSpecialCharacters(const CharacterType*, size_t); |
| 86 | 84 |
| 85 // FIXME: Remove this class once all callers are gone. |
| 86 class ASCIILiteral { |
| 87 public: |
| 88 explicit ASCIILiteral(const char* characters) : m_characters(characters) { } |
| 89 operator const char*() { return m_characters; } |
| 90 |
| 91 private: |
| 92 const char* m_characters; |
| 93 }; |
| 94 |
| 87 class WTF_EXPORT String { | 95 class WTF_EXPORT String { |
| 88 public: | 96 public: |
| 89 // Construct a null string, distinguishable from an empty string. | 97 // Construct a null string, distinguishable from an empty string. |
| 90 String() { } | 98 String() { } |
| 91 | 99 |
| 92 // Construct a string with UTF-16 data. | 100 // Construct a string with UTF-16 data. |
| 93 String(const UChar* characters, unsigned length); | 101 String(const UChar* characters, unsigned length); |
| 94 | 102 |
| 95 // Construct a string by copying the contents of a vector. | 103 // Construct a string by copying the contents of a vector. |
| 96 // This method will never create a null string. Vectors with size() == 0 | 104 // This method will never create a null string. Vectors with size() == 0 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 111 | 119 |
| 112 // Construct a string with latin1 data, from a null-terminated source. | 120 // Construct a string with latin1 data, from a null-terminated source. |
| 113 String(const LChar* characters); | 121 String(const LChar* characters); |
| 114 String(const char* characters); | 122 String(const char* characters); |
| 115 | 123 |
| 116 // Construct a string referencing an existing StringImpl. | 124 // Construct a string referencing an existing StringImpl. |
| 117 String(StringImpl* impl) : m_impl(impl) { } | 125 String(StringImpl* impl) : m_impl(impl) { } |
| 118 String(PassRefPtr<StringImpl> impl) : m_impl(impl) { } | 126 String(PassRefPtr<StringImpl> impl) : m_impl(impl) { } |
| 119 String(RefPtr<StringImpl> impl) : m_impl(impl) { } | 127 String(RefPtr<StringImpl> impl) : m_impl(impl) { } |
| 120 | 128 |
| 121 // Construct a string from a constant string literal. | 129 // FIXME: Remove this API once all callers are gone. |
| 122 String(ASCIILiteral characters); | |
| 123 | |
| 124 // Construct a string from a constant string literal. | |
| 125 // This constructor is the "big" version, as it put the length in the functi
on call and generate bigger code. | |
| 126 enum ConstructFromLiteralTag { ConstructFromLiteral }; | 130 enum ConstructFromLiteralTag { ConstructFromLiteral }; |
| 127 template<unsigned charactersCount> | 131 String(const char* characters, ConstructFromLiteralTag) : m_impl(StringImpl:
:create(reinterpret_cast<const LChar*>(characters))) { } |
| 128 String(const char (&characters)[charactersCount], ConstructFromLiteralTag) :
m_impl(StringImpl::createFromLiteral<charactersCount>(characters)) { } | 132 String(ASCIILiteral literal) : m_impl(StringImpl::create(reinterpret_cast<co
nst LChar*>(static_cast<const char*>(literal)))) { } |
| 129 | 133 |
| 130 #if COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES) | 134 #if COMPILER_SUPPORTS(CXX_RVALUE_REFERENCES) |
| 131 // We have to declare the copy constructor and copy assignment operator as w
ell, otherwise | 135 // We have to declare the copy constructor and copy assignment operator as w
ell, otherwise |
| 132 // they'll be implicitly deleted by adding the move constructor and move ass
ignment operator. | 136 // they'll be implicitly deleted by adding the move constructor and move ass
ignment operator. |
| 133 String(const String& other) : m_impl(other.m_impl) { } | 137 String(const String& other) : m_impl(other.m_impl) { } |
| 134 String(String&& other) : m_impl(other.m_impl.release()) { } | 138 String(String&& other) : m_impl(other.m_impl.release()) { } |
| 135 String& operator=(const String& other) { m_impl = other.m_impl; return *this
; } | 139 String& operator=(const String& other) { m_impl = other.m_impl; return *this
; } |
| 136 String& operator=(String&& other) { m_impl = other.m_impl.release(); return
*this; } | 140 String& operator=(String&& other) { m_impl = other.m_impl.release(); return
*this; } |
| 137 #endif | 141 #endif |
| 138 | 142 |
| (...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 683 } | 687 } |
| 684 | 688 |
| 685 // StringHash is the default hash for String | 689 // StringHash is the default hash for String |
| 686 template<typename T> struct DefaultHash; | 690 template<typename T> struct DefaultHash; |
| 687 template<> struct DefaultHash<String> { | 691 template<> struct DefaultHash<String> { |
| 688 typedef StringHash Hash; | 692 typedef StringHash Hash; |
| 689 }; | 693 }; |
| 690 | 694 |
| 691 template <> struct VectorTraits<String> : SimpleClassVectorTraits { }; | 695 template <> struct VectorTraits<String> : SimpleClassVectorTraits { }; |
| 692 | 696 |
| 693 class ASCIILiteral { | |
| 694 public: | |
| 695 explicit ASCIILiteral(const char* characters) : m_characters(characters) { } | |
| 696 operator const char*() { return m_characters; } | |
| 697 | |
| 698 private: | |
| 699 const char* m_characters; | |
| 700 }; | |
| 701 | |
| 702 // Shared global empty string. | 697 // Shared global empty string. |
| 703 WTF_EXPORT const String& emptyString(); | 698 WTF_EXPORT const String& emptyString(); |
| 704 | 699 |
| 705 } | 700 } |
| 706 | 701 |
| 707 using WTF::CString; | 702 using WTF::CString; |
| 708 using WTF::KeepTrailingZeros; | 703 using WTF::KeepTrailingZeros; |
| 709 using WTF::String; | 704 using WTF::String; |
| 710 using WTF::emptyString; | 705 using WTF::emptyString; |
| 711 using WTF::append; | 706 using WTF::append; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 726 using WTF::equal; | 721 using WTF::equal; |
| 727 using WTF::equalIgnoringCase; | 722 using WTF::equalIgnoringCase; |
| 728 using WTF::find; | 723 using WTF::find; |
| 729 using WTF::isAllSpecialCharacters; | 724 using WTF::isAllSpecialCharacters; |
| 730 using WTF::isSpaceOrNewline; | 725 using WTF::isSpaceOrNewline; |
| 731 using WTF::reverseFind; | 726 using WTF::reverseFind; |
| 732 using WTF::ASCIILiteral; | 727 using WTF::ASCIILiteral; |
| 733 | 728 |
| 734 #include "wtf/text/AtomicString.h" | 729 #include "wtf/text/AtomicString.h" |
| 735 #endif | 730 #endif |
| OLD | NEW |