1cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn// Copyright 2013 the V8 project authors. All rights reserved. 2cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn// Use of this source code is governed by a BSD-style license that can be 3cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn// found in the LICENSE file. 4cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn// limitations under the License. 5cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 6cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn#ifndef V8_I18N_H_ 7cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn#define V8_I18N_H_ 8cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 9cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn#include "src/v8.h" 10cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn#include "unicode/uversion.h" 11cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 12cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornnamespace U_ICU_NAMESPACE { 13cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass BreakIterator; 14cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass Collator; 15cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass DecimalFormat; 16cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass SimpleDateFormat; 17cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn} 18cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 199f4a046cbeb22a24d322a644323b41022ad9d15aGeorge Mountnamespace v8 { 204500be62dea3895a98336122a2944cc4ab024bc5George Mountnamespace internal { 21cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 22cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass I18N { 233a7571011a8f2c2e2685c4e3e7a6fa46673ee7eaDianne Hackborn public: 244500be62dea3895a98336122a2944cc4ab024bc5George Mount // Creates an ObjectTemplate with one internal field. 259f4a046cbeb22a24d322a644323b41022ad9d15aGeorge Mount static Handle<ObjectTemplateInfo> GetTemplate(Isolate* isolate); 26cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 27cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Creates an ObjectTemplate with two internal fields. 289f4a046cbeb22a24d322a644323b41022ad9d15aGeorge Mount static Handle<ObjectTemplateInfo> GetTemplate2(Isolate* isolate); 294500be62dea3895a98336122a2944cc4ab024bc5George Mount 304500be62dea3895a98336122a2944cc4ab024bc5George Mount private: 310f5ae57910484f1d873fdad90966b6244a633bd4George Mount I18N(); 32cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn}; 33cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 34cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 35cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass DateFormat { 369f4a046cbeb22a24d322a644323b41022ad9d15aGeorge Mount public: 37cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Create a formatter for the specificied locale and options. Returns the 38cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // resolved settings for the locale / options. 39cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::SimpleDateFormat* InitializeDateTimeFormat( 40cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Isolate* isolate, 41cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<String> locale, 42cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> options, 43cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> resolved); 44cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 45cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Unpacks date format object from corresponding JavaScript object. 46cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::SimpleDateFormat* UnpackDateFormat(Isolate* isolate, 47cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> obj); 484500be62dea3895a98336122a2944cc4ab024bc5George Mount 494500be62dea3895a98336122a2944cc4ab024bc5George Mount // Release memory we allocated for the DateFormat once the JS object that 50cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // holds the pointer gets garbage collected. 51cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static void DeleteDateFormat( 52cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn const v8::WeakCallbackData<v8::Value, void>& data); 53cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 54cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn private: 55cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn DateFormat(); 56cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn}; 57cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 58df6f1393f73a488ba2661b28d3d88a5ac19c4ea2Dianne Hackborn 59cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass NumberFormat { 60cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn public: 61cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Create a formatter for the specificied locale and options. Returns the 62cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // resolved settings for the locale / options. 63cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::DecimalFormat* InitializeNumberFormat( 64cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Isolate* isolate, 65cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<String> locale, 66cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> options, 67cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> resolved); 685506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn 69cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Unpacks number format object from corresponding JavaScript object. 70cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::DecimalFormat* UnpackNumberFormat(Isolate* isolate, 71df6f1393f73a488ba2661b28d3d88a5ac19c4ea2Dianne Hackborn Handle<JSObject> obj); 72df6f1393f73a488ba2661b28d3d88a5ac19c4ea2Dianne Hackborn 73cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Release memory we allocated for the NumberFormat once the JS object that 74cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // holds the pointer gets garbage collected. 75cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static void DeleteNumberFormat( 76cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn const v8::WeakCallbackData<v8::Value, void>& data); 77cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 78cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn private: 79cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn NumberFormat(); 80cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn}; 81cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 82cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 83cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass Collator { 84cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn public: 85cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Create a collator for the specificied locale and options. Returns the 86cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // resolved settings for the locale / options. 87cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::Collator* InitializeCollator( 88cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Isolate* isolate, 89cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<String> locale, 90cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> options, 91cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> resolved); 924500be62dea3895a98336122a2944cc4ab024bc5George Mount 934500be62dea3895a98336122a2944cc4ab024bc5George Mount // Unpacks collator object from corresponding JavaScript object. 94cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::Collator* UnpackCollator(Isolate* isolate, Handle<JSObject> obj); 95cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 96cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Release memory we allocated for the Collator once the JS object that holds 97cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // the pointer gets garbage collected. 98cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static void DeleteCollator( 99cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn const v8::WeakCallbackData<v8::Value, void>& data); 100cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 101cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn private: 102cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Collator(); 103cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn}; 104cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 105cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackbornclass BreakIterator { 1064500be62dea3895a98336122a2944cc4ab024bc5George Mount public: 1074500be62dea3895a98336122a2944cc4ab024bc5George Mount // Create a BreakIterator for the specificied locale and options. Returns the 108cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // resolved settings for the locale / options. 109cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::BreakIterator* InitializeBreakIterator( 110cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Isolate* isolate, 111cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<String> locale, 112cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> options, 1133a7571011a8f2c2e2685c4e3e7a6fa46673ee7eaDianne Hackborn Handle<JSObject> resolved); 114cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 115cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn // Unpacks break iterator object from corresponding JavaScript object. 116cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn static icu::BreakIterator* UnpackBreakIterator(Isolate* isolate, 117cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn Handle<JSObject> obj); 1183a7571011a8f2c2e2685c4e3e7a6fa46673ee7eaDianne Hackborn 1195506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn // Release memory we allocated for the BreakIterator once the JS object that 1205506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn // holds the pointer gets garbage collected. 1215506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn static void DeleteBreakIterator( 1225506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn const v8::WeakCallbackData<v8::Value, void>& data); 1235506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn 1245506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn private: 1255506618c80a292ac275d8b0c1046b446c7f58836Dianne Hackborn BreakIterator(); 126cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn}; 127cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn 128df6f1393f73a488ba2661b28d3d88a5ac19c4ea2Dianne Hackborn} } // namespace v8::internal 129df6f1393f73a488ba2661b28d3d88a5ac19c4ea2Dianne Hackborn 130cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn#endif // V8_I18N_H_ 131cba2e2c881e8e16ea5025b564c94320174d65f01Dianne Hackborn