Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(427)

Unified Diff: src/i18n.h

Issue 2736543002: [intl] Implement Intl.PluralRules
Patch Set: clarify comment Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/flag-definitions.h ('k') | src/i18n.cc » ('j') | src/i18n.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/i18n.h
diff --git a/src/i18n.h b/src/i18n.h
index f89d005b00c844309d925768f231c0bde94ca514..e3258dbe661d71d2ca7217537a450a234f4a6f59 100644
--- a/src/i18n.h
+++ b/src/i18n.h
@@ -14,6 +14,7 @@ class BreakIterator;
class Collator;
class DecimalFormat;
class SimpleDateFormat;
+class PluralRules;
}
namespace v8 {
@@ -101,6 +102,43 @@ class Collator {
Collator();
};
+class PluralRules {
+ public:
+ // Create a PluralRules and DecimalFormat for the specificied locale and
+ // options. Returns false on an ICU failure.
+ static bool InitializePluralRules(Isolate* isolate, Handle<String> locale,
+ Handle<JSObject> options,
+ Handle<JSObject> resolved,
+ icu::PluralRules** plural_rules,
+ icu::DecimalFormat** decimal_format);
+
+ // Unpacks PluralRules object from corresponding JavaScript object.
+ static icu::PluralRules* UnpackPluralRules(Isolate* isolate,
+ Handle<JSObject> obj);
+
+ // Unpacks NumberFormat object from corresponding JavaScript PluralRUles
+ // object.
+ static icu::DecimalFormat* UnpackNumberFormat(Isolate* isolate,
+ Handle<JSObject> obj);
+
+ // Release memory we allocated for the Collator once the JS object that holds
jungshik at Google 2017/05/08 19:16:54 Collator? You mean PluralRules, don't you?
+ // the pointer gets garbage collected.
+ static void DeletePluralRules(const v8::WeakCallbackInfo<void>& data);
+
+ // Layout description.
+ static const int kPluralRules = JSObject::kHeaderSize;
+ // Values are formatted with this NumberFormat and then parsed as a Number
+ // to round them based on the options passed into the PluralRules objct.
+ // TODO(littledan): If a future version of ICU supports the rounding
+ // built-in to PluralRules, switch to that, see this bug:
+ // http://bugs.icu-project.org/trac/ticket/12763
jungshik at Google 2017/05/08 19:16:54 That bug was fixed and is a part of ICU 59. I'll
jungshik at Google 2017/05/19 05:28:34 FYI, ICU in Chromium tree was updated to 59.1.
+ static const int kNumberFormat = kPluralRules + kPointerSize;
+ static const int kSize = kNumberFormat + kPointerSize;
+
+ private:
+ PluralRules();
+};
+
class V8BreakIterator {
public:
// Create a BreakIterator for the specificied locale and options. Returns the
« no previous file with comments | « src/flag-definitions.h ('k') | src/i18n.cc » ('j') | src/i18n.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698