diff options
author | Refael Ackermann <refack@gmail.com> | 2019-02-23 17:21:56 -0500 |
---|---|---|
committer | Refael Ackermann <refack@gmail.com> | 2019-03-03 20:03:31 -0500 |
commit | af8b92c0731603e5337cca3202603402d345c0a9 (patch) | |
tree | c0fe7df981d634e1ec6ddb574aad33f0c5b402f0 /src/node_options.h | |
parent | 31be55203fd220142cdefdf957a5a71374c07876 (diff) | |
download | android-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.h | 45 |
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 |