Selaa lähdekoodia

ParameterOptionHandler: Use initializer lists for params

Tatsuhiro Tsujikawa 12 vuotta sitten
vanhempi
commit
09c597fbb8
4 muutettua tiedostoa jossa 39 lisäystä ja 148 poistoa
  1. 32 43
      src/OptionHandlerFactory.cc
  2. 2 44
      src/OptionHandlerImpl.cc
  3. 1 19
      src/OptionHandlerImpl.h
  4. 4 42
      test/OptionHandlerTest.cc

+ 32 - 43
src/OptionHandlerFactory.cc

@@ -282,8 +282,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_DOWNLOAD_RESULT,
                        TEXT_DOWNLOAD_RESULT,
                        A2_V_DEFAULT,
-                       A2_V_DEFAULT,
-                       A2_V_FULL));
+                       { A2_V_DEFAULT, A2_V_FULL}));
     op->addTag(TAG_ADVANCED);
     op->setChangeGlobalOption(true);
     handlers.push_back(op);
@@ -328,24 +327,6 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
     handlers.push_back(op);
   }
   {
-    std::string params[] = {
-#ifdef HAVE_EPOLL
-      V_EPOLL,
-#endif // HAVE_EPOLL
-#ifdef HAVE_KQUEUE
-      V_KQUEUE,
-#endif // HAVE_KQUEUE
-#ifdef HAVE_PORT_ASSOCIATE
-      V_PORT,
-#endif // HAVE_PORT_ASSOCIATE
-#ifdef HAVE_LIBUV
-      V_LIBUV,
-#endif // HAVE_LIBUV
-#ifdef HAVE_POLL
-      V_POLL,
-#endif // HAVE_POLL
-      V_SELECT
-    };
     OptionHandler* op(new ParameterOptionHandler
                       (PREF_EVENT_POLL,
                        TEXT_EVENT_POLL,
@@ -362,23 +343,37 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
 #else // defined(HAVE_EPOLL)
                        V_SELECT,
 #endif // defined(HAVE_EPOLL)
-                       std::vector<std::string>
-                       (vbegin(params), vend(params))));
+                       {
+#ifdef HAVE_EPOLL
+                         V_EPOLL,
+#endif // HAVE_EPOLL
+#ifdef HAVE_KQUEUE
+                           V_KQUEUE,
+#endif // HAVE_KQUEUE
+#ifdef HAVE_PORT_ASSOCIATE
+                           V_PORT,
+#endif // HAVE_PORT_ASSOCIATE
+#ifdef HAVE_LIBUV
+                           V_LIBUV,
+#endif // HAVE_LIBUV
+#ifdef HAVE_POLL
+                           V_POLL,
+#endif // HAVE_POLL
+                           V_SELECT
+                           }));
     op->addTag(TAG_ADVANCED);
     handlers.push_back(op);
   }
   {
-    const std::string params[] = { V_NONE, V_PREALLOC, V_TRUNC,
-#ifdef HAVE_SOME_FALLOCATE
-                                   V_FALLOC
-#endif // HAVE_SOME_FALLOCATE
-    };
     OptionHandler* op(new ParameterOptionHandler
                       (PREF_FILE_ALLOCATION,
                        TEXT_FILE_ALLOCATION,
                        V_PREALLOC,
-                       std::vector<std::string>
-                       (vbegin(params), vend(params)),
+                       { V_NONE, V_PREALLOC, V_TRUNC,
+#ifdef HAVE_SOME_FALLOCATE
+                           V_FALLOC
+#endif // HAVE_SOME_FALLOCATE
+                           },
                        'a'));
     op->addTag(TAG_BASIC);
     op->addTag(TAG_FILE);
@@ -1107,9 +1102,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_STREAM_PIECE_SELECTOR,
                        TEXT_STREAM_PIECE_SELECTOR,
                        A2_V_DEFAULT,
-                       A2_V_DEFAULT,
-                       V_INORDER,
-                       A2_V_GEOM));
+                       { A2_V_DEFAULT, V_INORDER, A2_V_GEOM }));
     op->addTag(TAG_FTP);
     op->addTag(TAG_HTTP);
     op->setInitialOption(true);
@@ -1132,13 +1125,11 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
     handlers.push_back(op);
   }
   {
-    const std::string params[] = { V_INORDER, V_FEEDBACK, V_ADAPTIVE };
     OptionHandler* op(new ParameterOptionHandler
                       (PREF_URI_SELECTOR,
                        TEXT_URI_SELECTOR,
                        V_FEEDBACK,
-                       std::vector<std::string>
-                       (vbegin(params), vend(params))));
+                       { V_INORDER, V_FEEDBACK, V_ADAPTIVE }));
     op->addTag(TAG_FTP);
     op->addTag(TAG_HTTP);
     op->setInitialOption(true);
