Skip to content

Commit caa7c11

Browse files
committed
Add boost/thread/detail/string_trim.hpp
1 parent a513e53 commit caa7c11

3 files changed

Lines changed: 82 additions & 0 deletions

File tree

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#ifndef BOOST_THREAD_DETAIL_STRING_TRIM_HPP_INCLUDED
2+
#define BOOST_THREAD_DETAIL_STRING_TRIM_HPP_INCLUDED
3+
4+
// Copyright 2023 Peter Dimov
5+
// Distributed under the Boost Software License, Version 1.0.
6+
// https://www.boost.org/LICENSE_1_0.txt
7+
8+
#include <string>
9+
10+
namespace boost
11+
{
12+
namespace thread_detail
13+
{
14+
15+
inline std::string string_trim( std::string const& s )
16+
{
17+
std::size_t i = s.find_first_not_of( " \t\r\n" );
18+
19+
if( i == std::string::npos ) return std::string();
20+
21+
std::size_t j = s.find_last_not_of( " \t\r\n" );
22+
23+
return s.substr( i, j + 1 - i );
24+
}
25+
26+
} // namespace thread_detail
27+
} // namespace boost
28+
29+
#endif // #ifndef BOOST_THREAD_DETAIL_STRING_TRIM_HPP_INCLUDED

test/Jamfile.v2

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1099,4 +1099,9 @@ rule generate_self_contained_header_tests
10991099
;
11001100

11011101
test-suite test_self_contained_headers : [ generate_self_contained_header_tests ] ;
1102+
1103+
test-suite detail
1104+
:
1105+
[ run detail/string_trim_test.cpp ]
1106+
;
11021107
}

test/detail/string_trim_test.cpp

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright 2023 Peter Dimov
2+
// Distributed under the Boost Software License, Version 1.0.
3+
// https://www.boost.org/LICENSE_1_0.txt
4+
5+
#include <boost/thread/detail/string_trim.hpp>
6+
#include <boost/core/lightweight_test.hpp>
7+
8+
int main()
9+
{
10+
using boost::thread_detail::string_trim;
11+
12+
BOOST_TEST_EQ( string_trim( "" ), std::string( "" ) );
13+
BOOST_TEST_EQ( string_trim( " " ), std::string( "" ) );
14+
BOOST_TEST_EQ( string_trim( " " ), std::string( "" ) );
15+
BOOST_TEST_EQ( string_trim( " " ), std::string( "" ) );
16+
17+
BOOST_TEST_EQ( string_trim( " \t\r\n \t\r\n" ), std::string( "" ) );
18+
19+
BOOST_TEST_EQ( string_trim( "a" ), std::string( "a" ) );
20+
21+
BOOST_TEST_EQ( string_trim( " a" ), std::string( "a" ) );
22+
BOOST_TEST_EQ( string_trim( " a" ), std::string( "a" ) );
23+
BOOST_TEST_EQ( string_trim( " a" ), std::string( "a" ) );
24+
25+
BOOST_TEST_EQ( string_trim( "a " ), std::string( "a" ) );
26+
BOOST_TEST_EQ( string_trim( "a " ), std::string( "a" ) );
27+
BOOST_TEST_EQ( string_trim( "a " ), std::string( "a" ) );
28+
29+
BOOST_TEST_EQ( string_trim( " a " ), std::string( "a" ) );
30+
BOOST_TEST_EQ( string_trim( " a " ), std::string( "a" ) );
31+
BOOST_TEST_EQ( string_trim( " a " ), std::string( "a" ) );
32+
33+
BOOST_TEST_EQ( string_trim( "a b" ), std::string( "a b" ) );
34+
35+
BOOST_TEST_EQ( string_trim( " a b" ), std::string( "a b" ) );
36+
BOOST_TEST_EQ( string_trim( " a b" ), std::string( "a b" ) );
37+
BOOST_TEST_EQ( string_trim( " a b" ), std::string( "a b" ) );
38+
39+
BOOST_TEST_EQ( string_trim( "a b " ), std::string( "a b" ) );
40+
BOOST_TEST_EQ( string_trim( "a b " ), std::string( "a b" ) );
41+
BOOST_TEST_EQ( string_trim( "a b " ), std::string( "a b" ) );
42+
43+
BOOST_TEST_EQ( string_trim( " a b " ), std::string( "a b" ) );
44+
BOOST_TEST_EQ( string_trim( " a b " ), std::string( "a b" ) );
45+
BOOST_TEST_EQ( string_trim( " a b " ), std::string( "a b" ) );
46+
47+
return boost::report_errors();
48+
}

0 commit comments

Comments
 (0)