On Thursday 21 March 2013, Matthew Woehlke wrote: > On 2013-03-20 17:42, Alexander Neundorf wrote: > > On Wednesday 20 March 2013, Matthew Woehlke wrote: > >> On 2013-03-20 17:10, David Cole wrote: > >>> Are you proposing that == behaves as STREQUAL, or as EQUAL? > >> > >> What's the difference? > >> > >> Okay, for <, >, there is an obvious answer, but for ==, I am trying and > >> failing to think of a situation where treating the arguments as numbers > >> would give a different result vs. treating them as strings. > > > > E.g. "0" vs. "0.0" > > Is "0.0" a floating-point number or a version string? In the context of > CMake, I would have rather expected it to be the latter. (Does CMake > even understand floating point?) If '==' assumes numbers, how do I tell > it I really meant a version string?
EQUAL tries to convert to double: if (argP1 != newArgs.end() && argP2 != newArgs.end() && (*(argP1) == "LESS" || *(argP1) == "GREATER" || *(argP1) == "EQUAL")) { def = cmIfCommand::GetVariableOrString(arg->c_str(), makefile); def2 = cmIfCommand::GetVariableOrString((argP2)->c_str(), makefile); double lhs; double rhs; bool result; if(sscanf(def, "%lg", &lhs) != 1 || sscanf(def2, "%lg", &rhs) != 1) My "==" implementation simply compares the strings on both sides in the most simple and straightforward way. Alex -- Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers