From ed0a867a4e4bff40ef516d9480fefd27d7bc5b11 Mon Sep 17 00:00:00 2001 From: Deokjin Kim Date: Wed, 30 Nov 2022 10:23:37 +0900 Subject: [PATCH] src: use `enum class` instead of `enum` in node_i18n MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "enum class" has more advantages than "enum" because it's strongly typed and scoped. Refs: https://isocpp.org/wiki/faq/cpp11-language-types#enum-class PR-URL: https://github.com/nodejs/node/pull/45646 Reviewed-By: Darshan Sen Reviewed-By: Tobias Nießen Reviewed-By: Minwoo Jung --- src/node_i18n.cc | 10 +++++----- src/node_i18n.h | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/node_i18n.cc b/src/node_i18n.cc index 441c2b32763a96..808f1fa8d77718 100644 --- a/src/node_i18n.cc +++ b/src/node_i18n.cc @@ -642,13 +642,13 @@ int32_t ToUnicode(MaybeStackBuffer* buf, int32_t ToASCII(MaybeStackBuffer* buf, const char* input, size_t length, - enum idna_mode mode) { + idna_mode mode) { UErrorCode status = U_ZERO_ERROR; uint32_t options = // CheckHyphens = false; handled later UIDNA_CHECK_BIDI | // CheckBidi = true UIDNA_CHECK_CONTEXTJ | // CheckJoiners = true UIDNA_NONTRANSITIONAL_TO_ASCII; // Nontransitional_Processing - if (mode == IDNA_STRICT) { + if (mode == idna_mode::kStrict) { options |= UIDNA_USE_STD3_RULES; // UseSTD3ASCIIRules = beStrict // VerifyDnsLength = beStrict; // handled later @@ -696,14 +696,14 @@ int32_t ToASCII(MaybeStackBuffer* buf, info.errors &= ~UIDNA_ERROR_LEADING_HYPHEN; info.errors &= ~UIDNA_ERROR_TRAILING_HYPHEN; - if (mode != IDNA_STRICT) { + if (mode != idna_mode::kStrict) { // VerifyDnsLength = beStrict info.errors &= ~UIDNA_ERROR_EMPTY_LABEL; info.errors &= ~UIDNA_ERROR_LABEL_TOO_LONG; info.errors &= ~UIDNA_ERROR_DOMAIN_NAME_TOO_LONG; } - if (U_FAILURE(status) || (mode != IDNA_LENIENT && info.errors != 0)) { + if (U_FAILURE(status) || (mode != idna_mode::kLenient && info.errors != 0)) { len = -1; buf->SetLength(0); } else { @@ -741,7 +741,7 @@ static void ToASCII(const FunctionCallbackInfo& args) { Utf8Value val(env->isolate(), args[0]); // optional arg bool lenient = args[1]->BooleanValue(env->isolate()); - enum idna_mode mode = lenient ? IDNA_LENIENT : IDNA_DEFAULT; + idna_mode mode = lenient ? idna_mode::kLenient : idna_mode::kDefault; MaybeStackBuffer buf; int32_t len = ToASCII(&buf, *val, val.length(), mode); diff --git a/src/node_i18n.h b/src/node_i18n.h index 1e9f13ebc93f02..f32ade831b17a0 100644 --- a/src/node_i18n.h +++ b/src/node_i18n.h @@ -42,15 +42,15 @@ bool InitializeICUDirectory(const std::string& path); void SetDefaultTimeZone(const char* tzid); -enum idna_mode { +enum class idna_mode { // Default mode for maximum compatibility. - IDNA_DEFAULT, + kDefault, // Ignore all errors in IDNA conversion, if possible. - IDNA_LENIENT, + kLenient, // Enforce STD3 rules (UseSTD3ASCIIRules) and DNS length restrictions // (VerifyDnsLength). Corresponds to `beStrict` flag in the "domain to ASCII" // algorithm. - IDNA_STRICT + kStrict }; // Implements the WHATWG URL Standard "domain to ASCII" algorithm. @@ -58,7 +58,7 @@ enum idna_mode { int32_t ToASCII(MaybeStackBuffer* buf, const char* input, size_t length, - enum idna_mode mode = IDNA_DEFAULT); + idna_mode mode = idna_mode::kDefault); // Implements the WHATWG URL Standard "domain to Unicode" algorithm. // https://url.spec.whatwg.org/#concept-domain-to-unicode