summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/OrderIterator.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/rendering/OrderIterator.h')
-rw-r--r--Source/WebCore/rendering/OrderIterator.h29
1 files changed, 20 insertions, 9 deletions
diff --git a/Source/WebCore/rendering/OrderIterator.h b/Source/WebCore/rendering/OrderIterator.h
index e47c850ca..47cd27ad2 100644
--- a/Source/WebCore/rendering/OrderIterator.h
+++ b/Source/WebCore/rendering/OrderIterator.h
@@ -29,10 +29,10 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef OrderIterator_h
-#define OrderIterator_h
+#pragma once
#include <wtf/Noncopyable.h>
+#include <wtf/Optional.h>
#include <wtf/Vector.h>
namespace WebCore {
@@ -41,10 +41,9 @@ class RenderBox;
class OrderIterator {
public:
- OrderIterator(RenderBox&);
+ friend class OrderIteratorPopulator;
- typedef Vector<int, 1> OrderValues;
- void setOrderValues(OrderValues&&);
+ explicit OrderIterator(RenderBox&);
RenderBox* currentChild() const { return m_currentChild; }
RenderBox* first();
@@ -55,10 +54,22 @@ private:
RenderBox& m_containerBox;
RenderBox* m_currentChild;
- OrderValues m_orderValues;
- int m_orderIndex;
+
+ Vector<int, 1> m_orderValues;
+ std::optional<size_t> m_orderIndex;
};
-} // namespace WebCore
+class OrderIteratorPopulator {
+public:
+ OrderIteratorPopulator(OrderIterator&);
+ ~OrderIteratorPopulator();
-#endif // OrderIterator_h
+ void collectChild(const RenderBox&);
+
+private:
+ void removeDuplicatedOrderValues();
+
+ OrderIterator& m_iterator;
+};
+
+} // namespace WebCore