blob: a50c43a429971f185a471fc0e8393c7c8b58b633 [file] [log] [blame]
Ben Murdochb8a8cc12014-11-26 15:28:44 +00001// Copyright 2013 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// limitations under the License.
5
6#ifndef V8_I18N_H_
7#define V8_I18N_H_
8
9#include "src/v8.h"
10#include "unicode/uversion.h"
11
12namespace U_ICU_NAMESPACE {
13class BreakIterator;
14class Collator;
15class DecimalFormat;
16class SimpleDateFormat;
17}
18
19namespace v8 {
20namespace internal {
21
22class I18N {
23 public:
24 // Creates an ObjectTemplate with one internal field.
25 static Handle<ObjectTemplateInfo> GetTemplate(Isolate* isolate);
26
27 // Creates an ObjectTemplate with two internal fields.
28 static Handle<ObjectTemplateInfo> GetTemplate2(Isolate* isolate);
29
30 private:
31 I18N();
32};
33
34
35class DateFormat {
36 public:
37 // Create a formatter for the specificied locale and options. Returns the
38 // resolved settings for the locale / options.
39 static icu::SimpleDateFormat* InitializeDateTimeFormat(
40 Isolate* isolate,
41 Handle<String> locale,
42 Handle<JSObject> options,
43 Handle<JSObject> resolved);
44
45 // Unpacks date format object from corresponding JavaScript object.
46 static icu::SimpleDateFormat* UnpackDateFormat(Isolate* isolate,
47 Handle<JSObject> obj);
48
49 // Release memory we allocated for the DateFormat once the JS object that
50 // holds the pointer gets garbage collected.
51 static void DeleteDateFormat(
52 const v8::WeakCallbackData<v8::Value, void>& data);
53
54 private:
55 DateFormat();
56};
57
58
59class NumberFormat {
60 public:
61 // Create a formatter for the specificied locale and options. Returns the
62 // resolved settings for the locale / options.
63 static icu::DecimalFormat* InitializeNumberFormat(
64 Isolate* isolate,
65 Handle<String> locale,
66 Handle<JSObject> options,
67 Handle<JSObject> resolved);
68
69 // Unpacks number format object from corresponding JavaScript object.
70 static icu::DecimalFormat* UnpackNumberFormat(Isolate* isolate,
71 Handle<JSObject> obj);
72
73 // Release memory we allocated for the NumberFormat once the JS object that
74 // holds the pointer gets garbage collected.
75 static void DeleteNumberFormat(
76 const v8::WeakCallbackData<v8::Value, void>& data);
77
78 private:
79 NumberFormat();
80};
81
82
83class Collator {
84 public:
85 // Create a collator for the specificied locale and options. Returns the
86 // resolved settings for the locale / options.
87 static icu::Collator* InitializeCollator(
88 Isolate* isolate,
89 Handle<String> locale,
90 Handle<JSObject> options,
91 Handle<JSObject> resolved);
92
93 // Unpacks collator object from corresponding JavaScript object.
94 static icu::Collator* UnpackCollator(Isolate* isolate, Handle<JSObject> obj);
95
96 // Release memory we allocated for the Collator once the JS object that holds
97 // the pointer gets garbage collected.
98 static void DeleteCollator(
99 const v8::WeakCallbackData<v8::Value, void>& data);
100
101 private:
102 Collator();
103};
104
105class BreakIterator {
106 public:
107 // Create a BreakIterator for the specificied locale and options. Returns the
108 // resolved settings for the locale / options.
109 static icu::BreakIterator* InitializeBreakIterator(
110 Isolate* isolate,
111 Handle<String> locale,
112 Handle<JSObject> options,
113 Handle<JSObject> resolved);
114
115 // Unpacks break iterator object from corresponding JavaScript object.
116 static icu::BreakIterator* UnpackBreakIterator(Isolate* isolate,
117 Handle<JSObject> obj);
118
119 // Release memory we allocated for the BreakIterator once the JS object that
120 // holds the pointer gets garbage collected.
121 static void DeleteBreakIterator(
122 const v8::WeakCallbackData<v8::Value, void>& data);
123
124 private:
125 BreakIterator();
126};
127
128} } // namespace v8::internal
129
130#endif // V8_I18N_H_