OLD | NEW |
1 /* vim:set ts=2 sw=2 et cindent: */ | 1 /* vim:set ts=2 sw=2 et cindent: */ |
2 /* ***** BEGIN LICENSE BLOCK ***** | 2 /* ***** BEGIN LICENSE BLOCK ***** |
3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 | 3 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 |
4 * | 4 * |
5 * The contents of this file are subject to the Mozilla Public License Version | 5 * The contents of this file are subject to the Mozilla Public License Version |
6 * 1.1 (the "License"); you may not use this file except in compliance with | 6 * 1.1 (the "License"); you may not use this file except in compliance with |
7 * the License. You may obtain a copy of the License at | 7 * the License. You may obtain a copy of the License at |
8 * http://www.mozilla.org/MPL/ | 8 * http://www.mozilla.org/MPL/ |
9 * | 9 * |
10 * Software distributed under the License is distributed on an "AS IS" basis, | 10 * Software distributed under the License is distributed on an "AS IS" basis, |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 #include "prlog.h" | 55 #include "prlog.h" |
56 | 56 |
57 class nsAString | 57 class nsAString |
58 { | 58 { |
59 public: | 59 public: |
60 typedef PRUnichar char_type; | 60 typedef PRUnichar char_type; |
61 typedef nsAString self_type; | 61 typedef nsAString self_type; |
62 typedef PRUint32 size_type; | 62 typedef PRUint32 size_type; |
63 typedef PRUint32 index_type; | 63 typedef PRUint32 index_type; |
64 | 64 |
| 65 // Force BeginReading into using PRUint16s instead of wchar_t on Windows. |
| 66 // This avoids errors when linking from a project compiled with /Zc:wchar_t. |
| 67 #if defined(WIN32) |
| 68 #define char_type PRUint16 |
| 69 #endif |
65 /** | 70 /** |
66 * Returns the length, beginning, and end of a string in one operation. | 71 * Returns the length, beginning, and end of a string in one operation. |
67 */ | 72 */ |
68 NS_HIDDEN_(PRUint32) BeginReading(const char_type **begin, | 73 NS_HIDDEN_(PRUint32) BeginReading(const char_type **begin, |
69 const char_type **end = nsnull) const; | 74 const char_type **end = nsnull) const; |
70 | 75 |
71 NS_HIDDEN_(const char_type*) BeginReading() const; | 76 NS_HIDDEN_(const char_type*) BeginReading() const; |
72 NS_HIDDEN_(const char_type*) EndReading() const; | 77 NS_HIDDEN_(const char_type*) EndReading() const; |
| 78 #if defined(WIN32) |
| 79 #undef char_type |
| 80 #endif |
73 | 81 |
74 NS_HIDDEN_(char_type) CharAt(PRUint32 aPos) const | 82 NS_HIDDEN_(char_type) CharAt(PRUint32 aPos) const |
75 { | 83 { |
76 NS_ASSERTION(aPos < Length(), "Out of bounds"); | 84 NS_ASSERTION(aPos < Length(), "Out of bounds"); |
77 return BeginReading()[aPos]; | 85 return BeginReading()[aPos]; |
78 } | 86 } |
79 NS_HIDDEN_(char_type) operator [](PRUint32 aPos) const | 87 NS_HIDDEN_(char_type) operator [](PRUint32 aPos) const |
80 { | 88 { |
81 return CharAt(aPos); | 89 return CharAt(aPos); |
82 } | 90 } |
(...skipping 695 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
778 NS_StringContainerInit2(*this, aData, aLength, 0); | 786 NS_StringContainerInit2(*this, aData, aLength, 0); |
779 } | 787 } |
780 | 788 |
781 ~nsString() | 789 ~nsString() |
782 { | 790 { |
783 NS_StringContainerFinish(*this); | 791 NS_StringContainerFinish(*this); |
784 } | 792 } |
785 | 793 |
786 const char_type* get() const | 794 const char_type* get() const |
787 { | 795 { |
| 796 #if defined(WIN32) |
| 797 return reinterpret_cast<const char_type*>(BeginReading()); |
| 798 #else |
788 return BeginReading(); | 799 return BeginReading(); |
| 800 #endif |
789 } | 801 } |
790 | 802 |
791 self_type& operator=(const self_type& aString) { Assign(aString);
return *this; } | 803 self_type& operator=(const self_type& aString) { Assign(aString);
return *this; } |
792 self_type& operator=(const abstract_string_type& aReadable) { Assign(aReadable
); return *this; } | 804 self_type& operator=(const abstract_string_type& aReadable) { Assign(aReadable
); return *this; } |
793 self_type& operator=(const char_type* aPtr) { Assign(aPtr);
return *this; } | 805 self_type& operator=(const char_type* aPtr) { Assign(aPtr);
return *this; } |
794 self_type& operator=(char_type aChar) { Assign(aChar);
return *this; } | 806 self_type& operator=(char_type aChar) { Assign(aChar);
return *this; } |
795 | 807 |
796 void Adopt(const char_type *aData, size_type aLength = PR_UINT32_MAX) | 808 void Adopt(const char_type *aData, size_type aLength = PR_UINT32_MAX) |
797 { | 809 { |
798 NS_StringContainerFinish(*this); | 810 NS_StringContainerFinish(*this); |
(...skipping 613 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1412 return NS_StringCloneData(aStr); | 1424 return NS_StringCloneData(aStr); |
1413 } | 1425 } |
1414 | 1426 |
1415 typedef nsString PromiseFlatString; | 1427 typedef nsString PromiseFlatString; |
1416 typedef nsCString PromiseFlatCString; | 1428 typedef nsCString PromiseFlatCString; |
1417 | 1429 |
1418 typedef nsCString nsCAutoString; | 1430 typedef nsCString nsCAutoString; |
1419 typedef nsString nsAutoString; | 1431 typedef nsString nsAutoString; |
1420 | 1432 |
1421 #endif // nsStringAPI_h__ | 1433 #endif // nsStringAPI_h__ |
OLD | NEW |