Ticket #1169: const_string.hpp

File const_string.hpp, 1.2 KB (added by anonymous, 15 years ago)
Line 
1#ifndef CONST_STRING_HPP
2#define CONST_STRING_HPP
3
4#include <string>
5
6// ************************************************************************** //
7// ************** const_string ************** //
8// ************************************************************************** //
9
10class const_string {
11public:
12 // Constructors
13 const_string()
14 : m_begin( "" ), m_end( m_begin ) {}
15
16 const_string( const std::string& s )
17 : m_begin( s.c_str() ),
18 m_end( m_begin + s.length() ) {}
19
20 const_string( char const* s )
21 : m_begin(s), m_end(s + (s?strlen(s):0))
22 { if( is_empty()) erase(); } // avoids problems with data() if s == NULL
23
24 const_string( char const* s, size_t length )
25 : m_begin( s ), m_end( m_begin + length )
26 { if( length == 0 ) erase(); }
27
28 const_string( char const* first, char const* last )
29 : m_begin( first ), m_end( last ) {}
30
31 // public members
32 char const* data() const { return m_begin; }
33 size_t length() const { return m_end - m_begin; }
34 bool is_empty() const { return m_end == m_begin; }
35 void erase() { m_begin = m_end = ""; }
36
37private:
38
39 // Data members
40 char const* m_begin;
41 char const* m_end;
42
43};
44
45#endif