Browse Source

ENH: add a numeric EQUAL to the IF statment, very useful for variable arguments in MACROS

Bill Hoffman 22 years ago
parent
commit
d76c9f8195
2 changed files with 14 additions and 1 deletions
  1. 11 0
      Source/cmIfCommand.cxx
  2. 3 1
      Source/cmIfCommand.h

+ 11 - 0
Source/cmIfCommand.cxx

@@ -259,6 +259,17 @@ bool cmIfCommand::IsTrue(const std::vector<std::string> &args,
     isValid = true;
     }
 
+  if (args.size() == 3 && (args[1] == "EQUAL"))
+    {
+    def = cmIfCommand::GetVariableOrString(args[0].c_str(), makefile);
+    def2 = cmIfCommand::GetVariableOrString(args[2].c_str(), makefile);
+    if(atof(def) == atof(def2))
+      {
+      isTrue = false;
+      }
+    isValid = true;
+    }
+
   if (args.size() == 3 && (args[1] == "STRLESS"))
     {
     def = cmIfCommand::GetVariableOrString(args[0].c_str(), makefile);

+ 3 - 1
Source/cmIfCommand.h

@@ -137,8 +137,10 @@ public:
       "  IF(string LESS number)\n"
       "  IF(variable GREATER number)\n"
       "  IF(string GREATER number)\n"
+      "  IF(variable EQUAL number)\n"
+      "  IF(string EQUAL number)\n"
       "True if the given string or variable's value is a valid number and "
-      "the inequality is true.\n"
+      "the inequality or equality is true.\n"
       "  IF(variable STRLESS string)\n"
       "  IF(string STRLESS string)\n"
       "  IF(variable STRGREATER string)\n"