1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 01:27:34 +00:00

LibJS: Implement Intl %SegmentIteratorPrototype%.next ( )

This commit is contained in:
Idan Horowitz 2022-01-30 21:34:41 +02:00
parent 366468f1de
commit 2cd3d4a287
6 changed files with 102 additions and 7 deletions

View file

@ -16,14 +16,17 @@ class SegmentIterator final : public Object {
JS_OBJECT(SegmentIterator, Object);
public:
static SegmentIterator* create(GlobalObject&, Segmenter&, Utf16View const&);
static SegmentIterator* create(GlobalObject&, Segmenter&, Utf16View const&, Segments const&);
SegmentIterator(GlobalObject&, Segmenter&, Utf16View const&);
SegmentIterator(GlobalObject&, Segmenter&, Utf16View const&, Segments const&);
virtual ~SegmentIterator() override = default;
Segmenter const& iterating_segmenter() const { return m_iterating_segmenter; }
Utf16View const& iterated_string() const { return m_iterated_string; }
size_t iterated_string_next_segment_code_unit_index() const { return m_iterated_string_next_segment_code_unit_index; }
void set_iterated_string_next_segment_code_unit_index(size_t index) { m_iterated_string_next_segment_code_unit_index = index; }
Segments const& segments() { return m_segments; }
private:
virtual void visit_edges(Cell::Visitor&) override;
@ -31,6 +34,8 @@ private:
Segmenter& m_iterating_segmenter; // [[IteratingSegmenter]]
Utf16View m_iterated_string; // [[IteratedString]]
size_t m_iterated_string_next_segment_code_unit_index { 0 }; // [[IteratedStringNextSegmentCodeUnitIndex]]
Segments const& m_segments;
};
}