aboutsummaryrefslogtreecommitdiff
path: root/src/node_options.h
diff options
context:
space:
mode:
authorRefael Ackermann <refack@gmail.com>2019-02-23 17:21:56 -0500
committerRefael Ackermann <refack@gmail.com>2019-03-03 20:03:31 -0500
commitaf8b92c0731603e5337cca3202603402d345c0a9 (patch)
treec0fe7df981d634e1ec6ddb574aad33f0c5b402f0 /src/node_options.h
parent31be55203fd220142cdefdf957a5a71374c07876 (diff)
downloadandroid-node-v8-af8b92c0731603e5337cca3202603402d345c0a9.tar.gz
android-node-v8-af8b92c0731603e5337cca3202603402d345c0a9.tar.bz2
android-node-v8-af8b92c0731603e5337cca3202603402d345c0a9.zip
src: refactor node options parsers to mitigate MSVC bug
PR-URL: https://github.com/nodejs/node/pull/26280 Fixes: https://github.com/nodejs/node/issues/25593 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Diffstat (limited to 'src/node_options.h')
-rw-r--r--src/node_options.h45
1 files changed, 12 insertions, 33 deletions
diff --git a/src/node_options.h b/src/node_options.h
index 9313c4a538..02e1e84e50 100644
--- a/src/node_options.h
+++ b/src/node_options.h
@@ -310,12 +310,12 @@ class OptionsParser {
//
// If `*error` is set, the result of the parsing should be discarded and the
// contents of any of the argument vectors should be considered undefined.
- virtual void Parse(std::vector<std::string>* const args,
- std::vector<std::string>* const exec_args,
- std::vector<std::string>* const v8_args,
- Options* const options,
- OptionEnvvarSettings required_env_settings,
- std::vector<std::string>* const errors) const;
+ void Parse(std::vector<std::string>* const args,
+ std::vector<std::string>* const exec_args,
+ std::vector<std::string>* const v8_args,
+ Options* const options,
+ OptionEnvvarSettings required_env_settings,
+ std::vector<std::string>* const errors) const;
private:
// We support the wide variety of different option types by remembering
@@ -396,33 +396,12 @@ class OptionsParser {
friend void GetOptions(const v8::FunctionCallbackInfo<v8::Value>& args);
};
-class DebugOptionsParser : public OptionsParser<DebugOptions> {
- public:
- DebugOptionsParser();
-
- static const DebugOptionsParser instance;
-};
-
-class EnvironmentOptionsParser : public OptionsParser<EnvironmentOptions> {
- public:
- EnvironmentOptionsParser();
-
- static const EnvironmentOptionsParser instance;
-};
-
-class PerIsolateOptionsParser : public OptionsParser<PerIsolateOptions> {
- public:
- PerIsolateOptionsParser();
-
- static const PerIsolateOptionsParser instance;
-};
-
-class PerProcessOptionsParser : public OptionsParser<PerProcessOptions> {
- public:
- PerProcessOptionsParser();
-
- static const PerProcessOptionsParser instance;
-};
+using StringVector = std::vector<std::string>;
+template <class OptionsType, class = Options>
+void Parse(
+ StringVector* const args, StringVector* const exec_args,
+ StringVector* const v8_args, OptionsType* const options,
+ OptionEnvvarSettings required_env_settings, StringVector* const errors);
} // namespace options_parser