@@ -1404,7 +1395,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_FTP_TYPE,
                        TEXT_FTP_TYPE,
                        V_BINARY,
-                       V_BINARY, V_ASCII));
+                       { V_BINARY, V_ASCII }));
     op->addTag(TAG_FTP);
     op->setInitialOption(true);
     op->setChangeGlobalOption(true);
@@ -1601,7 +1592,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_PROXY_METHOD,
                        TEXT_PROXY_METHOD,
                        V_GET,
-                       V_GET, V_TUNNEL));
+                       { V_GET, V_TUNNEL }));
     op->addTag(TAG_FTP);
     op->addTag(TAG_HTTP);
     op->setInitialOption(true);
@@ -1750,7 +1741,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_BT_MIN_CRYPTO_LEVEL,
                        TEXT_BT_MIN_CRYPTO_LEVEL,
                        V_PLAIN,
-                       V_PLAIN, V_ARC4));
+                       { V_PLAIN, V_ARC4 }));
     op->addTag(TAG_BITTORRENT);
     op->setInitialOption(true);
     op->setChangeGlobalOption(true);
@@ -2020,7 +2011,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_FOLLOW_TORRENT,
                        TEXT_FOLLOW_TORRENT,
                        A2_V_TRUE,
-                       A2_V_TRUE, V_MEM, A2_V_FALSE));
+                       { A2_V_TRUE, V_MEM, A2_V_FALSE }));
     op->addTag(TAG_BITTORRENT);
     op->setInitialOption(true);
     op->setChangeGlobalOption(true);
@@ -2148,7 +2139,7 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
                       (PREF_FOLLOW_METALINK,
                        TEXT_FOLLOW_METALINK,
                        A2_V_TRUE,
-                       A2_V_TRUE, V_MEM, A2_V_FALSE));
+                       { A2_V_TRUE, V_MEM, A2_V_FALSE }));
     op->addTag(TAG_METALINK);
     op->setInitialOption(true);
     op->setChangeGlobalOption(true);
@@ -2209,13 +2200,11 @@ std::vector<OptionHandler*> OptionHandlerFactory::createOptionHandlers()
     handlers.push_back(op);
   }
   {
-    const std::string params[] = { V_HTTP, V_HTTPS, V_FTP, V_NONE };
     OptionHandler* op(new ParameterOptionHandler
                       (PREF_METALINK_PREFERRED_PROTOCOL,
                        TEXT_METALINK_PREFERRED_PROTOCOL,
                        V_NONE,
-                       std::vector<std::string>
-                       (vbegin(params), vend(params))));
+                       { V_HTTP, V_HTTPS, V_FTP, V_NONE }));
     op->addTag(TAG_METALINK);
     op->setInitialOption(true);
     op->setChangeGlobalOption(true);

+ 2 - 44
src/OptionHandlerImpl.cc

@@ -394,55 +394,13 @@ ParameterOptionHandler::ParameterOptionHandler
 (const Pref* pref,
  const char* description,
  const std::string& defaultValue,
- const std::vector<std::string>& validParamValues,
+ std::vector<std::string>&& validParamValues,
  char shortName)
   : AbstractOptionHandler(pref, description, defaultValue,
                           OptionHandler::REQ_ARG, shortName),
-    validParamValues_(validParamValues)
+    validParamValues_(std::move(validParamValues))
 {}
 
-ParameterOptionHandler::ParameterOptionHandler
-(const Pref* pref,
- const char* description,
- const std::string& defaultValue,
- const std::string& validParamValue,
- char shortName)
-  : AbstractOptionHandler(pref, description, defaultValue,
-                          OptionHandler::REQ_ARG, shortName)
-{
-  validParamValues_.push_back(validParamValue);
-}
-
-ParameterOptionHandler::ParameterOptionHandler
-(const Pref* pref,
- const char* description,
- const std::string& defaultValue,
- const std::string& validParamValue1,
- const std::string& validParamValue2,
- char shortName)
-  : AbstractOptionHandler(pref, description, defaultValue,
-                          OptionHandler::REQ_ARG, shortName)
-{
-  validParamValues_.push_back(validParamValue1);
-  validParamValues_.push_back(validParamValue2);
-}
-
-ParameterOptionHandler::ParameterOptionHandler
-(const Pref* pref,
- const char* description,
- const std::string& defaultValue,
- const std::string& validParamValue1,
- const std::string& validParamValue2,
- const std::string& validParamValue3,
- char shortName)
-  : AbstractOptionHandler(pref, description, defaultValue,
-                          OptionHandler::REQ_ARG, shortName)
-{
-  validParamValues_.push_back(validParamValue1);
-  validParamValues_.push_back(validParamValue2);
-  validParamValues_.push_back(validParamValue3);
-}
-
 ParameterOptionHandler::~ParameterOptionHandler() {}
 
 void ParameterOptionHandler::parseArg(Option& option, const std::string& optarg)

