@ -3,6 +3,7 @@
# include "cmake.h"
# include "cmake.h"
# include <algorithm>
# include <algorithm>
# include <array>
# include <cstdio>
# include <cstdio>
# include <cstdlib>
# include <cstdlib>
# include <cstring>
# include <cstring>
@ -1402,21 +1403,32 @@ void cmake::SetArgs(const std::vector<std::string>& args)
# endif
# endif
}
}
Message : : LogLevel cmake : : StringToLogLevel ( const std : : string & levelStr )
namespace {
using LevelsPair = std : : pair < cm : : string_view , Message : : LogLevel > ;
using LevelsPairArray = std : : array < LevelsPair , 7 > ;
const LevelsPairArray & getStringToLogLevelPairs ( )
{
{
using LevelsPair = std : : pair < std : : string , Message : : LogLevel > ;
static const std : : vector < LevelsPair > levels = {
{ " error " , Message : : LogLevel : : LOG_ERROR } ,
static const LevelsPairArray levels = {
{ { " error " , Message : : LogLevel : : LOG_ERROR } ,
{ " warning " , Message : : LogLevel : : LOG_WARNING } ,
{ " warning " , Message : : LogLevel : : LOG_WARNING } ,
{ " notice " , Message : : LogLevel : : LOG_NOTICE } ,
{ " notice " , Message : : LogLevel : : LOG_NOTICE } ,
{ " status " , Message : : LogLevel : : LOG_STATUS } ,
{ " status " , Message : : LogLevel : : LOG_STATUS } ,
{ " verbose " , Message : : LogLevel : : LOG_VERBOSE } ,
{ " verbose " , Message : : LogLevel : : LOG_VERBOSE } ,
{ " debug " , Message : : LogLevel : : LOG_DEBUG } ,
{ " debug " , Message : : LogLevel : : LOG_DEBUG } ,
{ " trace " , Message : : LogLevel : : LOG_TRACE }
{ " trace " , Message : : LogLevel : : LOG_TRACE } }
} ;
} ;
return levels ;
}
} // namespace
Message : : LogLevel cmake : : StringToLogLevel ( cm : : string_view levelStr )
{
const LevelsPairArray & levels = getStringToLogLevelPairs ( ) ;
const auto levelStrLowCase = cmSystemTools : : LowerCase ( levelStr ) ;
const auto levelStrLowCase =
cmSystemTools : : LowerCase ( std : : string { levelStr } ) ;
// NOLINTNEXTLINE(readability-qualified-auto)
const auto it = std : : find_if ( levels . cbegin ( ) , levels . cend ( ) ,
const auto it = std : : find_if ( levels . cbegin ( ) , levels . cend ( ) ,
[ & levelStrLowCase ] ( const LevelsPair & p ) {
[ & levelStrLowCase ] ( const LevelsPair & p ) {
return p . first = = levelStrLowCase ;
return p . first = = levelStrLowCase ;
@ -1424,6 +1436,21 @@ Message::LogLevel cmake::StringToLogLevel(const std::string& levelStr)
return ( it ! = levels . cend ( ) ) ? it - > second : Message : : LogLevel : : LOG_UNDEFINED ;
return ( it ! = levels . cend ( ) ) ? it - > second : Message : : LogLevel : : LOG_UNDEFINED ;
}
}
std : : string cmake : : LogLevelToString ( Message : : LogLevel level )
{
const LevelsPairArray & levels = getStringToLogLevelPairs ( ) ;
// NOLINTNEXTLINE(readability-qualified-auto)
const auto it =
std : : find_if ( levels . cbegin ( ) , levels . cend ( ) ,
[ & level ] ( const LevelsPair & p ) { return p . second = = level ; } ) ;
const cm : : string_view levelStrLowerCase =
( it ! = levels . cend ( ) ) ? it - > first : " undefined " ;
std : : string levelStrUpperCase =
cmSystemTools : : UpperCase ( std : : string { levelStrLowerCase } ) ;
return levelStrUpperCase ;
}
cmake : : TraceFormat cmake : : StringToTraceFormat ( const std : : string & traceStr )
cmake : : TraceFormat cmake : : StringToTraceFormat ( const std : : string & traceStr )
{
{
using TracePair = std : : pair < std : : string , TraceFormat > ;
using TracePair = std : : pair < std : : string , TraceFormat > ;