Include :
- modifiche a FromString con integer per uso libreria fast_float.
This commit is contained in:
+10
-17
@@ -125,20 +125,15 @@ ValidateDxfName( std::string& sName, bool bAdvanced)
|
||||
|
||||
//----------------------------------------------------------------------------
|
||||
#define FAST_FLOAT_FMT fast_float::chars_format::general | fast_float::chars_format::allow_leading_plus | fast_float::chars_format::skip_white_space
|
||||
#define FAST_FLOAT_OPTS fast_float::parse_options( FAST_FLOAT_FMT)
|
||||
inline bool
|
||||
FromString( const std::string& sVal, int& nVal)
|
||||
{ const char* pStart = sVal.c_str() ;
|
||||
char* pStop ;
|
||||
errno = 0 ;
|
||||
nVal = strtol( pStart, &pStop, 10) ;
|
||||
return ( pStop != pStart && errno == 0) ; }
|
||||
{ auto answer = fast_float::from_chars_advanced( sVal.data(), sVal.data() + sVal.size(), nVal, FAST_FLOAT_OPTS) ;
|
||||
return ( answer.ec == std::errc() && answer.ptr != sVal.data()) ; }
|
||||
inline bool
|
||||
FromString( const std::string& sVal, unsigned int& nVal)
|
||||
{ const char* pStart = sVal.c_str() ;
|
||||
char* pStop ;
|
||||
errno = 0 ;
|
||||
nVal = strtoul( pStart, &pStop, 10) ;
|
||||
return ( pStop != pStart && errno == 0) ; }
|
||||
{ auto answer = fast_float::from_chars_advanced( sVal.data(), sVal.data() + sVal.size(), nVal, FAST_FLOAT_OPTS) ;
|
||||
return ( answer.ec == std::errc() && answer.ptr != sVal.data()) ; }
|
||||
inline bool
|
||||
FromString( const std::string& sVal, bool& bVal)
|
||||
{ int nTmp ;
|
||||
@@ -152,16 +147,14 @@ FromString( const std::string& sVal, double& dVal)
|
||||
return ( answer.ec == std::errc() && answer.ptr != sVal.data()) ; }
|
||||
template <size_t size>
|
||||
bool FromString( const std::string& sVal, int (&nVal)[size])
|
||||
{ const char* pStart = sVal.c_str() ;
|
||||
char* pStop ;
|
||||
errno = 0 ;
|
||||
{ const char* pFirst = sVal.data() ;
|
||||
for ( int i = 0 ; i < size ; ++ i) {
|
||||
nVal[i] = strtol( pStart, &pStop, 10) ;
|
||||
if ( ( i < size - 1 && *pStop != ',') || errno != 0)
|
||||
auto answer = fast_float::from_chars_advanced( pFirst, sVal.data() + sVal.size(), nVal[i], FAST_FLOAT_OPTS) ;
|
||||
if ( answer.ec != std::errc() || ( i < size - 1 && answer.ptr[0] != ','))
|
||||
return false ;
|
||||
pStart = pStop + 1 ;
|
||||
pFirst = answer.ptr + 1 ;
|
||||
}
|
||||
return ( errno == 0) ;
|
||||
return true ;
|
||||
}
|
||||
template <size_t size>
|
||||
bool FromString( const std::string& sVal, double (&dVal)[size])
|
||||
|
||||
Reference in New Issue
Block a user