8 #ifndef BOOST_NOWIDE_STACKSTRING_HPP_INCLUDED 9 #define BOOST_NOWIDE_STACKSTRING_HPP_INCLUDED 11 #include <boost/nowide/convert.hpp> 12 #include <boost/nowide/utf/utf.hpp> 31 template<
typename CharOut =
wchar_t,
typename CharIn =
char,
size_t BufferSize = 256>
70 const size_t len = other.
length();
80 std::memcpy(data_, other.data_,
sizeof(
output_char) * (len + 1));
95 return convert(input, input + utf::strlen(input));
107 const size_t input_len = end - begin;
109 const size_t min_output_size = input_len + 1;
117 const size_t max_output_size = input_len * utf::utf_traits<output_char>::max_width + 1;
119 const bool success = utf::convert_buffer(data_, max_output_size, begin, end) == data_;
151 std::swap(lhs.buffer_[i], rhs.buffer_[i]);
154 lhs.data_ = rhs.data_;
155 rhs.data_ = rhs.buffer_;
157 rhs.buffer_[i] = lhs.buffer_[i];
161 rhs.data_ = lhs.data_;
162 lhs.data_ = lhs.buffer_;
164 lhs.buffer_[i] = rhs.buffer_[i];
166 std::swap(lhs.data_, rhs.data_);
173 return data_ == buffer_;
basic_stackstring(const input_char *input)
Definition: stackstring.hpp:49
basic_stackstring< wchar_t, char, 256 > wstackstring
Definition: stackstring.hpp:195
bool uses_stack_memory() const
True if the stack memory is used.
Definition: stackstring.hpp:171
basic_stackstring< char, wchar_t, 16 > short_stackstring
Definition: stackstring.hpp:207
basic_stackstring(const basic_stackstring &other)
Copy construct from other.
Definition: stackstring.hpp:60
basic_stackstring< wchar_t, char, 16 > wshort_stackstring
Definition: stackstring.hpp:203
basic_stackstring & operator=(const basic_stackstring &other)
Copy assign from other.
Definition: stackstring.hpp:65
static const size_t buffer_size
Size of the stack buffer.
Definition: stackstring.hpp:36
void clear()
Reset the internal buffer to NULL.
Definition: stackstring.hpp:137
basic_stackstring(const input_char *begin, const input_char *end)
Definition: stackstring.hpp:55
output_char * convert(const input_char *begin, const input_char *end)
Definition: stackstring.hpp:101
basic_stackstring< char, wchar_t, 256 > stackstring
Definition: stackstring.hpp:199
const output_char * get() const
Return the converted, NULL-terminated string or NULL if no string was converted.
Definition: stackstring.hpp:132
size_t length() const
Definition: stackstring.hpp:177
output_char * convert(const input_char *input)
Definition: stackstring.hpp:92
A class that allows to create a temporary wide or narrow UTF strings from wide or narrow UTF source.
Definition: stackstring.hpp:32
basic_stackstring()
Creates a NULL stackstring.
Definition: stackstring.hpp:43
output_char * get()
Return the converted, NULL-terminated string or NULL if no string was converted.
Definition: stackstring.hpp:127
friend void swap(basic_stackstring &lhs, basic_stackstring &rhs)
Swap lhs with rhs.
Definition: stackstring.hpp:144
CharOut output_char
Type of the output character (converted to)
Definition: stackstring.hpp:38
CharIn input_char
Type of the input character (converted from)
Definition: stackstring.hpp:40