chromium/third_party/blink/renderer/core/layout/flex/flex_item_iterator.h

// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_FLEX_FLEX_ITEM_ITERATOR_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_FLEX_FLEX_ITEM_ITERATOR_H_

#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h"
#include "third_party/blink/renderer/platform/wtf/vector.h"

namespace blink {

class BlockBreakToken;
struct NGFlexItem;
struct NGFlexLine;

// A utility class for flexbox layout which given a list of flex lines and a
// break token will iterate through unfinished flex items.
//
// NextItem() is used to iterate through the flex items. This will be done in
// item order. If there are child break tokens, though, their nodes will be
// processed first, in break token order. When we're through those, we proceed
// to the next sibling item of the last break token - unless we have
// already seen and started all children (in which case the parent break token
// will be marked as such; |HasSeenAllChildren()| will return true).
//
// This class does not handle modifications to its arguments after it has been
// constructed.
class CORE_EXPORT FlexItemIterator {};

struct FlexItemIterator::Entry {};

}  // namespace blink

#endif  // THIRD_PARTY_BLINK_RENDERER_CORE_LAYOUT_FLEX_FLEX_ITEM_ITERATOR_H_