@@ -21,73 +21,88 @@ EnvironmentOptions* PerIsolateOptions::get_per_env_options() {
21
21
return per_env.get ();
22
22
}
23
23
24
+ namespace options_parser {
25
+
24
26
template <typename Options>
25
27
void OptionsParser<Options>::AddOption(const std::string& name,
28
+ const std::string& help_text,
26
29
bool Options::* field,
27
30
OptionEnvvarSettings env_setting) {
28
- options_.emplace (name, OptionInfo {
29
- kBoolean ,
30
- std::make_shared<SimpleOptionField<bool >>(field),
31
- env_setting
32
- });
31
+ options_.emplace (name,
32
+ OptionInfo{ kBoolean ,
33
+ std::make_shared<SimpleOptionField<bool >>(field),
34
+ env_setting,
35
+ help_text });
33
36
}
34
37
35
38
template <typename Options>
36
39
void OptionsParser<Options>::AddOption(const std::string& name,
40
+ const std::string& help_text,
37
41
int64_t Options::* field,
38
42
OptionEnvvarSettings env_setting) {
39
- options_.emplace (name, OptionInfo {
40
- kInteger ,
41
- std::make_shared<SimpleOptionField<int64_t >>(field),
42
- env_setting
43
- });
43
+ options_.emplace (
44
+ name,
45
+ OptionInfo{kInteger ,
46
+ std::make_shared<SimpleOptionField<int64_t >>(field),
47
+ env_setting,
48
+ help_text});
44
49
}
45
50
46
51
template <typename Options>
47
52
void OptionsParser<Options>::AddOption(const std::string& name,
53
+ const std::string& help_text,
48
54
std::string Options::* field,
49
55
OptionEnvvarSettings env_setting) {
50
- options_.emplace (name, OptionInfo {
51
- kString ,
52
- std::make_shared<SimpleOptionField<std::string>>(field),
53
- env_setting
54
- });
56
+ options_.emplace (
57
+ name,
58
+ OptionInfo{kString ,
59
+ std::make_shared<SimpleOptionField<std::string>>(field),
60
+ env_setting,
61
+ help_text});
55
62
}
56
63
57
64
template <typename Options>
58
65
void OptionsParser<Options>::AddOption(
59
66
const std::string& name,
67
+ const std::string& help_text,
60
68
std::vector<std::string> Options::* field,
61
69
OptionEnvvarSettings env_setting) {
62
70
options_.emplace (name, OptionInfo {
63
71
kStringList ,
64
72
std::make_shared<SimpleOptionField<std::vector<std::string>>>(field),
65
- env_setting
73
+ env_setting,
74
+ help_text
66
75
});
67
76
}
68
77
69
78
template <typename Options>
70
79
void OptionsParser<Options>::AddOption(const std::string& name,
80
+ const std::string& help_text,
71
81
HostPort Options::* field,
72
82
OptionEnvvarSettings env_setting) {
73
- options_.emplace (name, OptionInfo {
74
- kHostPort ,
75
- std::make_shared<SimpleOptionField<HostPort>>(field),
76
- env_setting
77
- });
83
+ options_.emplace (
84
+ name,
85
+ OptionInfo{kHostPort ,
86
+ std::make_shared<SimpleOptionField<HostPort>>(field),
87
+ env_setting,
88
+ help_text});
78
89
}
79
90
80
91
template <typename Options>
81
- void OptionsParser<Options>::AddOption(const std::string& name, NoOp no_op_tag,
92
+ void OptionsParser<Options>::AddOption(const std::string& name,
93
+ const std::string& help_text,
94
+ NoOp no_op_tag,
82
95
OptionEnvvarSettings env_setting) {
83
- options_.emplace (name, OptionInfo { kNoOp , nullptr , env_setting });
96
+ options_.emplace (name, OptionInfo{ kNoOp , nullptr , env_setting, help_text });
84
97
}
85
98
86
99
template <typename Options>
87
100
void OptionsParser<Options>::AddOption(const std::string& name,
101
+ const std::string& help_text,
88
102
V8Option v8_option_tag,
89
103
OptionEnvvarSettings env_setting) {
90
- options_.emplace (name, OptionInfo { kV8Option , nullptr , env_setting });
104
+ options_.emplace (name,
105
+ OptionInfo{kV8Option , nullptr , env_setting, help_text});
91
106
}
92
107
93
108
template <typename Options>
@@ -161,11 +176,10 @@ template <typename ChildOptions>
161
176
auto OptionsParser<Options>::Convert(
162
177
typename OptionsParser<ChildOptions>::OptionInfo original,
163
178
ChildOptions* (Options::* get_child)()) {
164
- return OptionInfo {
165
- original.type ,
166
- Convert (original.field , get_child),
167
- original.env_setting
168
- };
179
+ return OptionInfo{original.type ,
180
+ Convert (original.field , get_child),
181
+ original.env_setting ,
182
+ original.help_text };
169
183
}
170
184
171
185
template <typename Options>
@@ -385,24 +399,21 @@ void OptionsParser<Options>::Parse(
385
399
386
400
switch (info.type ) {
387
401
case kBoolean :
388
- *std::static_pointer_cast<OptionField<bool >>(info.field )
389
- ->Lookup (options) = true ;
402
+ *Lookup<bool >(info.field , options) = true ;
390
403
break ;
391
404
case kInteger :
392
- *std::static_pointer_cast<OptionField<int64_t >>(info.field )
393
- ->Lookup (options) = std::atoll (value.c_str ());
405
+ *Lookup<int64_t >(info.field , options) = std::atoll (value.c_str ());
394
406
break ;
395
407
case kString :
396
- *std::static_pointer_cast<OptionField<std::string>>(info.field )
397
- ->Lookup (options) = value;
408
+ *Lookup<std::string>(info.field , options) = value;
398
409
break ;
399
410
case kStringList :
400
- std::static_pointer_cast<OptionField< std::vector<std::string>>>(
401
- info. field )-> Lookup (options) ->emplace_back (std::move (value));
411
+ Lookup< std::vector<std::string>>(info. field , options)
412
+ ->emplace_back (std::move (value));
402
413
break ;
403
414
case kHostPort :
404
- std::static_pointer_cast<OptionField< HostPort>> (info.field )
405
- ->Lookup (options)-> Update (SplitHostPort (value, error));
415
+ Lookup< HostPort>(info.field , options )
416
+ ->Update (SplitHostPort (value, error));
406
417
break ;
407
418
case kNoOp :
408
419
break ;
@@ -415,6 +426,7 @@ void OptionsParser<Options>::Parse(
415
426
}
416
427
}
417
428
429
+ } // namespace options_parser
418
430
} // namespace node
419
431
420
432
#endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
0 commit comments