mirror of
https://github.com/boostorg/test.git
synced 2026-02-02 21:22:10 +00:00
trac ticket 9537: const_string_test example fails
this time this is the correct commit cleaned the file a bit
This commit is contained in:
@@ -15,66 +15,78 @@
|
||||
#include <string>
|
||||
using std::string;
|
||||
|
||||
namespace common_layer {
|
||||
namespace common_layer
|
||||
{
|
||||
|
||||
// ************************************************************************** //
|
||||
// ************** const_string ************** //
|
||||
// ************************************************************************** //
|
||||
|
||||
class const_string {
|
||||
class const_string
|
||||
{
|
||||
public:
|
||||
// Subtypes
|
||||
typedef char const* iterator;
|
||||
typedef char const* const_iterator;
|
||||
typedef std::reverse_iterator<iterator,char, char const&> reverse_iterator;
|
||||
typedef reverse_iterator const_reverse_iterator;
|
||||
typedef char const* iterator;
|
||||
typedef char const* const_iterator;
|
||||
typedef std::reverse_iterator<iterator,char, char const&> reverse_iterator;
|
||||
typedef reverse_iterator const_reverse_iterator;
|
||||
|
||||
// Constructor
|
||||
const_string()
|
||||
: m_begin( "" ), m_end( m_begin ) {}
|
||||
const_string() :
|
||||
m_begin( "" ),
|
||||
m_end( m_begin )
|
||||
{}
|
||||
|
||||
// Copy constructor is generated by compiler
|
||||
|
||||
const_string( const std::string& s )
|
||||
: m_begin( s.c_str() ),
|
||||
m_end( m_begin + s.length() ) {}
|
||||
const_string( const std::string& s ) :
|
||||
m_begin( s.c_str() ),
|
||||
m_end( m_begin + s.length() )
|
||||
{}
|
||||
|
||||
const_string( char const* s );
|
||||
|
||||
const_string( char const* s, size_t length )
|
||||
: m_begin( s ), m_end( m_begin + length ) { if( length == 0 ) erase(); }
|
||||
const_string( char const* s, size_t length ) :
|
||||
m_begin( s ),
|
||||
m_end( m_begin + length )
|
||||
{
|
||||
if(length == 0)
|
||||
erase();
|
||||
}
|
||||
|
||||
const_string( char const* first, char const* last )
|
||||
: m_begin( first ), m_end( last ) {}
|
||||
const_string( char const* first, char const* last ) :
|
||||
m_begin( first ),
|
||||
m_end( last )
|
||||
{}
|
||||
|
||||
// data access methods
|
||||
char operator[]( size_t index ) const { return m_begin[index]; }
|
||||
char at( size_t index ) const;
|
||||
|
||||
char const* data() const { return m_begin; }
|
||||
char operator[]( size_t index ) const { return m_begin[index]; }
|
||||
char at( size_t index ) const { return (*this)[index]; }
|
||||
char const* data() const { return m_begin;}
|
||||
|
||||
// length operators
|
||||
size_t length() const { return m_end - m_begin; }
|
||||
bool is_empty() const { return m_end == m_begin; }
|
||||
size_t length() const { return m_end - m_begin;}
|
||||
bool is_empty() const { return m_end == m_begin;}
|
||||
|
||||
void erase() { m_begin = m_end = ""; }
|
||||
void resize( size_t new_len ) { if( m_begin + new_len < m_end ) m_end = m_begin + new_len; }
|
||||
void rshorten( size_t shift = 1 ) { m_end -= shift; if( m_end <= m_begin ) erase(); }
|
||||
void lshorten( size_t shift = 1 ) { m_begin += shift; if( m_end <= m_begin ) erase(); }
|
||||
void erase() { m_begin = m_end = ""; }
|
||||
void resize( size_t new_len ) { if( m_begin + new_len < m_end ) m_end = m_begin + new_len; }
|
||||
void rshorten( size_t shift = 1 ) { m_end -= shift; if( m_end <= m_begin ) erase(); }
|
||||
void lshorten( size_t shift = 1 ) { m_begin += shift; if( m_end <= m_begin ) erase(); }
|
||||
|
||||
// Assignment operators
|
||||
const_string& operator=( const_string const& s );
|
||||
const_string& operator=( string const& s ) { return *this = const_string( s ); }
|
||||
const_string& operator=( char const* s ) { return *this = const_string( s ); }
|
||||
const_string& operator=( const_string const& s );
|
||||
const_string& operator=( string const& s ) { return *this = const_string( s ); }
|
||||
const_string& operator=( char const* s ) { return *this = const_string( s ); }
|
||||
|
||||
const_string& assign( const_string const& s ) { return *this = s; }
|
||||
const_string& assign( string const& s, size_t len ) { return *this = const_string( s.data(), len ); }
|
||||
const_string& assign( string const& s ) { return *this = const_string( s ); }
|
||||
const_string& assign( char const* s ) { return *this = const_string( s ); }
|
||||
const_string& assign( char const* s, size_t len ) { return *this = const_string( s, len ); }
|
||||
const_string& assign( char const* f, char const* l ) { return *this = const_string( f, l ); }
|
||||
const_string& assign( const_string const& s ) { return *this = s; }
|
||||
const_string& assign( string const& s, size_t len ) { return *this = const_string( s.data(), len ); }
|
||||
const_string& assign( string const& s ) { return *this = const_string( s ); }
|
||||
const_string& assign( char const* s ) { return *this = const_string( s ); }
|
||||
const_string& assign( char const* s, size_t len ) { return *this = const_string( s, len ); }
|
||||
const_string& assign( char const* f, char const* l ) { return *this = const_string( f, l ); }
|
||||
|
||||
void swap( const_string& s ) {
|
||||
void swap( const_string& s )
|
||||
{
|
||||
// do not want to include alogrithm
|
||||
char const* tmp1 = m_begin;
|
||||
char const* tmp2 = m_end;
|
||||
|
||||
Reference in New Issue
Block a user