13 #include <boost/functional/hash.hpp>
14 #include <boost/serialization/split_free.hpp>
99 template <
typename QStringType,
typename QCoreApp>
102 return QCoreApp::translate(
"makVrv::DtUnicode",
toUtf8().c_str(), 0);
106 template <
typename QStringType>
109 return fromUtf16(qstr.utf16(),qstr.length());
122 inline void setFromUtf8(
const unsigned char* utf8,
int len = -1);
131 inline void setFromUtf16(
const unsigned short* utf16,
int len = -1);
135 inline void setFromUtf32(
const unsigned int* utf32,
int len = -1);
143 inline void setFromAscii(
const char* ascii,
int len = -1);
146 template <
typename QStringType>
156 inline void toAscii(std::string& str)
const;
157 inline std::string
toAscii()
const { std::string temp;
toAscii(temp);
return temp;}
161 inline void toLatin1(std::string& str)
const;
164 inline void toUtf8(std::string& str)
const;
165 inline std::string
toUtf8()
const { std::string temp;
toUtf8(temp);
return temp;}
170 template <
typename QStringType>
177 template <
typename QStringType>
202 inline size_t length()
const;
252 inline explicit DtUnicode(
const unsigned short* utf16,
int len = -1);
255 inline explicit DtUnicode(
const unsigned int* utf32,
int len = -1);
258 inline explicit DtUnicode(
const std::string& ascii);
274 inline void resize(
size_t newSize);
287 inline size_t size()
const;
296 inline bool unique()
const;
299 inline bool empty()
const;
308 volatile long*
count;
327 size_t seed = 2166136261U;
329 size_t last = val.
length();
330 size_t stride = 1 + last / 10;
336 for(; first < last ; first += stride )
338 seed = 16777619U * seed ^ (size_t)val.
codeUnits()[first];
344 #include "DtUnicode.inl"
static DtUnicode fromUtf16(const unsigned short *utf16, int len=-1)
Create a unicode string from an UTF-16 encoded string, the string MUST be zero terminated if the leng...
Definition: DtUnicode.h:244
CodeUnit * begin
Definition: DtUnicode.h:312
DtUnicode()
CTOR creates an empty string.
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
DtUnicode subString(size_t pos=0, int len=-1) const
Create a substring starting at position, for n characters. If n is -1. for the remaining characters...
void setFromLatin1(const char *latin, int len=-1)
Set from an UTF-8 encoded string, the string MUST be zero terminated if the length is not passed...
void concat(const CodeUnitArray &other)
bool operator!=(const DtUnicode &other) const
Test if two strings are not identical.
static DtUnicode fromWideString(const std::wstring &str)
Set from a std::wstring.
DtUnicode & operator=(const DtUnicode &str)
Assignment operator copies the string, this function will NOT allocate memory for the string...
virtual bool containsRightToLeft() const
Returns true if this text contains any right to left characters.
bool unique() const
Am I unique.
voidpf void uLong size
Definition: ioapi.h:39
CodeUnit * end
Definition: DtUnicode.h:313
void clear()
Resize the array to 0, does not change the memory allocation if the array is unique.
unsigned short CodeUnit
Definition: DtUnicode.h:36
static DtUnicode fromWCharArray(const wchar_t utf16[], int len=-1)
Static create via specifying encoding.
void setFromUtf8(const unsigned char *utf8, int len=-1)
Set from an UTF-8 encoded string, the string MUST be zero terminated if the length is not passed...
size_t calculateCodePoints() const
Calculate the number of Code Points.
void reserve(size_t capacity)
Ensure the array's capacity is at least capacity, do not change size.
void push_back(const DtUnicodeChar &x)
Append a unicode character to the string.
Internal structure used to store the code units.
Definition: DtUnicode.h:266
std::string toUtf8() const
Definition: DtUnicode.h:165
size_t length() const
Get the length in Code Units. This is NOT the length in bytes, or the number of code points...
void setFromUtf16(const unsigned short *utf16, int len=-1)
Set from an UTF-16 encoded string, the string MUST be zero terminated if the length is not passed...
DtUnicode operator+(const DtUnicode &str) const
Append two strings together.
static DtUnicode fromUtf32(const unsigned int *utf32, int len=-1)
Create a unicode string from an UTF-32 encoded string, the string MUST be zero terminated if the leng...
bool empty() const
Am I empty.
static DtUnicode fromUtf8(const unsigned char *utf8, int len=-1)
Create a unicode string from an UTF-16 encoded string, the string MUST be zero terminated if the leng...
size_t sizeInBytes() const
Get the size in 8bit bytes.
Definition: DtUnicode.h:205
void setFromAscii(const std::string &ascii)
Set from an ascii string, the string MUST be zero terminated if the length is not passed...
volatile std::atomic_long * count
Definition: DtUnicode.h:310
Definition: DtUnicode.h:245
A single unicode character.
Definition: DtUnicodeChar.h:17
static DtUnicode tr(const char *ascii)
Ascii translation function, used to be compatible with Qt's translation tools. This will simply call ...
Definition: DtUnicode.h:92
void setFromUtf32(const unsigned int *utf32, int len=-1)
Set from an UTF-32 encoded string, the string MUST be zero terminated if the length is not passed...
QStringType translate() const
Utility function for translating a DtUnicode variable initialized using the static DtUnicode::tr func...
Definition: DtUnicode.h:100
CodeUnitArray myCodeUnits
Definition: DtUnicode.h:316
virtual ~DtUnicode()
DTOR may NOT deallocate memory as this string may share data.
std::string toAscii() const
Definition: DtUnicode.h:157
void resize(int size)
Resize a string to a new size, if the size < 0 the string will be empty. If size is greater than the ...
Definition: DtUnicode.h:243
int indexOf(const DtUnicodeChar &x, size_t pos=0) const
Search for a character starting a pos, returns index, or -1 if not found.
void setFromQString(QStringType qstr)
Template function for setting from Qt 4 style string.
Definition: DtUnicode.h:147
const CodeUnit * codeUnits() const
Get an array of code units.
Definition: DtUnicode.h:211
bool operator==(const DtUnicode &other) const
Test if two strings are identical.
CodeUnit * last
Definition: DtUnicode.h:314
static DtUnicode fromQString(QStringType qstr)
Template function for setting from Qt 4 style string.
Definition: DtUnicode.h:107
DtUnicode & operator+=(const DtUnicode &str)
Append a string to the end.
void setFromWCharArray(const wchar_t utf16[], int len=-1)
Initialize via specifying encoding.
void toQString(QStringType &qstr) const
Template function for initializing a Qt 4 style string.
Definition: DtUnicode.h:178
void resize(size_t newSize)
Resize the array.
size_t calculateCapacity(size_t necessarySize)
QStringType toQString() const
Template function for outputting a Qt 4 style string.
Definition: DtUnicode.h:171
static DtUnicode fromAscii(const std::string &ascii)
Create a unicode string from an ascii string, the string MUST be zero terminated if the length is not...
std::size_t hash_value(DtUnicode const &val)
Definition: DtUnicode.h:323
bool operator<(const DtUnicode &other) const
Test if a string is less than another based on their first different character or the length...
void dec_ref()
Decrement the reference count.
std::wstring toWideString() const
Definition: DtUnicode.h:167
std::string toLatin1() const
Definition: DtUnicode.h:162
CodeUnitArray & operator=(const CodeUnitArray &)
void add_ref()
Increment the reference count.
Encoding
Definition: DtUnicode.h:241