3 stringhandle.inl -- implement String_handle
5 source file of Flower lib
7 (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
10 #ifndef STRINGHANDLE_INL
11 #define STRINGHANDLE_INL
17 #include "string-data.hh"
18 #include "string-handle.hh"
23 String_handle::down ()
25 if (! (--data->ref_count_))
33 THIS does not have to be initialized.
36 String_handle::up (String_data *d)
43 String_handle::copy ()
45 if (data->ref_count_ != 1)
47 String_data *newdata = new String_data (*data);
54 String_handle::String_handle ()
60 String_handle::~String_handle ()
66 String_handle::String_handle (String_handle const &src)
72 String_handle::get_bytes ()
75 return data->get_bytes ();
79 String_handle::get_c_str ()
82 return (char *)data->get_bytes ();
86 const *String_handle::to_bytes () const
88 return data->to_bytes ();
92 String_handle::c_str () const
94 return (char const *)data->to_bytes ();
98 String_handle::operator = (String_handle const &src)
107 String_handle::operator += (char const *s)
114 String_handle::operator [] (int j) const
120 // don't use this for loops. Use to_bytes ()
122 String_handle::operator [] (int j)
124 copy (); // hmm. Not efficient
125 return data->get_bytes ()[j];
129 String_handle::append (Byte const *byte, int length_i)
132 data->append (byte, length_i);
136 String_handle::set (Byte const *byte, int length_i)
139 data->set (byte, length_i);
143 String_handle::operator = (char const *p)
150 String_handle::trunc (int j)
152 copy (); data->trunc (j);
156 String_handle::length () const
158 return data->length_;
162 String_handle::is_binary_bo () const
164 return data->is_binary_bo ();