+ 1 - 19
src/OptionHandlerImpl.h

@@ -181,25 +181,7 @@ public:
   ParameterOptionHandler(const Pref* pref,
                          const char* description,
                          const std::string& defaultValue,
-                         const std::vector<std::string>& validParamValues,
-                         char shortName = 0);
-  ParameterOptionHandler(const Pref* pref,
-                         const char* description,
-                         const std::string& defaultValue,
-                         const std::string& validParamValue,
-                         char shortName = 0);
-  ParameterOptionHandler(const Pref* pref,
-                         const char* description,
-                         const std::string& defaultValue,
-                         const std::string& validParamValue1,
-                         const std::string& validParamValue2,
-                         char shortName = 0);
-  ParameterOptionHandler(const Pref* pref,
-                         const char* description,
-                         const std::string& defaultValue,
-                         const std::string& validParamValue1,
-                         const std::string& validParamValue2,
-                         const std::string& validParamValue3,
+                         std::vector<std::string>&& validParamValues,
                          char shortName = 0);
   virtual ~ParameterOptionHandler();
   virtual void parseArg(Option& option, const std::string& optarg) const;

+ 4 - 42
test/OptionHandlerTest.cc

@@ -18,9 +18,7 @@ class OptionHandlerTest:public CppUnit::TestFixture {
   CPPUNIT_TEST(testNumberOptionHandler_max);
   CPPUNIT_TEST(testNumberOptionHandler_min_max);
   CPPUNIT_TEST(testUnitNumberOptionHandler);
-  CPPUNIT_TEST(testParameterOptionHandler_1argInit);
-  CPPUNIT_TEST(testParameterOptionHandler_2argsInit);
-  CPPUNIT_TEST(testParameterOptionHandler_listInit);
+  CPPUNIT_TEST(testParameterOptionHandler);
   CPPUNIT_TEST(testDefaultOptionHandler);
   CPPUNIT_TEST(testFloatNumberOptionHandler);
   CPPUNIT_TEST(testFloatNumberOptionHandler_min);
@@ -37,9 +35,7 @@ public:
   void testNumberOptionHandler_max();
   void testNumberOptionHandler_min_max();
   void testUnitNumberOptionHandler();
-  void testParameterOptionHandler_1argInit();
-  void testParameterOptionHandler_2argsInit();
-  void testParameterOptionHandler_listInit();
+  void testParameterOptionHandler();
   void testDefaultOptionHandler();
   void testFloatNumberOptionHandler();
   void testFloatNumberOptionHandler_min();
@@ -148,43 +144,9 @@ void OptionHandlerTest::testUnitNumberOptionHandler()
   } catch(Exception& e) {}
 }
 
-void OptionHandlerTest::testParameterOptionHandler_1argInit()
+void OptionHandlerTest::testParameterOptionHandler()
 {
-  ParameterOptionHandler handler(PREF_TIMEOUT, "", "", "value1");
-  Option option;
-  handler.parse(option, "value1");
-  CPPUNIT_ASSERT_EQUAL(std::string("value1"), option.get(PREF_TIMEOUT));
-  try {
-    handler.parse(option, "value3");
-    CPPUNIT_FAIL("exception must be thrown.");
-  } catch(Exception& e) {}
-  CPPUNIT_ASSERT_EQUAL(std::string("value1"),
-                       handler.createPossibleValuesString());
-}
-
-void OptionHandlerTest::testParameterOptionHandler_2argsInit()
-{
-  ParameterOptionHandler handler(PREF_TIMEOUT, "", "", "value1", "value2");
-  Option option;
-  handler.parse(option, "value1");
-  CPPUNIT_ASSERT_EQUAL(std::string("value1"), option.get(PREF_TIMEOUT));
-  handler.parse(option, "value2");
-  CPPUNIT_ASSERT_EQUAL(std::string("value2"), option.get(PREF_TIMEOUT));
-  try {
-    handler.parse(option, "value3");
-    CPPUNIT_FAIL("exception must be thrown.");
-  } catch(Exception& e) {}
-  CPPUNIT_ASSERT_EQUAL(std::string("value1, value2"),
-                       handler.createPossibleValuesString());
-}
-
-void OptionHandlerTest::testParameterOptionHandler_listInit()
-{
-  std::vector<std::string> validValues;
-  validValues.push_back("value1");
-  validValues.push_back("value2");
-
-  ParameterOptionHandler handler(PREF_TIMEOUT, "", "", validValues);
+  ParameterOptionHandler handler(PREF_TIMEOUT, "", "", {"value1", "value2"});
   Option option;
   handler.parse(option, "value1");
   CPPUNIT_ASSERT_EQUAL(std::string("value1"), option.get(PREF_TIMEOUT));