-
Notifications
You must be signed in to change notification settings - Fork 1
/
wstring_qt.cc
42 lines (32 loc) · 919 Bytes
/
wstring_qt.cc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include "wstring_qt.hh"
#include <QVector>
namespace gd
{
#ifdef __WIN32
QString toQString( wstring const & in )
{
return QString::fromUcs4( in.c_str() );
}
#else
QString toQString( wstring const & in )
{
return QString::fromStdWString( in );
}
#endif
wstring toWString( QString const & in )
{
QVector< unsigned int > v = in.toUcs4();
// Fix for QString instance which contains non-BMP characters
// Qt will created unexpected null characters may confuse btree indexer.
// Related: https://bugreports.qt-project.org/browse/QTBUG-25536
int n = v.size();
while ( n > 0 && v[ n - 1 ] == 0 ) n--;
if ( n != v.size() )
v.resize( n );
return wstring( ( const wchar * ) v.constData(), v.size() );
}
wstring normalize( const wstring & str )
{
return gd::toWString( gd::toQString( str ).normalized( QString::NormalizationForm_C ) );
}
}