Browse Source

Closes feature request to support double parameters. #201

Ivo Wolf 13 years ago
parent
commit
8c832f5c61

+ 11 - 1
Libs/Core/Testing/Cpp/ctkCommandLineParserTest1.cpp

@@ -87,17 +87,19 @@ int ctkCommandLineParserTest1(int, char*[])
     return EXIT_FAILURE;
     }
 
-  // Test3 - check if adding QString, int, and QStringList arguments works
+  // Test3 - check if adding QString, int, double, and QStringList arguments works
   QStringList arguments3;
   arguments3 << "ctkCommandLineParserTest1";
   arguments3 << "--test-string" << "TestingIsGood";
   arguments3 << "--test-string2"<< "CTKSuperRocks";
   arguments3 << "--test-integer"<< "-3";
+//  arguments3 << "--test-double"<< "-3.14";
   arguments3 << "--test-stringlist"<< "item1" << "item2" << "item3";
   ctkCommandLineParser parser3;
   parser3.addArgument("--test-string", "", QVariant::String, "This is a test string");
   parser3.addArgument("--test-string2", "", QVariant::String, "This is a test string2", "CTKGood");
   parser3.addArgument("--test-integer", "", QVariant::Int, "This is a test integer");
+//  parser3.addArgument("--test-double", "", QVariant::Double, "This is a test double");
   parser3.addArgument("--test-stringlist", "", QVariant::StringList,
                                 "This is a test stringlist");
   ok = false;
@@ -132,6 +134,14 @@ int ctkCommandLineParserTest1(int, char*[])
     return EXIT_FAILURE;
     }
 
+  //double expectedTestDouble = -3.14;
+  //if (parsedArgs["--test-double"].toDouble() != expectedTestDouble)
+  //  {
+  //  qCritical() << "Test3 - Failed - testDouble" << parsedArgs["--test-double"].toDouble()
+  //      << ", expectedTestDouble" << expectedTestDouble;
+  //  return EXIT_FAILURE;
+  //  }
+
   QStringList expectedTestStringlist;
   expectedTestStringlist << "item1" << "item2" << "item3";
   if (parsedArgs["--test-stringlist"].toStringList() != expectedTestStringlist)

+ 12 - 0
Libs/Core/ctkCommandLineParser.cpp

@@ -81,6 +81,13 @@ public:
         ExactMatchFailedMessage = "A negative or positive integer is expected.";
         }
         break;
+      case QVariant::Double:
+        {
+        NumberOfParametersToProcess = 1;
+        RegularExpression = "-?[0-9]*\\.?[0-9]+";
+        ExactMatchFailedMessage = "A double is expected.";
+        }
+        break;
       default:
         ExactMatchFailedMessage = QString("Type %1 not supported.").arg(static_cast<int>(type));
       }
@@ -155,6 +162,11 @@ bool CommandLineParserArgumentDescription::addParameter(const QString& value)
       Value.setValue(value.toInt());
       }
       break;
+    case QVariant::Double:
+      {
+      Value.setValue(value.toDouble());
+      }
+      break;
     default:
       return false;
     }