summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMatteo Collina <hello@matteocollina.com>2018-12-18 12:12:21 +0100
committercjihrig <cjihrig@gmail.com>2018-12-20 09:31:52 -0500
commit436f4de38f511508710eb1492f4d23a9f427e7f7 (patch)
tree7158f1292bc30d749f2beb5f76846c01e262ad11 /src
parentcdcb1b77379f780b7b187d711c44181dbd0a6e24 (diff)
downloadandroid-node-v8-436f4de38f511508710eb1492f4d23a9f427e7f7.tar.gz
android-node-v8-436f4de38f511508710eb1492f4d23a9f427e7f7.tar.bz2
android-node-v8-436f4de38f511508710eb1492f4d23a9f427e7f7.zip
src: add kUInteger parsing
This commit adds support for uint64_t option parsing. PR-URL: https://github.com/nodejs/node/pull/24811 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Myles Borins <myles.borins@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com> Reviewed-By: Сковорода Никита Андреевич <chalkerx@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Jeremiah Senkpiel <fishrock123@rocketmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/node_options-inl.h16
-rw-r--r--src/node_options.cc4
-rw-r--r--src/node_options.h5
3 files changed, 25 insertions, 0 deletions
diff --git a/src/node_options-inl.h b/src/node_options-inl.h
index d25557e6a5..f482bcd366 100644
--- a/src/node_options-inl.h
+++ b/src/node_options-inl.h
@@ -42,6 +42,19 @@ void OptionsParser<Options>::AddOption(const std::string& name,
template <typename Options>
void OptionsParser<Options>::AddOption(const std::string& name,
const std::string& help_text,
+ uint64_t Options::* field,
+ OptionEnvvarSettings env_setting) {
+ options_.emplace(
+ name,
+ OptionInfo{kUInteger,
+ std::make_shared<SimpleOptionField<uint64_t>>(field),
+ env_setting,
+ help_text});
+}
+
+template <typename Options>
+void OptionsParser<Options>::AddOption(const std::string& name,
+ const std::string& help_text,
int64_t Options::* field,
OptionEnvvarSettings env_setting) {
options_.emplace(
@@ -401,6 +414,9 @@ void OptionsParser<Options>::Parse(
case kInteger:
*Lookup<int64_t>(info.field, options) = std::atoll(value.c_str());
break;
+ case kUInteger:
+ *Lookup<uint64_t>(info.field, options) = std::stoull(value.c_str());
+ break;
case kString:
*Lookup<std::string>(info.field, options) = value;
break;
diff --git a/src/node_options.cc b/src/node_options.cc
index d665bc4040..d4cc19eb02 100644
--- a/src/node_options.cc
+++ b/src/node_options.cc
@@ -429,6 +429,9 @@ void GetOptions(const FunctionCallbackInfo<Value>& args) {
case kInteger:
value = Number::New(isolate, *parser.Lookup<int64_t>(field, opts));
break;
+ case kUInteger:
+ value = Number::New(isolate, *parser.Lookup<uint64_t>(field, opts));
+ break;
case kString:
if (!ToV8Value(context, *parser.Lookup<std::string>(field, opts))
.ToLocal(&value)) {
@@ -516,6 +519,7 @@ void Initialize(Local<Object> target,
NODE_DEFINE_CONSTANT(types, kV8Option);
NODE_DEFINE_CONSTANT(types, kBoolean);
NODE_DEFINE_CONSTANT(types, kInteger);
+ NODE_DEFINE_CONSTANT(types, kUInteger);
NODE_DEFINE_CONSTANT(types, kString);
NODE_DEFINE_CONSTANT(types, kHostPort);
NODE_DEFINE_CONSTANT(types, kStringList);
diff --git a/src/node_options.h b/src/node_options.h
index d317e12b6f..f5489900b4 100644
--- a/src/node_options.h
+++ b/src/node_options.h
@@ -203,6 +203,7 @@ enum OptionType {
kV8Option,
kBoolean,
kInteger,
+ kUInteger,
kString,
kHostPort,
kStringList,
@@ -231,6 +232,10 @@ class OptionsParser {
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
void AddOption(const std::string& name,
const std::string& help_text,
+ uint64_t Options::* field,
+ OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
+ void AddOption(const std::string& name,
+ const std::string& help_text,
int64_t Options::* field,
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
void AddOption(const std::string& name,