Skip to content

Commit 0fa3a51

Browse files
ZYSzysBethGriggs
authored andcommitted
src: reduce to simple const char* in OptionsParser
> A lot of the `std::string` usage here could be reduced to simple `const char*`s if it's reasonable to expect the values to be known at compile-time. So this commit uses `const char*` to replace most of `std::string` in `OptionsParser`. PR-URL: #26297 Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Colin Ihrig <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Beth Griggs <[email protected]> Reviewed-By: Luigi Pinca <[email protected]> Reviewed-By: Ruben Bridgewater <[email protected]>
1 parent 6d4731e commit 0fa3a51

File tree

2 files changed

+45
-49
lines changed

2 files changed

+45
-49
lines changed

src/node_options-inl.h

+24-24
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ EnvironmentOptions* PerIsolateOptions::get_per_env_options() {
2424
namespace options_parser {
2525

2626
template <typename Options>
27-
void OptionsParser<Options>::AddOption(const std::string& name,
28-
const std::string& help_text,
27+
void OptionsParser<Options>::AddOption(const char* name,
28+
const char* help_text,
2929
bool Options::* field,
3030
OptionEnvvarSettings env_setting) {
3131
options_.emplace(name,
@@ -36,8 +36,8 @@ void OptionsParser<Options>::AddOption(const std::string& name,
3636
}
3737

3838
template <typename Options>
39-
void OptionsParser<Options>::AddOption(const std::string& name,
40-
const std::string& help_text,
39+
void OptionsParser<Options>::AddOption(const char* name,
40+
const char* help_text,
4141
uint64_t Options::* field,
4242
OptionEnvvarSettings env_setting) {
4343
options_.emplace(
@@ -49,8 +49,8 @@ void OptionsParser<Options>::AddOption(const std::string& name,
4949
}
5050

5151
template <typename Options>
52-
void OptionsParser<Options>::AddOption(const std::string& name,
53-
const std::string& help_text,
52+
void OptionsParser<Options>::AddOption(const char* name,
53+
const char* help_text,
5454
int64_t Options::* field,
5555
OptionEnvvarSettings env_setting) {
5656
options_.emplace(
@@ -62,8 +62,8 @@ void OptionsParser<Options>::AddOption(const std::string& name,
6262
}
6363

6464
template <typename Options>
65-
void OptionsParser<Options>::AddOption(const std::string& name,
66-
const std::string& help_text,
65+
void OptionsParser<Options>::AddOption(const char* name,
66+
const char* help_text,
6767
std::string Options::* field,
6868
OptionEnvvarSettings env_setting) {
6969
options_.emplace(
@@ -76,8 +76,8 @@ void OptionsParser<Options>::AddOption(const std::string& name,
7676

7777
template <typename Options>
7878
void OptionsParser<Options>::AddOption(
79-
const std::string& name,
80-
const std::string& help_text,
79+
const char* name,
80+
const char* help_text,
8181
std::vector<std::string> Options::* field,
8282
OptionEnvvarSettings env_setting) {
8383
options_.emplace(name, OptionInfo {
@@ -89,8 +89,8 @@ void OptionsParser<Options>::AddOption(
8989
}
9090

9191
template <typename Options>
92-
void OptionsParser<Options>::AddOption(const std::string& name,
93-
const std::string& help_text,
92+
void OptionsParser<Options>::AddOption(const char* name,
93+
const char* help_text,
9494
HostPort Options::* field,
9595
OptionEnvvarSettings env_setting) {
9696
options_.emplace(
@@ -102,44 +102,44 @@ void OptionsParser<Options>::AddOption(const std::string& name,
102102
}
103103

104104
template <typename Options>
105-
void OptionsParser<Options>::AddOption(const std::string& name,
106-
const std::string& help_text,
105+
void OptionsParser<Options>::AddOption(const char* name,
106+
const char* help_text,
107107
NoOp no_op_tag,
108108
OptionEnvvarSettings env_setting) {
109109
options_.emplace(name, OptionInfo{kNoOp, nullptr, env_setting, help_text});
110110
}
111111

112112
template <typename Options>
113-
void OptionsParser<Options>::AddOption(const std::string& name,
114-
const std::string& help_text,
113+
void OptionsParser<Options>::AddOption(const char* name,
114+
const char* help_text,
115115
V8Option v8_option_tag,
116116
OptionEnvvarSettings env_setting) {
117117
options_.emplace(name,
118118
OptionInfo{kV8Option, nullptr, env_setting, help_text});
119119
}
120120

121121
template <typename Options>
122-
void OptionsParser<Options>::AddAlias(const std::string& from,
123-
const std::string& to) {
122+
void OptionsParser<Options>::AddAlias(const char* from,
123+
const char* to) {
124124
aliases_[from] = { to };
125125
}
126126

127127
template <typename Options>
128-
void OptionsParser<Options>::AddAlias(const std::string& from,
128+
void OptionsParser<Options>::AddAlias(const char* from,
129129
const std::vector<std::string>& to) {
130130
aliases_[from] = to;
131131
}
132132

133133
template <typename Options>
134134
void OptionsParser<Options>::AddAlias(
135-
const std::string& from,
135+
const char* from,
136136
const std::initializer_list<std::string>& to) {
137137
AddAlias(from, std::vector<std::string>(to));
138138
}
139139

140140
template <typename Options>
141-
void OptionsParser<Options>::Implies(const std::string& from,
142-
const std::string& to) {
141+
void OptionsParser<Options>::Implies(const char* from,
142+
const char* to) {
143143
auto it = options_.find(to);
144144
CHECK_NE(it, options_.end());
145145
CHECK_EQ(it->second.type, kBoolean);
@@ -149,8 +149,8 @@ void OptionsParser<Options>::Implies(const std::string& from,
149149
}
150150

151151
template <typename Options>
152-
void OptionsParser<Options>::ImpliesNot(const std::string& from,
153-
const std::string& to) {
152+
void OptionsParser<Options>::ImpliesNot(const char* from,
153+
const char* to) {
154154
auto it = options_.find(to);
155155
CHECK_NE(it, options_.end());
156156
CHECK_EQ(it->second.type, kBoolean);

src/node_options.h

+21-25
Original file line numberDiff line numberDiff line change
@@ -185,43 +185,39 @@ class OptionsParser {
185185
struct NoOp {};
186186
struct V8Option {};
187187

188-
// TODO(addaleax): A lot of the `std::string` usage here could be reduced
189-
// to simple `const char*`s if it's reasonable to expect the values to be
190-
// known at compile-time.
191-
192188
// These methods add a single option to the parser. Optionally, it can be
193189
// specified whether the option should be allowed from environment variable
194190
// sources (i.e. NODE_OPTIONS).
195-
void AddOption(const std::string& name,
196-
const std::string& help_text,
191+
void AddOption(const char* name,
192+
const char* help_text,
197193
bool Options::* field,
198194
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
199-
void AddOption(const std::string& name,
200-
const std::string& help_text,
195+
void AddOption(const char* name,
196+
const char* help_text,
201197
uint64_t Options::* field,
202198
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
203-
void AddOption(const std::string& name,
204-
const std::string& help_text,
199+
void AddOption(const char* name,
200+
const char* help_text,
205201
int64_t Options::* field,
206202
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
207-
void AddOption(const std::string& name,
208-
const std::string& help_text,
203+
void AddOption(const char* name,
204+
const char* help_text,
209205
std::string Options::* field,
210206
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
211-
void AddOption(const std::string& name,
212-
const std::string& help_text,
207+
void AddOption(const char* name,
208+
const char* help_text,
213209
std::vector<std::string> Options::* field,
214210
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
215-
void AddOption(const std::string& name,
216-
const std::string& help_text,
211+
void AddOption(const char* name,
212+
const char* help_text,
217213
HostPort Options::* field,
218214
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
219-
void AddOption(const std::string& name,
220-
const std::string& help_text,
215+
void AddOption(const char* name,
216+
const char* help_text,
221217
NoOp no_op_tag,
222218
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
223-
void AddOption(const std::string& name,
224-
const std::string& help_text,
219+
void AddOption(const char* name,
220+
const char* help_text,
225221
V8Option v8_option_tag,
226222
OptionEnvvarSettings env_setting = kDisallowedInEnvironment);
227223

@@ -232,15 +228,15 @@ class OptionsParser {
232228
// the option is presented in that form (i.e. with a '=').
233229
// If `from` has the form "--option-a <arg>", the alias will only be expanded
234230
// if the option has a non-option argument (not starting with -) following it.
235-
void AddAlias(const std::string& from, const std::string& to);
236-
void AddAlias(const std::string& from, const std::vector<std::string>& to);
237-
void AddAlias(const std::string& from,
231+
void AddAlias(const char* from, const char* to);
232+
void AddAlias(const char* from, const std::vector<std::string>& to);
233+
void AddAlias(const char* from,
238234
const std::initializer_list<std::string>& to);
239235

240236
// Add implications from some arbitrary option to a boolean one, either
241237
// in a way that makes `from` set `to` to true or to false.
242-
void Implies(const std::string& from, const std::string& to);
243-
void ImpliesNot(const std::string& from, const std::string& to);
238+
void Implies(const char* from, const char* to);
239+
void ImpliesNot(const char* from, const char* to);
244240

245241
// Insert options from another options parser into this one, along with
246242
// a method that yields the target options type from this parser's options

0 commit comments

Comments
 (0)