summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorRyan Harrison <rharrison@chromium.org>2017-09-01 15:11:12 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-09-01 19:23:04 +0000
commita2188df09255b49ad41a89ae9b5de640d0b03126 (patch)
treee8fb878b806b96d795a30206347669e709ee29bf /core
parent7558414b8aa1d14ce02e360dd88e4f421cee8725 (diff)
downloadpdfium-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.cpp4
-rw-r--r--core/fxcrt/cfx_bytestring.h3
-rw-r--r--core/fxcrt/cfx_string_c_template.h6
-rw-r--r--core/fxcrt/cfx_widestring.h3
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;