17#ifndef UTIL_UTF8_PUBLIC_UNICODETEXT_H_
18#define UTIL_UTF8_PUBLIC_UNICODETEXT_H_
147 return repr_.size_ == 0;
162 template <
typename ForwardIterator>
164 while (first !=
last) {
216 return lhs.it_ == rhs.it_;
219 return !(lhs == rhs);
221 friend bool operator<(
const CI &lhs,
const CI &rhs);
268 return (--tmp_it).utf8_data();
272 return (--tmp_it).get_utf8(buf);
276 return (--tmp_it).get_utf8_string();
280 return (--tmp_it).utf8_length();
312 return repr_.capacity_;
358 Repr() : data_(nullptr), size_(0), capacity_(0), ours_(true) {}
365 void reserve(
int capacity);
366 void resize(
int size);
368 void append(
const char *bytes,
int byte_length);
369 void Copy(
const char *data,
int size);
370 void TakeOwnershipOf(
char *data,
int size,
int capacity);
377 Repr(
const Repr &other);
388 UnicodeText &UnsafeCopyUTF8(
const char *utf8_buffer,
int byte_length);
389 UnicodeText &UnsafeTakeOwnershipOfUTF8(
char *utf8_buffer,
int byte_length,
int byte_capacity);
390 UnicodeText &UnsafePointToUTF8(
const char *utf8_buffer,
int byte_length);
391 UnicodeText &UnsafeAppendUTF8(
const char *utf8_buffer,
int byte_length);
398 return !(lhs == rhs);
406 return r.first == r.second;
481template <
typename T,
size_t N>
483#define arraysize(array) (sizeof(ArraySizeHelper(array)))
char(& ArraySizeHelper(T(&array)[N]))[N]
UnicodeText UTF8ToUnicodeText(const char *utf8_buf, int len, bool do_copy)
pair< UnicodeText::const_iterator, UnicodeText::const_iterator > UnicodeTextRange
string CodepointString(const UnicodeText &t)
UnicodeText MakeUnicodeTextAcceptingOwnership(char *utf8_buffer, int byte_length, int byte_capacity)
UnicodeText MakeUnicodeTextWithoutAcceptingOwnership(const char *utf8_buffer, int byte_length)
bool operator==(const UnicodeText &lhs, const UnicodeText &rhs)
string UnicodeTextToUTF8(const UnicodeText &t)
bool UnicodeTextRangeIsEmpty(const UnicodeTextRange &r)
bool operator!=(const UnicodeText &lhs, const UnicodeText &rhs)
static string UTF8Substring(const const_iterator &first, const const_iterator &last)
void push_back(char32 codepoint)
const_iterator MakeIterator(const char *p) const
UnicodeText & CopyUTF8(const char *utf8_buffer, int byte_length)
const_iterator find(const UnicodeText &look, const_iterator start_pos) const
UnicodeText & assign(const UnicodeText &src)
UnicodeText & append(ForwardIterator first, const ForwardIterator last)
friend class UnicodeTextUtils
UnicodeText & Copy(const UnicodeText &src)
const_reverse_iterator rend() const
UnicodeText & PointTo(const UnicodeText &src)
string DebugString() const
int utf8_capacity() const
friend bool operator==(const UnicodeText &lhs, const UnicodeText &rhs)
const_iterator end() const
friend class const_iterator
UnicodeText & operator=(const UnicodeText &src)
UnicodeText & PointToUTF8(const char *utf8_buffer, int byte_length)
UnicodeText & TakeOwnershipOfUTF8(char *utf8_buffer, int byte_length, int byte_capacity)
bool HasReplacementChar() const
const_iterator begin() const
friend bool operator!=(const UnicodeText &lhs, const UnicodeText &rhs)
const char * utf8_data() const
const_reverse_iterator rbegin() const
friend bool operator>(const CI &lhs, const CI &rhs)
friend bool operator<=(const CI &lhs, const CI &rhs)
string DebugString() const
const_iterator operator++(int)
friend class UTF8StateTableProperty
const_iterator operator--(int)
friend difference_type distance(const CI &first, const CI &last)
friend class UnicodeTextUtils
std::bidirectional_iterator_tag iterator_category
const_iterator & operator++()
const_iterator & operator--()
ptrdiff_t difference_type
int get_utf8(char *buf) const
const_iterator & operator=(const const_iterator &other)
friend bool operator>=(const CI &lhs, const CI &rhs)
string get_utf8_string() const
const char * utf8_data() const
friend bool operator!=(const CI &lhs, const CI &rhs)
friend bool operator<(const CI &lhs, const CI &rhs)
friend bool operator==(const CI &lhs, const CI &rhs)
const char * utf8_data() const
const_reverse_iterator(const_iterator it)
string get_utf8_string() const
int get_utf8(char *buf) const