Fix warning: conversion from 'int' to 'char', possible loss of data.

Root cause:
The return type of ::tolower is int. So when we use ::tolower in
std::transform(), it will generate this warning. If user turns on "treat
warning as error", Catch build will fail due to this warning.
This commit is contained in:
yuboxie 2016-04-20 03:06:00 -07:00
parent 6de7142d1f
commit 8c38bd9d68
2 changed files with 9 additions and 3 deletions

View File

@ -375,6 +375,10 @@ namespace Clara {
return str.size() >= prefix.size() && str.substr( 0, prefix.size() ) == prefix; return str.size() >= prefix.size() && str.substr( 0, prefix.size() ) == prefix;
} }
inline char tolower(char ch) {
return (char)::tolower(ch);
}
template<typename T> struct RemoveConstRef{ typedef T type; }; template<typename T> struct RemoveConstRef{ typedef T type; };
template<typename T> struct RemoveConstRef<T&>{ typedef T type; }; template<typename T> struct RemoveConstRef<T&>{ typedef T type; };
template<typename T> struct RemoveConstRef<T const&>{ typedef T type; }; template<typename T> struct RemoveConstRef<T const&>{ typedef T type; };
@ -396,7 +400,7 @@ namespace Clara {
} }
inline void convertInto( std::string const& _source, bool& _dest ) { inline void convertInto( std::string const& _source, bool& _dest ) {
std::string sourceLC = _source; std::string sourceLC = _source;
std::transform( sourceLC.begin(), sourceLC.end(), sourceLC.begin(), ::tolower ); std::transform( sourceLC.begin(), sourceLC.end(), sourceLC.begin(), tolower );
if( sourceLC == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" ) if( sourceLC == "y" || sourceLC == "1" || sourceLC == "true" || sourceLC == "yes" || sourceLC == "on" )
_dest = true; _dest = true;
else if( sourceLC == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" ) else if( sourceLC == "n" || sourceLC == "0" || sourceLC == "false" || sourceLC == "no" || sourceLC == "off" )

View File

@ -11,7 +11,6 @@
#include "catch_common.h" #include "catch_common.h"
namespace Catch { namespace Catch {
bool startsWith( std::string const& s, std::string const& prefix ) { bool startsWith( std::string const& s, std::string const& prefix ) {
return s.size() >= prefix.size() && s.substr( 0, prefix.size() ) == prefix; return s.size() >= prefix.size() && s.substr( 0, prefix.size() ) == prefix;
} }
@ -21,8 +20,11 @@ namespace Catch {
bool contains( std::string const& s, std::string const& infix ) { bool contains( std::string const& s, std::string const& infix ) {
return s.find( infix ) != std::string::npos; return s.find( infix ) != std::string::npos;
} }
char tolower(char ch) {
return (char)::tolower(ch);
}
void toLowerInPlace( std::string& s ) { void toLowerInPlace( std::string& s ) {
std::transform( s.begin(), s.end(), s.begin(), ::tolower ); std::transform( s.begin(), s.end(), s.begin(), tolower );
} }
std::string toLower( std::string const& s ) { std::string toLower( std::string const& s ) {
std::string lc = s; std::string lc = s;