1
0
forked from boostorg/core

Remove uint64_t mask path from find_first_of; no longer a win after fix

This commit is contained in:
Peter Dimov
2021-10-08 10:28:06 +03:00
parent af3e6a667b
commit be820fea2e

View File

@ -69,40 +69,19 @@ BOOST_CXX14_CONSTEXPR std::size_t find_first_of( char const* p_, std::size_t n_,
{
unsigned char table[ 256 ] = {};
unsigned char r = 0;
boost::uint64_t mask = 0;
for( std::size_t j = 0; j < n; ++j )
{
unsigned char ch = s[ j ];
table[ ch ] = 1;
r |= ch;
mask |= boost::uint64_t( 1 ) << ( ch & 0x3F );
}
if( ( r & 0xC0 ) == 0 )
for( std::size_t i = pos; i < n_; ++i )
{
for( std::size_t i = pos; i < n_; ++i )
{
unsigned char ch = p_[ i ];
if( mask & ( boost::uint64_t( 1 ) << ch ) ) return i;
}
return static_cast<std::size_t>( -1 );
unsigned char ch = p_[ i ];
if( table[ ch ] ) return i;
}
else
{
for( std::size_t i = pos; i < n_; ++i )
{
unsigned char ch = p_[ i ];
if( table[ ch ] ) return i;
}
return static_cast<std::size_t>( -1 );
}
return static_cast<std::size_t>( -1 );
}
#endif