Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(678)

Unified Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarker.h

Issue 2765013003: Add iterator for DocumentMarker::MarkerTypes (Closed)
Patch Set: Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h b/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
index 7db49d1a45320fa4724c6a664cb6a6d88e08a618..0a85bda6d137fab0cc6f5d5de15a277b3fd16de7 100644
--- a/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
+++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarker.h
@@ -55,6 +55,32 @@ class CORE_EXPORT DocumentMarker : public GarbageCollected<DocumentMarker> {
Composition = 1 << CompositionMarkerIndex,
};
+ class MarkerTypesIterator {
+ public:
+ explicit MarkerTypesIterator(int markerTypes)
Xiaocheng 2017/03/22 01:02:57 s/int/unsigned/
+ : m_remainingTypes(markerTypes) {}
+ MarkerTypesIterator(const MarkerTypesIterator& other) = default;
+
+ bool operator==(const MarkerTypesIterator& other) {
+ return m_remainingTypes == other.m_remainingTypes;
+ }
+ bool operator!=(const MarkerTypesIterator& other) {
+ return !(*this == other);
+ }
+
+ MarkerTypesIterator& operator++() {
+ m_remainingTypes &= (m_remainingTypes - 1);
Xiaocheng 2017/03/22 01:02:57 add: DCHECK(m_remainingTypes);
+ return *this;
+ }
+
+ MarkerType operator*() const {
+ return static_cast<MarkerType>(m_remainingTypes & -m_remainingTypes);
Xiaocheng 2017/03/22 01:02:57 add: DCHECK(m_remainingTypes);
+ }
+
+ private:
+ int m_remainingTypes;
Xiaocheng 2017/03/22 01:02:57 s/int/unsigned/
+ };
+
class MarkerTypes {
public:
// The constructor is intentionally implicit to allow conversion from the
@@ -72,6 +98,9 @@ class CORE_EXPORT DocumentMarker : public GarbageCollected<DocumentMarker> {
void add(const MarkerTypes& types) { m_mask |= types.m_mask; }
void remove(const MarkerTypes& types) { m_mask &= ~types.m_mask; }
+ MarkerTypesIterator begin() const { return MarkerTypesIterator(m_mask); }
+ MarkerTypesIterator end() const { return MarkerTypesIterator(0); }
+
private:
unsigned m_mask;
};

Powered by Google App Engine
This is Rietveld 408576698