V8 API Reference, 7.2.502.16 (for Deno 0.2.4)
js-break-iterator.h
1 // Copyright 2018 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef V8_INTL_SUPPORT
6 #error Internationalization is expected to be enabled.
7 #endif // V8_INTL_SUPPORT
8 
9 #ifndef V8_OBJECTS_JS_BREAK_ITERATOR_H_
10 #define V8_OBJECTS_JS_BREAK_ITERATOR_H_
11 
12 #include <set>
13 #include <string>
14 
15 #include "src/objects.h"
16 #include "src/objects/intl-objects.h"
17 #include "src/objects/managed.h"
18 
19 // Has to be the last include (doesn't have include guards):
20 #include "src/objects/object-macros.h"
21 
22 namespace U_ICU_NAMESPACE {
23 class BreakIterator;
24 } // namespace U_ICU_NAMESPACE
25 
26 namespace v8 {
27 namespace internal {
28 
29 class JSV8BreakIterator : public JSObject {
30  public:
31  V8_WARN_UNUSED_RESULT static MaybeHandle<JSV8BreakIterator> Initialize(
32  Isolate* isolate, Handle<JSV8BreakIterator> break_iterator,
33  Handle<Object> input_locales, Handle<Object> input_options);
34 
35  static Handle<JSObject> ResolvedOptions(
36  Isolate* isolate, Handle<JSV8BreakIterator> break_iterator);
37 
38  static std::set<std::string> GetAvailableLocales();
39 
40  static void AdoptText(Isolate* isolate,
41  Handle<JSV8BreakIterator> break_iterator,
42  Handle<String> text);
43 
44  static Handle<Object> Current(Isolate* isolate,
45  Handle<JSV8BreakIterator> break_iterator);
46  static Handle<Object> First(Isolate* isolate,
47  Handle<JSV8BreakIterator> break_iterator);
48  static Handle<Object> Next(Isolate* isolate,
49  Handle<JSV8BreakIterator> break_iterator);
50  static String BreakType(Isolate* isolate,
51  Handle<JSV8BreakIterator> break_iterator);
52 
53  enum class Type { CHARACTER, WORD, SENTENCE, LINE, COUNT };
54  inline void set_type(Type type);
55  inline Type type() const;
56 
57  Handle<String> TypeAsString() const;
58 
59  DECL_CAST(JSV8BreakIterator)
60  DECL_PRINTER(JSV8BreakIterator)
61  DECL_VERIFIER(JSV8BreakIterator)
62 
63  DECL_ACCESSORS2(locale, String)
64  DECL_ACCESSORS(break_iterator, Managed<icu::BreakIterator>)
65  DECL_ACCESSORS(unicode_string, Managed<icu::UnicodeString>)
66  DECL_ACCESSORS(bound_adopt_text, Object)
67  DECL_ACCESSORS(bound_first, Object)
68  DECL_ACCESSORS(bound_next, Object)
69  DECL_ACCESSORS(bound_current, Object)
70  DECL_ACCESSORS(bound_break_type, Object)
71 
72 // Layout description.
73 #define BREAK_ITERATOR_FIELDS(V) \
74  /* Pointer fields. */ \
75  V(kLocaleOffset, kTaggedSize) \
76  V(kTypeOffset, kTaggedSize) \
77  V(kBreakIteratorOffset, kTaggedSize) \
78  V(kUnicodeStringOffset, kTaggedSize) \
79  V(kBoundAdoptTextOffset, kTaggedSize) \
80  V(kBoundFirstOffset, kTaggedSize) \
81  V(kBoundNextOffset, kTaggedSize) \
82  V(kBoundCurrentOffset, kTaggedSize) \
83  V(kBoundBreakTypeOffset, kTaggedSize) \
84  /* Total Size */ \
85  V(kSize, 0)
86 
87  DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, BREAK_ITERATOR_FIELDS)
88 #undef BREAK_ITERATOR_FIELDS
89 
90  private:
91  DISALLOW_IMPLICIT_CONSTRUCTORS(JSV8BreakIterator)
92 };
93 
94 } // namespace internal
95 } // namespace v8
96 
97 #include "src/objects/object-macros-undef.h"
98 
99 #endif // V8_OBJECTS_JS_BREAK_ITERATOR_H_
Definition: libplatform.h:13