| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Copyright (c) 2022, Idan Horowitz <idan.horowitz@serenityos.org> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * SPDX-License-Identifier: BSD-2-Clause | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-31 18:41:44 +02:00
										 |  |  | #include <AK/Utf16View.h>
 | 
					
						
							| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  | #include <LibJS/Runtime/Intl/Segmenter.h>
 | 
					
						
							|  |  |  | #include <LibJS/Runtime/Object.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace JS::Intl { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Segments final : public Object { | 
					
						
							|  |  |  |     JS_OBJECT(Segments, Object); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2022-01-31 18:41:44 +02:00
										 |  |  |     static Segments* create(GlobalObject&, Segmenter&, Utf16String); | 
					
						
							| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-31 18:41:44 +02:00
										 |  |  |     Segments(GlobalObject&, Segmenter&, Utf16String); | 
					
						
							| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  |     virtual ~Segments() override = default; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Segmenter& segments_segmenter() const { return m_segments_segmenter; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-31 18:41:44 +02:00
										 |  |  |     Utf16View segments_string() const { return m_segments_string.view(); } | 
					
						
							| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-30 20:39:26 +02:00
										 |  |  |     Optional<Vector<size_t>>& boundaries_cache() const { return m_boundaries_cache; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  | private: | 
					
						
							|  |  |  |     virtual void visit_edges(Cell::Visitor&) override; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Segmenter& m_segments_segmenter; // [[SegmentsSegmenter]]
 | 
					
						
							| 
									
										
										
										
											2022-01-31 18:41:44 +02:00
										 |  |  |     Utf16String m_segments_string;   // [[SegmentsString]]
 | 
					
						
							| 
									
										
										
										
											2022-01-30 20:39:26 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     mutable Optional<Vector<size_t>> m_boundaries_cache; | 
					
						
							| 
									
										
										
										
											2022-01-30 01:08:42 +02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | } |