VR-Link API Documentation for HLA 1.3
Home
Namespaces
Classes
Files
Examples
Libraries
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
include
vlutil
vlUnicode.h
Go to the documentation of this file.
1
/****************************************************************************
2
* Copyright (c) 2014 VT MAK
3
* All rights reserved.
4
****************************************************************************/
5
9
10
#pragma once
11
12
#include <
vlutil/vlUnicodeChar.h
>
13
14
#include <wchar.h>
15
27
class
DtUcString
28
{
29
public
:
30
31
typedef
unsigned
short
CodeUnit
;
32
33
public
:
34
36
inline
DtUcString
();
37
39
explicit
inline
DtUcString
(
size_t
len,
DtUnicodeChar
c =
DtUnicodeChar
(
'\0'
) );
40
44
inline
DtUcString
(
const
DtUcString
& str );
45
47
inline
~DtUcString
();
48
52
inline
DtUcString
&
operator =
(
const
DtUcString
& str );
53
56
inline
static
DtUcString
fromWCharArray
(
const
wchar_t
utf16[],
int
len = -1 );
57
59
inline
static
DtUcString
fromWideString
(
const
std::wstring& str );
60
63
inline
static
DtUcString
fromUtf8
(
const
unsigned
char
* utf8,
int
len = -1 );
64
inline
static
DtUcString
fromUtf8
(
const
std::string& utf8 );
65
68
inline
static
DtUcString
fromUtf16
(
const
unsigned
short
* utf16,
int
len = -1 );
69
72
inline
static
DtUcString
fromUtf32
(
const
unsigned
int
* utf32,
int
len = -1 );
73
76
inline
static
DtUcString
fromAscii
(
const
std::string& ascii );
77
80
inline
static
DtUcString
fromAscii
(
const
char
* ascii,
int
len = -1 );
81
87
inline
static
DtUcString
tr
(
const
char
* ascii );
88
91
template
<
typename
QStringType,
typename
QCoreApp>
92
QStringType
translate
()
const
;
93
95
template
<
typename
QStringType>
96
inline
static
DtUcString
fromQString
( QStringType qstr );
97
102
inline
void
setFromWCharArray
(
const
wchar_t
utf16[],
int
len = -1 );
103
106
inline
void
setFromUtf8
(
const
unsigned
char
* utf8,
int
len = -1 );
107
inline
void
setFromUtf8
(
const
std::string& utf8 );
108
111
inline
void
setFromLatin1
(
const
char
* latin,
int
len = -1 );
112
115
inline
void
setFromUtf16
(
const
unsigned
short
* utf16,
int
len = -1 );
116
119
inline
void
setFromUtf32
(
const
unsigned
int
* utf32,
int
len = -1 );
120
123
inline
void
setFromAscii
(
const
std::string& ascii );
124
127
inline
void
setFromAscii
(
const
char
* ascii,
int
len = -1 );
128
130
template
<
typename
QStringType>
131
inline
void
setFromQString
( QStringType qstr );
132
135
inline
void
toAscii
( std::string& str )
const
;
136
inline
std::string
toAscii
()
const
;
137
140
inline
void
toLatin1
( std::string& str )
const
;
141
inline
std::string
toLatin1
()
const
;
142
144
inline
void
toUtf8
( std::string& str )
const
;
145
inline
std::string
toUtf8
()
const
;
146
148
inline
void
toWideString
( std::wstring& str )
const
;
149
inline
std::wstring
toWideString
()
const
;
150
152
template
<
typename
QStringType>
153
inline
QStringType
toQString
()
const
;
154
156
template
<
typename
QStringType>
157
inline
void
toQString
( QStringType& qstr )
const
;
158
160
inline
DtUcString
&
operator +=
(
const
DtUcString
& str );
162
inline
DtUcString
&
operator +=
(
const
DtUnicodeChar
& x );
164
inline
DtUcString
operator +
(
const
DtUcString
& str )
const
;
165
167
inline
bool
operator ==
(
const
DtUcString
& other )
const
;
169
inline
bool
operator !=
(
const
DtUcString
& other )
const
;
172
inline
bool
operator <
(
const
DtUcString
& other )
const
;
173
176
inline
size_t
length
()
const
;
177
179
inline
size_t
sizeInBytes
()
const
;
180
182
inline
size_t
calculateCodePoints
()
const
;
183
185
inline
const
CodeUnit
*
codeUnits
()
const
;
186
188
inline
int
indexOf
(
const
DtUnicodeChar
& x,
size_t
pos = 0 )
const
;
189
191
inline
int
indexOf
(
const
DtUcString
& x,
size_t
pos = 0 )
const
;
192
194
inline
int
lastIndexOf
(
const
DtUnicodeChar
& x,
size_t
pos = 0 )
const
;
195
197
inline
int
lastIndexOf
(
const
DtUcString
& x,
size_t
pos = 0 )
const
;
198
202
inline
DtUcString
subString
(
size_t
pos = 0,
int
len = -1 )
const
;
203
211
212
virtual
bool
snipFront
(
const
char
ch,
bool
toLastCh =
false
);
213
virtual
bool
snipBack
(
const
char
ch,
bool
fromFirstCh =
false
);
214
216
218
inline
void
push_back
(
const
DtUnicodeChar
& x );
219
227
inline
void
resize
(
int
size );
228
229
protected
:
// THESE are the protected functions not to be used directly.
230
231
enum
Encoding
232
{
233
Ascii
,
234
Latin1
,
235
Utf8
236
};
237
238
// Ascii CTOR
239
inline
explicit
DtUcString
(
const
char
* ascii,
int
len = -1,
Encoding
encoding =
Ascii
);
240
241
// UTF16 constructor
242
inline
explicit
DtUcString
(
const
unsigned
short
* utf16,
int
len = -1 );
243
244
// UTF32 constructor.
245
inline
explicit
DtUcString
(
const
unsigned
int
* utf32,
int
len = -1 );
246
247
// Std string constructor.
248
inline
explicit
DtUcString
(
const
std::string& ascii );
249
250
// Concat constructor.
251
inline
explicit
DtUcString
(
const
DtUcString
& a,
const
DtUcString
& b );
252
253
protected
:
254
257
struct
CodeUnitArray
258
{
259
261
inline
CodeUnitArray
();
262
264
inline
CodeUnitArray
(
const
CodeUnitArray
& );
265
267
inline
~CodeUnitArray
();
268
270
inline
CodeUnitArray
&
operator =
(
const
CodeUnitArray
& );
271
273
inline
void
resize
(
size_t
newSize );
274
277
inline
void
clear
();
278
280
inline
void
reserve
(
size_t
capacity
);
281
283
inline
size_t
calculateCapacity
(
size_t
necessarySize );
284
286
inline
size_t
size
()
const
;
287
289
inline
size_t
capacity
()
const
;
290
292
inline
void
concat
(
const
CodeUnitArray
& other );
293
295
inline
bool
unique
()
const
;
296
298
inline
bool
empty
()
const
;
299
301
inline
void
add_ref
();
302
304
inline
void
dec_ref
();
305
306
volatile
long
*
count
;
307
CodeUnit
*
begin
;
308
CodeUnit
*
end
;
309
CodeUnit
*
last
;
310
311
};
312
313
CodeUnitArray
myCodeUnits
;
314
315
};
316
317
318
inline
std::size_t
hash_value
(
const
DtUcString
& val )
319
{
320
// Copied from TR1 implementation.
321
size_t
seed = 2166136261U;
322
size_t
first = 0;
323
size_t
last = val.
length
();
324
size_t
stride = 1 + last / 10;
325
326
if
( stride < last )
327
{
328
last -= stride;
329
}
330
for
( ; first < last; first += stride )
331
{
332
seed = 16777619U * seed ^ (size_t)val.
codeUnits
()[first];
333
}
334
335
return
seed;
336
}
337
338
339
#include "vlUnicode.inl"
Document ID: Generated on Mon Apr 8 04:49:21 EDT 2019 from SVN revision 197403
Copyright © 2005-2016 VT MÄK. All Rights Reserved (
www.mak.com
)