OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #include <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include <algorithm> | 9 #include <algorithm> |
10 #include <cctype> | 10 #include <cctype> |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
96 m_pData->m_String[0] = ch; | 96 m_pData->m_String[0] = ch; |
97 } | 97 } |
98 } | 98 } |
99 CFX_WideString::CFX_WideString(const CFX_WideStringC& str) { | 99 CFX_WideString::CFX_WideString(const CFX_WideStringC& str) { |
100 if (str.IsEmpty()) { | 100 if (str.IsEmpty()) { |
101 m_pData = NULL; | 101 m_pData = NULL; |
102 return; | 102 return; |
103 } | 103 } |
104 m_pData = StringData::Create(str.GetLength()); | 104 m_pData = StringData::Create(str.GetLength()); |
105 if (m_pData) { | 105 if (m_pData) { |
106 FXSYS_memcpy(m_pData->m_String, str.GetPtr(), | 106 FXSYS_memcpy(m_pData->m_String, str.raw_str(), |
107 str.GetLength() * sizeof(FX_WCHAR)); | 107 str.GetLength() * sizeof(FX_WCHAR)); |
108 } | 108 } |
109 } | 109 } |
110 CFX_WideString::CFX_WideString(const CFX_WideStringC& str1, | 110 CFX_WideString::CFX_WideString(const CFX_WideStringC& str1, |
111 const CFX_WideStringC& str2) { | 111 const CFX_WideStringC& str2) { |
112 m_pData = NULL; | 112 m_pData = NULL; |
113 int nNewLen = str1.GetLength() + str2.GetLength(); | 113 int nNewLen = str1.GetLength() + str2.GetLength(); |
114 if (nNewLen == 0) { | 114 if (nNewLen == 0) { |
115 return; | 115 return; |
116 } | 116 } |
117 m_pData = StringData::Create(nNewLen); | 117 m_pData = StringData::Create(nNewLen); |
118 if (m_pData) { | 118 if (m_pData) { |
119 FXSYS_memcpy(m_pData->m_String, str1.GetPtr(), | 119 FXSYS_memcpy(m_pData->m_String, str1.raw_str(), |
120 str1.GetLength() * sizeof(FX_WCHAR)); | 120 str1.GetLength() * sizeof(FX_WCHAR)); |
121 FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.GetPtr(), | 121 FXSYS_memcpy(m_pData->m_String + str1.GetLength(), str2.raw_str(), |
122 str2.GetLength() * sizeof(FX_WCHAR)); | 122 str2.GetLength() * sizeof(FX_WCHAR)); |
123 } | 123 } |
124 } | 124 } |
125 void CFX_WideString::ReleaseBuffer(FX_STRSIZE nNewLength) { | 125 void CFX_WideString::ReleaseBuffer(FX_STRSIZE nNewLength) { |
126 if (!m_pData) { | 126 if (!m_pData) { |
127 return; | 127 return; |
128 } | 128 } |
129 CopyBeforeWrite(); | 129 CopyBeforeWrite(); |
130 if (nNewLength == -1) { | 130 if (nNewLength == -1) { |
131 nNewLength = m_pData ? FXSYS_wcslen(m_pData->m_String) : 0; | 131 nNewLength = m_pData ? FXSYS_wcslen(m_pData->m_String) : 0; |
(...skipping 12 matching lines...) Expand all Loading... |
144 } else { | 144 } else { |
145 AssignCopy(FXSYS_wcslen(lpsz), lpsz); | 145 AssignCopy(FXSYS_wcslen(lpsz), lpsz); |
146 } | 146 } |
147 return *this; | 147 return *this; |
148 } | 148 } |
149 const CFX_WideString& CFX_WideString::operator=( | 149 const CFX_WideString& CFX_WideString::operator=( |
150 const CFX_WideStringC& stringSrc) { | 150 const CFX_WideStringC& stringSrc) { |
151 if (stringSrc.IsEmpty()) { | 151 if (stringSrc.IsEmpty()) { |
152 Empty(); | 152 Empty(); |
153 } else { | 153 } else { |
154 AssignCopy(stringSrc.GetLength(), stringSrc.GetPtr()); | 154 AssignCopy(stringSrc.GetLength(), stringSrc.raw_str()); |
155 } | 155 } |
156 return *this; | 156 return *this; |
157 } | 157 } |
158 const CFX_WideString& CFX_WideString::operator=( | 158 const CFX_WideString& CFX_WideString::operator=( |
159 const CFX_WideString& stringSrc) { | 159 const CFX_WideString& stringSrc) { |
160 if (m_pData == stringSrc.m_pData) { | 160 if (m_pData == stringSrc.m_pData) { |
161 return *this; | 161 return *this; |
162 } | 162 } |
163 if (stringSrc.IsEmpty()) { | 163 if (stringSrc.IsEmpty()) { |
164 Empty(); | 164 Empty(); |
(...skipping 23 matching lines...) Expand all Loading... |
188 if (!str.m_pData) { | 188 if (!str.m_pData) { |
189 return *this; | 189 return *this; |
190 } | 190 } |
191 ConcatInPlace(str.m_pData->m_nDataLength, str.m_pData->m_String); | 191 ConcatInPlace(str.m_pData->m_nDataLength, str.m_pData->m_String); |
192 return *this; | 192 return *this; |
193 } | 193 } |
194 const CFX_WideString& CFX_WideString::operator+=(const CFX_WideStringC& str) { | 194 const CFX_WideString& CFX_WideString::operator+=(const CFX_WideStringC& str) { |
195 if (str.IsEmpty()) { | 195 if (str.IsEmpty()) { |
196 return *this; | 196 return *this; |
197 } | 197 } |
198 ConcatInPlace(str.GetLength(), str.GetPtr()); | 198 ConcatInPlace(str.GetLength(), str.raw_str()); |
199 return *this; | 199 return *this; |
200 } | 200 } |
201 bool CFX_WideString::operator==(const wchar_t* ptr) const { | 201 bool CFX_WideString::operator==(const wchar_t* ptr) const { |
202 if (!m_pData) | 202 if (!m_pData) |
203 return !ptr || !ptr[0]; | 203 return !ptr || !ptr[0]; |
204 | 204 |
205 if (!ptr) | 205 if (!ptr) |
206 return m_pData->m_nDataLength == 0; | 206 return m_pData->m_nDataLength == 0; |
207 | 207 |
208 return wcslen(ptr) == static_cast<size_t>(m_pData->m_nDataLength) && | 208 return wcslen(ptr) == static_cast<size_t>(m_pData->m_nDataLength) && |
209 wmemcmp(ptr, m_pData->m_String, m_pData->m_nDataLength) == 0; | 209 wmemcmp(ptr, m_pData->m_String, m_pData->m_nDataLength) == 0; |
210 } | 210 } |
211 bool CFX_WideString::operator==(const CFX_WideStringC& str) const { | 211 bool CFX_WideString::operator==(const CFX_WideStringC& str) const { |
212 if (!m_pData) | 212 if (!m_pData) |
213 return str.IsEmpty(); | 213 return str.IsEmpty(); |
214 | 214 |
215 return str.GetLength() == m_pData->m_nDataLength && | 215 return str.GetLength() == m_pData->m_nDataLength && |
216 wmemcmp(str.GetPtr(), m_pData->m_String, m_pData->m_nDataLength) == 0; | 216 wmemcmp(str.raw_str(), m_pData->m_String, m_pData->m_nDataLength) == 0; |
217 } | 217 } |
218 bool CFX_WideString::operator==(const CFX_WideString& other) const { | 218 bool CFX_WideString::operator==(const CFX_WideString& other) const { |
219 if (IsEmpty()) | 219 if (IsEmpty()) |
220 return other.IsEmpty(); | 220 return other.IsEmpty(); |
221 | 221 |
222 if (other.IsEmpty()) | 222 if (other.IsEmpty()) |
223 return false; | 223 return false; |
224 | 224 |
225 return other.m_pData->m_nDataLength == m_pData->m_nDataLength && | 225 return other.m_pData->m_nDataLength == m_pData->m_nDataLength && |
226 wmemcmp(other.m_pData->m_String, m_pData->m_String, | 226 wmemcmp(other.m_pData->m_String, m_pData->m_String, |
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1034 int dest_len = | 1034 int dest_len = |
1035 FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, nullptr, 0); | 1035 FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, nullptr, 0); |
1036 CFX_WideString wstr; | 1036 CFX_WideString wstr; |
1037 if (dest_len) { | 1037 if (dest_len) { |
1038 FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); | 1038 FX_WCHAR* dest_buf = wstr.GetBuffer(dest_len); |
1039 FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, dest_buf, dest_len); | 1039 FXSYS_MultiByteToWideChar(codepage, 0, bstr, src_len, dest_buf, dest_len); |
1040 wstr.ReleaseBuffer(dest_len); | 1040 wstr.ReleaseBuffer(dest_len); |
1041 } | 1041 } |
1042 return wstr; | 1042 return wstr; |
1043 } | 1043 } |
OLD | NEW |