diff options
author | Ryan Harrison <rharrison@chromium.org> | 2017-09-01 15:11:12 -0400 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-09-01 19:23:04 +0000 |
commit | a2188df09255b49ad41a89ae9b5de640d0b03126 (patch) | |
tree | e8fb878b806b96d795a30206347669e709ee29bf /core | |
parent | 7558414b8aa1d14ce02e360dd88e4f421cee8725 (diff) | |
download | pdfium-a2188df09255b49ad41a89ae9b5de640d0b03126.tar.xz |
Cleanup usages of Mid(foo, 1), Right(1), and Left(1)chromium/3203
Mid(foo, 1) is equivalent to [foo], if all you want is the character. Similarly
Left(1) is [0]. It is faster also, since it does not need to create intermediate
strings.
Right(1) is a touch more tricky, since it requires something like GetLength() ?
[GetLength() - 1] : 0;. A new method, Last() has been added to perform this
character extraction.
Multiple call sites have been updated to use more efficient/simpler
syntax. There are a number of call sites that use on these patterns, but based
on the surrounding context we actually need/want a string, so they have not been
modified.
Change-Id: I485a7f9c7b34c9bdacecada610158f996816afdd
Reviewed-on: https://pdfium-review.googlesource.com/12890
Commit-Queue: Ryan Harrison <rharrison@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/fpdfapi/font/cpdf_cmap.cpp | 4 | ||||
-rw-r--r-- | core/fxcrt/cfx_bytestring.h | 3 | ||||
-rw-r--r-- | core/fxcrt/cfx_string_c_template.h | 6 | ||||
-rw-r--r-- | core/fxcrt/cfx_widestring.h | 3 |
4 files changed, 14 insertions, 2 deletions
diff --git a/core/fpdfapi/font/cpdf_cmap.cpp b/core/fpdfapi/font/cpdf_cmap.cpp index 659139f687..0d3745e44a 100644 --- a/core/fpdfapi/font/cpdf_cmap.cpp +++ b/core/fpdfapi/font/cpdf_cmap.cpp @@ -253,12 +253,12 @@ void CPDF_CMap::LoadPredefined(CPDF_CMapManager* pMgr, m_PredefinedCMap = bsName; if (m_PredefinedCMap == "Identity-H" || m_PredefinedCMap == "Identity-V") { m_Coding = CIDCODING_CID; - m_bVertical = bsName[9] == 'V'; + m_bVertical = bsName.Last() == 'V'; m_bLoaded = true; return; } CFX_ByteString cmapid = m_PredefinedCMap; - m_bVertical = cmapid.Right(1) == "V"; + m_bVertical = cmapid.Last() == 'V'; if (cmapid.GetLength() > 2) { cmapid = cmapid.Left(cmapid.GetLength() - 2); } diff --git a/core/fxcrt/cfx_bytestring.h b/core/fxcrt/cfx_bytestring.h index a47b5f89ab..261060bda0 100644 --- a/core/fxcrt/cfx_bytestring.h +++ b/core/fxcrt/cfx_bytestring.h @@ -120,6 +120,9 @@ class CFX_ByteString { return m_pData ? m_pData->m_String[index] : 0; } + CharType First() const { return GetLength() ? (*this)[0] : 0; } + CharType Last() const { return GetLength() ? (*this)[GetLength() - 1] : 0; } + void SetAt(FX_STRSIZE index, char c); FX_STRSIZE Insert(FX_STRSIZE index, char ch); diff --git a/core/fxcrt/cfx_string_c_template.h b/core/fxcrt/cfx_string_c_template.h index c46b0c4671..6bc71d853d 100644 --- a/core/fxcrt/cfx_string_c_template.h +++ b/core/fxcrt/cfx_string_c_template.h @@ -135,6 +135,12 @@ class CFX_StringCTemplate { return m_Ptr.Get()[index]; } + UnsignedType First() const { return GetLength() ? (*this)[0] : 0; } + + UnsignedType Last() const { + return GetLength() ? (*this)[GetLength() - 1] : 0; + } + const CharType CharAt(const FX_STRSIZE index) const { ASSERT(IsValidIndex(index)); return static_cast<CharType>(m_Ptr.Get()[index]); diff --git a/core/fxcrt/cfx_widestring.h b/core/fxcrt/cfx_widestring.h index 242138853b..100fec6706 100644 --- a/core/fxcrt/cfx_widestring.h +++ b/core/fxcrt/cfx_widestring.h @@ -115,6 +115,9 @@ class CFX_WideString { return m_pData ? m_pData->m_String[index] : 0; } + CharType First() const { return GetLength() ? (*this)[0] : 0; } + CharType Last() const { return GetLength() ? (*this)[GetLength() - 1] : 0; } + void SetAt(FX_STRSIZE index, wchar_t c); int Compare(const wchar_t* str) const; |