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 "../../include/fxcrt/fx_basic.h" | 7 #include "../../include/fxcrt/fx_basic.h" |
8 #include "../../../third_party/numerics/safe_math.h" | 8 #include "../../../third_party/numerics/safe_math.h" |
9 | 9 |
10 static CFX_StringDataW* FX_AllocStringW(int nLen) | 10 static CFX_StringDataW* FX_AllocStringW(int nLen) |
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
391 return m_pData->m_String; | 391 return m_pData->m_String; |
392 } | 392 } |
393 CFX_WideString CFX_WideString::FromLocal(const char* str, FX_STRSIZE len) | 393 CFX_WideString CFX_WideString::FromLocal(const char* str, FX_STRSIZE len) |
394 { | 394 { |
395 CFX_WideString result; | 395 CFX_WideString result; |
396 result.ConvertFrom(CFX_ByteString(str, len)); | 396 result.ConvertFrom(CFX_ByteString(str, len)); |
397 return result; | 397 return result; |
398 } | 398 } |
399 CFX_WideString CFX_WideString::FromUTF8(const char* str, FX_STRSIZE len) | 399 CFX_WideString CFX_WideString::FromUTF8(const char* str, FX_STRSIZE len) |
400 { | 400 { |
401 if (!str) { | 401 if (!str || 0 == len) { |
402 return CFX_WideString(); | 402 return CFX_WideString(); |
403 } | 403 } |
404 if (len < 0) { | 404 |
405 len = 0; | |
406 while (str[len]) { | |
407 len ++; | |
408 } | |
409 } | |
410 CFX_UTF8Decoder decoder; | 405 CFX_UTF8Decoder decoder; |
411 for (FX_STRSIZE i = 0; i < len; i ++) { | 406 for (FX_STRSIZE i = 0; i < len; i ++) { |
412 decoder.Input(str[i]); | 407 decoder.Input(str[i]); |
413 } | 408 } |
414 return decoder.GetResult(); | 409 return decoder.GetResult(); |
415 } | 410 } |
416 CFX_WideString CFX_WideString::FromUTF16LE(const unsigned short* wstr, FX_STRSIZ
E wlen) | 411 CFX_WideString CFX_WideString::FromUTF16LE(const unsigned short* wstr, FX_STRSIZ
E wlen) |
417 { | 412 { |
418 if (!wstr || !wlen) { | 413 if (!wstr || 0 == wlen) { |
419 return CFX_WideString(); | 414 return CFX_WideString(); |
420 } | 415 } |
421 if (wlen < 0) { | 416 |
422 wlen = 0; | |
423 while (wstr[wlen]) { | |
424 wlen ++; | |
425 } | |
426 } | |
427 CFX_WideString result; | 417 CFX_WideString result; |
428 FX_WCHAR* buf = result.GetBuffer(wlen); | 418 FX_WCHAR* buf = result.GetBuffer(wlen); |
429 for (int i = 0; i < wlen; i ++) { | 419 for (int i = 0; i < wlen; i ++) { |
430 buf[i] = wstr[i]; | 420 buf[i] = wstr[i]; |
431 } | 421 } |
432 result.ReleaseBuffer(wlen); | 422 result.ReleaseBuffer(wlen); |
433 return result; | 423 return result; |
434 } | 424 } |
| 425 FX_STRSIZE CFX_WideString::WStringLength(const unsigned short* str) |
| 426 { |
| 427 FX_STRSIZE len = 0; |
| 428 if (str) |
| 429 while (str[len]) len++; |
| 430 return len; |
| 431 } |
| 432 |
| 433 |
| 434 |
435 void CFX_WideString::AllocCopy(CFX_WideString& dest, FX_STRSIZE nCopyLen, FX_STR
SIZE nCopyIndex) const | 435 void CFX_WideString::AllocCopy(CFX_WideString& dest, FX_STRSIZE nCopyLen, FX_STR
SIZE nCopyIndex) const |
436 { | 436 { |
437 // |FX_STRSIZE| is currently typedef'd as in |int|. TODO(palmer): It | 437 // |FX_STRSIZE| is currently typedef'd as in |int|. TODO(palmer): It |
438 // should be a |size_t|, or at least unsigned. | 438 // should be a |size_t|, or at least unsigned. |
439 if (nCopyLen == 0 || nCopyLen < 0) { | 439 if (nCopyLen == 0 || nCopyLen < 0) { |
440 return; | 440 return; |
441 } | 441 } |
442 base::CheckedNumeric<FX_STRSIZE> iSize = static_cast<FX_STRSIZE>(sizeof(FX_W
CHAR)); | 442 base::CheckedNumeric<FX_STRSIZE> iSize = static_cast<FX_STRSIZE>(sizeof(FX_W
CHAR)); |
443 iSize *= nCopyLen; | 443 iSize *= nCopyLen; |
444 ASSERT(dest.m_pData == NULL); | 444 ASSERT(dest.m_pData == NULL); |
(...skipping 675 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1120 return (CFX_CharMap*)&g_DefaultJISMapper; | 1120 return (CFX_CharMap*)&g_DefaultJISMapper; |
1121 case 936: | 1121 case 936: |
1122 return (CFX_CharMap*)&g_DefaultGBKMapper; | 1122 return (CFX_CharMap*)&g_DefaultGBKMapper; |
1123 case 949: | 1123 case 949: |
1124 return (CFX_CharMap*)&g_DefaultUHCMapper; | 1124 return (CFX_CharMap*)&g_DefaultUHCMapper; |
1125 case 950: | 1125 case 950: |
1126 return (CFX_CharMap*)&g_DefaultBig5Mapper; | 1126 return (CFX_CharMap*)&g_DefaultBig5Mapper; |
1127 } | 1127 } |
1128 return NULL; | 1128 return NULL; |
1129 } | 1129 } |
OLD | NEW |