diff options
author | Tom Sepez <tsepez@chromium.org> | 2017-09-13 09:45:14 -0700 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2017-09-13 20:31:57 +0000 |
commit | e762774c7571dbfcc08a0928ea1bae684b605713 (patch) | |
tree | f27c1290e2e9de4e10d3e791d4408ba67818b09b /core/fxcrt/cfx_widestring.h | |
parent | b4a6948a97575b194d373e5801fe83d297cdc46f (diff) | |
download | pdfium-e762774c7571dbfcc08a0928ea1bae684b605713.tar.xz |
Add reverse iterators to CFX String classes.
Reverse iteration with signed lengths and indices is kinda icky
without this abstraction, and STL provides this pretty much "for
free" given the existing forward iterator.
Change-Id: I97c36c8bd23c0aa48195bc17da7c672292b4cde2
Reviewed-on: https://pdfium-review.googlesource.com/13770
Reviewed-by: Lei Zhang <thestig@chromium.org>
Reviewed-by: Ryan Harrison <rharrison@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Diffstat (limited to 'core/fxcrt/cfx_widestring.h')
-rw-r--r-- | core/fxcrt/cfx_widestring.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/core/fxcrt/cfx_widestring.h b/core/fxcrt/cfx_widestring.h index 9922e4277a..595615a0b2 100644 --- a/core/fxcrt/cfx_widestring.h +++ b/core/fxcrt/cfx_widestring.h @@ -8,6 +8,7 @@ #define CORE_FXCRT_CFX_WIDESTRING_H_ #include <functional> +#include <iterator> #include <utility> #include "core/fxcrt/cfx_retain_ptr.h" @@ -25,6 +26,7 @@ class CFX_WideString { public: using CharType = wchar_t; using const_iterator = const CharType*; + using const_reverse_iterator = std::reverse_iterator<const_iterator>; CFX_WideString(); CFX_WideString(const CFX_WideString& other); @@ -73,6 +75,14 @@ class CFX_WideString { return m_pData ? m_pData->m_String + m_pData->m_nDataLength : nullptr; } + // Note: Any subsequent modification of |this| will invalidate iterators. + const_reverse_iterator rbegin() const { + return const_reverse_iterator(end()); + } + const_reverse_iterator rend() const { + return const_reverse_iterator(begin()); + } + void clear() { m_pData.Reset(); } FX_STRSIZE GetLength() const { return m_pData ? m_pData->m_nDataLength : 0; } |