5 #ifndef V8_INTL_SUPPORT 6 #error Internationalization is expected to be enabled. 7 #endif // V8_INTL_SUPPORT 9 #ifndef V8_OBJECTS_JS_SEGMENTER_H_ 10 #define V8_OBJECTS_JS_SEGMENTER_H_ 15 #include "src/heap/factory.h" 16 #include "src/isolate.h" 17 #include "src/objects.h" 18 #include "src/objects/managed.h" 19 #include "unicode/uversion.h" 22 #include "src/objects/object-macros.h" 42 static std::set<std::string> GetAvailableLocales();
45 const char* LineBreakStyleAsCString()
const;
51 DECL_ACCESSORS2(locale,
String)
59 enum class LineBreakStyle {
67 inline void set_line_break_style(LineBreakStyle line_break_style);
68 inline LineBreakStyle line_break_style()
const;
73 enum class Granularity {
80 inline void set_granularity(Granularity granularity);
81 inline Granularity granularity()
const;
84 #define FLAGS_BIT_FIELDS(V, _) \ 85 V(LineBreakStyleBits, LineBreakStyle, 3, _) \ 86 V(GranularityBits, Granularity, 3, _) 87 DEFINE_BIT_FIELDS(FLAGS_BIT_FIELDS)
88 #undef FLAGS_BIT_FIELDS 90 STATIC_ASSERT(LineBreakStyle::NOTSET <= LineBreakStyleBits::kMax);
91 STATIC_ASSERT(LineBreakStyle::STRICT <= LineBreakStyleBits::kMax);
92 STATIC_ASSERT(LineBreakStyle::NORMAL <= LineBreakStyleBits::kMax);
93 STATIC_ASSERT(LineBreakStyle::LOOSE <= LineBreakStyleBits::kMax);
94 STATIC_ASSERT(Granularity::GRAPHEME <= GranularityBits::kMax);
95 STATIC_ASSERT(Granularity::WORD <= GranularityBits::kMax);
96 STATIC_ASSERT(Granularity::SENTENCE <= GranularityBits::kMax);
97 STATIC_ASSERT(Granularity::LINE <= GranularityBits::kMax);
100 DECL_INT_ACCESSORS(flags)
106 #define JS_SEGMENTER_FIELDS(V) \ 107 V(kJSSegmenterOffset, kTaggedSize) \ 108 V(kLocaleOffset, kTaggedSize) \ 109 V(kICUBreakIteratorOffset, kTaggedSize) \ 110 V(kFlagsOffset, kTaggedSize) \ 114 DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, JS_SEGMENTER_FIELDS)
115 #undef JS_SEGMENTER_FIELDS 118 static LineBreakStyle GetLineBreakStyle(
const char* str);
119 static Granularity GetGranularity(
const char* str);
127 #include "src/objects/object-macros-undef.h" 129 #endif // V8_OBJECTS_JS_SEGMENTER_H_