summaryrefslogtreecommitdiff
path: root/core/src/fxcrt
diff options
context:
space:
mode:
authorTom Sepez <tsepez@chromium.org>2015-04-22 12:04:14 -0700
committerTom Sepez <tsepez@chromium.org>2015-04-22 12:04:14 -0700
commit1ddf056da74de0a34631b8a719f4f02b4ec82144 (patch)
tree45217449a89d4286a903c76774971c1c2c6c38e4 /core/src/fxcrt
parentea6a069e6e593d97513e86fc761cf789a9714c22 (diff)
downloadpdfium-1ddf056da74de0a34631b8a719f4f02b4ec82144.tar.xz
Add missing operators for CFX_ByteStringC.
Removing the implicit cast operator forces a build breakage should we use ByteStringC in STL containers. Adding an operator< restores correct behaviour. Adding an operator[] avoids re-writing some code to call GetPtr() prior to array indexing. Part 1 of 4. R=thestig@chromium.org TBR=brucedawson@chromium.org BUG=pdfium:142. Review URL: https://codereview.chromium.org/1090303003
Diffstat (limited to 'core/src/fxcrt')
-rw-r--r--core/src/fxcrt/fx_basic_bstring.cpp2
-rw-r--r--core/src/fxcrt/fx_basic_bstring_unittest.cpp39
-rw-r--r--core/src/fxcrt/fx_basic_buffer.cpp10
-rw-r--r--core/src/fxcrt/fx_basic_maps.cpp12
4 files changed, 51 insertions, 12 deletions
diff --git a/core/src/fxcrt/fx_basic_bstring.cpp b/core/src/fxcrt/fx_basic_bstring.cpp
index ea9ca85021..cda7d1fdd7 100644
--- a/core/src/fxcrt/fx_basic_bstring.cpp
+++ b/core/src/fxcrt/fx_basic_bstring.cpp
@@ -276,7 +276,7 @@ bool CFX_ByteString::EqualNoCase(FX_BSTR str) const
return false;
}
FX_LPCBYTE pThis = (FX_LPCBYTE)m_pData->m_String;
- FX_LPCBYTE pThat = (FX_LPCBYTE)str;
+ FX_LPCBYTE pThat = str.GetPtr();
for (FX_STRSIZE i = 0; i < len; i ++) {
if ((*pThis) != (*pThat)) {
FX_BYTE bThis = *pThis;
diff --git a/core/src/fxcrt/fx_basic_bstring_unittest.cpp b/core/src/fxcrt/fx_basic_bstring_unittest.cpp
index 1ddaad420a..57cfc8047e 100644
--- a/core/src/fxcrt/fx_basic_bstring_unittest.cpp
+++ b/core/src/fxcrt/fx_basic_bstring_unittest.cpp
@@ -229,3 +229,42 @@ TEST(fxcrt, ByteStringCGetAt) {
EXPECT_EQ('\0', embedded_nul_string.GetAt(2));
EXPECT_EQ('c', embedded_nul_string.GetAt(3));
}
+
+TEST(fxcrt, ByteStringCOperatorSubscript) {
+ // CFX_ByteStringC includes the NUL terminator for non-empty strings.
+ CFX_ByteStringC abc("abc");
+ EXPECT_EQ('a', abc[0]);
+ EXPECT_EQ('b', abc[1]);
+ EXPECT_EQ('c', abc[2]);
+ EXPECT_EQ(0, abc[3]);
+}
+
+TEST(fxcrt, ByteStringCOperatorLT) {
+ CFX_ByteStringC empty;
+ CFX_ByteStringC a("a");
+ CFX_ByteStringC abc("abc");
+ CFX_ByteStringC def("def");
+
+ EXPECT_FALSE(empty < empty);
+ EXPECT_FALSE(a < a);
+ EXPECT_FALSE(abc < abc);
+ EXPECT_FALSE(def < def);
+
+ EXPECT_TRUE(empty < a);
+ EXPECT_FALSE(a < empty);
+
+ EXPECT_TRUE(empty < abc);
+ EXPECT_FALSE(abc < empty);
+
+ EXPECT_TRUE(empty < def);
+ EXPECT_FALSE(def < empty);
+
+ EXPECT_TRUE(a < abc);
+ EXPECT_FALSE(abc < a);
+
+ EXPECT_TRUE(a < def);
+ EXPECT_FALSE(def < a);
+
+ EXPECT_TRUE(abc < def);
+ EXPECT_FALSE(def < abc);
+}
diff --git a/core/src/fxcrt/fx_basic_buffer.cpp b/core/src/fxcrt/fx_basic_buffer.cpp
index bb8466debe..eb5246acec 100644
--- a/core/src/fxcrt/fx_basic_buffer.cpp
+++ b/core/src/fxcrt/fx_basic_buffer.cpp
@@ -143,7 +143,7 @@ CFX_ByteStringC CFX_BinaryBuf::GetByteString() const
}
CFX_ByteTextBuf& CFX_ByteTextBuf::operator << (FX_BSTR lpsz)
{
- AppendBlock((FX_LPCBYTE)lpsz, lpsz.GetLength());
+ AppendBlock(lpsz.GetPtr(), lpsz.GetLength());
return *this;
}
CFX_ByteTextBuf& CFX_ByteTextBuf::operator << (int i)
@@ -174,7 +174,7 @@ CFX_ByteTextBuf& CFX_ByteTextBuf::operator << (const CFX_ByteTextBuf& buf)
}
void CFX_ByteTextBuf::operator =(const CFX_ByteStringC& str)
{
- CopyData((FX_LPCBYTE)str, str.GetLength());
+ CopyData(str.GetPtr(), str.GetLength());
}
void CFX_WideTextBuf::AppendChar(FX_WCHAR ch)
{
@@ -285,10 +285,10 @@ CFX_ArchiveSaver& CFX_ArchiveSaver::operator << (FX_BSTR bstr)
int len = bstr.GetLength();
if (m_pStream) {
m_pStream->WriteBlock(&len, sizeof(int));
- m_pStream->WriteBlock(bstr, len);
+ m_pStream->WriteBlock(bstr.GetPtr(), len);
} else {
m_SavingBuf.AppendBlock(&len, sizeof(int));
- m_SavingBuf.AppendBlock(bstr, len);
+ m_SavingBuf.AppendBlock(bstr.GetPtr(), len);
}
return *this;
}
@@ -488,7 +488,7 @@ FX_INT32 IFX_BufferArchive::AppendDWord(FX_DWORD i)
}
FX_INT32 IFX_BufferArchive::AppendString(FX_BSTR lpsz)
{
- return AppendBlock((FX_LPCBYTE)lpsz, lpsz.GetLength());
+ return AppendBlock(lpsz.GetPtr(), lpsz.GetLength());
}
CFX_FileBufferArchive::CFX_FileBufferArchive(FX_STRSIZE size)
: IFX_BufferArchive(size)
diff --git a/core/src/fxcrt/fx_basic_maps.cpp b/core/src/fxcrt/fx_basic_maps.cpp
index e85d35e4ac..8ae44ce6a0 100644
--- a/core/src/fxcrt/fx_basic_maps.cpp
+++ b/core/src/fxcrt/fx_basic_maps.cpp
@@ -352,7 +352,7 @@ inline FX_DWORD CFX_MapByteStringToPtr::HashKey(FX_BSTR key) const
{
FX_DWORD nHash = 0;
int len = key.GetLength();
- FX_LPCBYTE buf = key;
+ FX_LPCBYTE buf = key.GetPtr();
for (int i = 0; i < len; i ++) {
nHash = (nHash << 5) + nHash + buf[i];
}
@@ -518,7 +518,7 @@ void CFX_CMapByteStringToPtr::SetAt(FX_BSTR key, void* value)
int size = m_Buffer.GetSize();
for (index = 0; index < size; index ++) {
_CompactString* pKey = (_CompactString*)m_Buffer.GetAt(index);
- if (!_CompactStringSame(pKey, (FX_LPCBYTE)key, key_len)) {
+ if (!_CompactStringSame(pKey, key.GetPtr(), key_len)) {
continue;
}
*(void**)(pKey + 1) = value;
@@ -529,19 +529,19 @@ void CFX_CMapByteStringToPtr::SetAt(FX_BSTR key, void* value)
if (pKey->m_CompactLen) {
continue;
}
- _CompactStringStore(pKey, (FX_LPCBYTE)key, key_len);
+ _CompactStringStore(pKey, key.GetPtr(), key_len);
*(void**)(pKey + 1) = value;
return;
}
_CompactString* pKey = (_CompactString*)m_Buffer.Add();
- _CompactStringStore(pKey, (FX_LPCBYTE)key, key_len);
+ _CompactStringStore(pKey, key.GetPtr(), key_len);
*(void**)(pKey + 1) = value;
}
void CFX_CMapByteStringToPtr::AddValue(FX_BSTR key, void* value)
{
ASSERT(value != NULL);
_CompactString* pKey = (_CompactString*)m_Buffer.Add();
- _CompactStringStore(pKey, (FX_LPCBYTE)key, key.GetLength());
+ _CompactStringStore(pKey, key.GetPtr(), key.GetLength());
*(void**)(pKey + 1) = value;
}
void CFX_CMapByteStringToPtr::RemoveKey(FX_BSTR key)
@@ -550,7 +550,7 @@ void CFX_CMapByteStringToPtr::RemoveKey(FX_BSTR key)
int size = m_Buffer.GetSize();
for (int index = 0; index < size; index++) {
_CompactString* pKey = (_CompactString*)m_Buffer.GetAt(index);
- if (!_CompactStringSame(pKey, (FX_LPCBYTE)key, key_len)) {
+ if (!_CompactStringSame(pKey, key.GetPtr(), key_len)) {
continue;
}
_CompactStringRelease(pKey);