]>
code.delx.au - refind/blob - filesystems/fsw_strfunc.h
1 /* fsw_strfunc.h generated by mk_fsw_strfunc.py */
3 static int fsw_streq_ISO88591_UTF8(void *s1data
, void *s2data
, int len
)
6 fsw_u8
*p1
= (fsw_u8
*)s1data
;
7 fsw_u8
*p2
= (fsw_u8
*)s2data
;
10 for (i
= 0; i
< len
; i
++) {
13 if ((c2
& 0xe0) == 0xc0) {
14 c2
= ((c2
& 0x1f) << 6) | (*p2
++ & 0x3f);
15 } else if ((c2
& 0xf0) == 0xe0) {
16 c2
= ((c2
& 0x0f) << 12) | ((*p2
++ & 0x3f) << 6);
18 } else if ((c2
& 0xf8) == 0xf0) {
19 c2
= ((c2
& 0x07) << 18) | ((*p2
++ & 0x3f) << 12);
20 c2
|= ((*p2
++ & 0x3f) << 6);
29 static int fsw_streq_ISO88591_UTF16(void *s1data
, void *s2data
, int len
)
32 fsw_u8
*p1
= (fsw_u8
*)s1data
;
33 fsw_u16
*p2
= (fsw_u16
*)s2data
;
36 for (i
= 0; i
< len
; i
++) {
45 static int fsw_streq_ISO88591_UTF16_SWAPPED(void *s1data
, void *s2data
, int len
)
48 fsw_u8
*p1
= (fsw_u8
*)s1data
;
49 fsw_u16
*p2
= (fsw_u16
*)s2data
;
52 for (i
= 0; i
< len
; i
++) {
54 c2
= *p2
++; c2
= FSW_SWAPVALUE_U16(c2
);
61 static int fsw_streq_UTF8_UTF16(void *s1data
, void *s2data
, int len
)
64 fsw_u8
*p1
= (fsw_u8
*)s1data
;
65 fsw_u16
*p2
= (fsw_u16
*)s2data
;
68 for (i
= 0; i
< len
; i
++) {
70 if ((c1
& 0xe0) == 0xc0) {
71 c1
= ((c1
& 0x1f) << 6) | (*p1
++ & 0x3f);
72 } else if ((c1
& 0xf0) == 0xe0) {
73 c1
= ((c1
& 0x0f) << 12) | ((*p1
++ & 0x3f) << 6);
75 } else if ((c1
& 0xf8) == 0xf0) {
76 c1
= ((c1
& 0x07) << 18) | ((*p1
++ & 0x3f) << 12);
77 c1
|= ((*p1
++ & 0x3f) << 6);
87 static int fsw_streq_UTF8_UTF16_SWAPPED(void *s1data
, void *s2data
, int len
)
90 fsw_u8
*p1
= (fsw_u8
*)s1data
;
91 fsw_u16
*p2
= (fsw_u16
*)s2data
;
94 for (i
= 0; i
< len
; i
++) {
96 if ((c1
& 0xe0) == 0xc0) {
97 c1
= ((c1
& 0x1f) << 6) | (*p1
++ & 0x3f);
98 } else if ((c1
& 0xf0) == 0xe0) {
99 c1
= ((c1
& 0x0f) << 12) | ((*p1
++ & 0x3f) << 6);
100 c1
|= (*p1
++ & 0x3f);
101 } else if ((c1
& 0xf8) == 0xf0) {
102 c1
= ((c1
& 0x07) << 18) | ((*p1
++ & 0x3f) << 12);
103 c1
|= ((*p1
++ & 0x3f) << 6);
104 c1
|= (*p1
++ & 0x3f);
106 c2
= *p2
++; c2
= FSW_SWAPVALUE_U16(c2
);
113 static int fsw_streq_UTF16_UTF16_SWAPPED(void *s1data
, void *s2data
, int len
)
116 fsw_u16
*p1
= (fsw_u16
*)s1data
;
117 fsw_u16
*p2
= (fsw_u16
*)s2data
;
120 for (i
= 0; i
< len
; i
++) {
122 c2
= *p2
++; c2
= FSW_SWAPVALUE_U16(c2
);
129 static fsw_status_t
fsw_strcoerce_UTF8_ISO88591(void *srcdata
, int srclen
, struct fsw_string
*dest
)
137 dest
->type
= FSW_STRING_TYPE_ISO88591
;
139 dest
->size
= srclen
* sizeof(fsw_u8
);
140 status
= fsw_alloc(dest
->size
, &dest
->data
);
144 sp
= (fsw_u8
*)srcdata
;
145 dp
= (fsw_u8
*)dest
->data
;
146 for (i
= 0; i
< srclen
; i
++) {
148 if ((c
& 0xe0) == 0xc0) {
149 c
= ((c
& 0x1f) << 6) | (*sp
++ & 0x3f);
150 } else if ((c
& 0xf0) == 0xe0) {
151 c
= ((c
& 0x0f) << 12) | ((*sp
++ & 0x3f) << 6);
153 } else if ((c
& 0xf8) == 0xf0) {
154 c
= ((c
& 0x07) << 18) | ((*sp
++ & 0x3f) << 12);
155 c
|= ((*sp
++ & 0x3f) << 6);
163 static fsw_status_t
fsw_strcoerce_UTF16_ISO88591(void *srcdata
, int srclen
, struct fsw_string
*dest
)
171 dest
->type
= FSW_STRING_TYPE_ISO88591
;
173 dest
->size
= srclen
* sizeof(fsw_u8
);
174 status
= fsw_alloc(dest
->size
, &dest
->data
);
178 sp
= (fsw_u16
*)srcdata
;
179 dp
= (fsw_u8
*)dest
->data
;
180 for (i
= 0; i
< srclen
; i
++) {
187 static fsw_status_t
fsw_strcoerce_UTF16_SWAPPED_ISO88591(void *srcdata
, int srclen
, struct fsw_string
*dest
)
195 dest
->type
= FSW_STRING_TYPE_ISO88591
;
197 dest
->size
= srclen
* sizeof(fsw_u8
);
198 status
= fsw_alloc(dest
->size
, &dest
->data
);
202 sp
= (fsw_u16
*)srcdata
;
203 dp
= (fsw_u8
*)dest
->data
;
204 for (i
= 0; i
< srclen
; i
++) {
205 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
211 static fsw_status_t
fsw_strcoerce_ISO88591_UTF16(void *srcdata
, int srclen
, struct fsw_string
*dest
)
219 dest
->type
= FSW_STRING_TYPE_UTF16
;
221 dest
->size
= srclen
* sizeof(fsw_u16
);
222 status
= fsw_alloc(dest
->size
, &dest
->data
);
226 sp
= (fsw_u8
*)srcdata
;
227 dp
= (fsw_u16
*)dest
->data
;
228 for (i
= 0; i
< srclen
; i
++) {
235 static fsw_status_t
fsw_strcoerce_UTF8_UTF16(void *srcdata
, int srclen
, struct fsw_string
*dest
)
243 dest
->type
= FSW_STRING_TYPE_UTF16
;
245 dest
->size
= srclen
* sizeof(fsw_u16
);
246 status
= fsw_alloc(dest
->size
, &dest
->data
);
250 sp
= (fsw_u8
*)srcdata
;
251 dp
= (fsw_u16
*)dest
->data
;
252 for (i
= 0; i
< srclen
; i
++) {
254 if ((c
& 0xe0) == 0xc0) {
255 c
= ((c
& 0x1f) << 6) | (*sp
++ & 0x3f);
256 } else if ((c
& 0xf0) == 0xe0) {
257 c
= ((c
& 0x0f) << 12) | ((*sp
++ & 0x3f) << 6);
259 } else if ((c
& 0xf8) == 0xf0) {
260 c
= ((c
& 0x07) << 18) | ((*sp
++ & 0x3f) << 12);
261 c
|= ((*sp
++ & 0x3f) << 6);
269 static fsw_status_t
fsw_strcoerce_UTF16_SWAPPED_UTF16(void *srcdata
, int srclen
, struct fsw_string
*dest
)
277 dest
->type
= FSW_STRING_TYPE_UTF16
;
279 dest
->size
= srclen
* sizeof(fsw_u16
);
280 status
= fsw_alloc(dest
->size
, &dest
->data
);
284 sp
= (fsw_u16
*)srcdata
;
285 dp
= (fsw_u16
*)dest
->data
;
286 for (i
= 0; i
< srclen
; i
++) {
287 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
293 static fsw_status_t
fsw_strcoerce_ISO88591_UTF8(void *srcdata
, int srclen
, struct fsw_string
*dest
)
301 sp
= (fsw_u8
*)srcdata
;
303 for (i
= 0; i
< srclen
; i
++) {
308 else if (c
< 0x000800)
310 else if (c
< 0x010000)
316 dest
->type
= FSW_STRING_TYPE_UTF8
;
318 dest
->size
= destsize
;
319 status
= fsw_alloc(dest
->size
, &dest
->data
);
323 sp
= (fsw_u8
*)srcdata
;
324 dp
= (fsw_u8
*)dest
->data
;
325 for (i
= 0; i
< srclen
; i
++) {
330 } else if (c
< 0x000800) {
331 *dp
++ = (fsw_u8
)(0xc0 | ((c
>> 6) & 0x1f));
332 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
333 } else if (c
< 0x010000) {
334 *dp
++ = (fsw_u8
)(0xe0 | ((c
>> 12) & 0x0f));
335 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
336 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
338 *dp
++ = (fsw_u8
)(0xf0 | ((c
>> 18) & 0x07));
339 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 12) & 0x3f));
340 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
341 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
347 static fsw_status_t
fsw_strcoerce_UTF16_UTF8(void *srcdata
, int srclen
, struct fsw_string
*dest
)
355 sp
= (fsw_u16
*)srcdata
;
357 for (i
= 0; i
< srclen
; i
++) {
362 else if (c
< 0x000800)
364 else if (c
< 0x010000)
370 dest
->type
= FSW_STRING_TYPE_UTF8
;
372 dest
->size
= destsize
;
373 status
= fsw_alloc(dest
->size
, &dest
->data
);
377 sp
= (fsw_u16
*)srcdata
;
378 dp
= (fsw_u8
*)dest
->data
;
379 for (i
= 0; i
< srclen
; i
++) {
384 } else if (c
< 0x000800) {
385 *dp
++ = (fsw_u8
)(0xc0 | ((c
>> 6) & 0x1f));
386 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
387 } else if (c
< 0x010000) {
388 *dp
++ = (fsw_u8
)(0xe0 | ((c
>> 12) & 0x0f));
389 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
390 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
392 *dp
++ = (fsw_u8
)(0xf0 | ((c
>> 18) & 0x07));
393 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 12) & 0x3f));
394 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
395 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
401 static fsw_status_t
fsw_strcoerce_UTF16_SWAPPED_UTF8(void *srcdata
, int srclen
, struct fsw_string
*dest
)
409 sp
= (fsw_u16
*)srcdata
;
411 for (i
= 0; i
< srclen
; i
++) {
412 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
416 else if (c
< 0x000800)
418 else if (c
< 0x010000)
424 dest
->type
= FSW_STRING_TYPE_UTF8
;
426 dest
->size
= destsize
;
427 status
= fsw_alloc(dest
->size
, &dest
->data
);
431 sp
= (fsw_u16
*)srcdata
;
432 dp
= (fsw_u8
*)dest
->data
;
433 for (i
= 0; i
< srclen
; i
++) {
434 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
438 } else if (c
< 0x000800) {
439 *dp
++ = (fsw_u8
)(0xc0 | ((c
>> 6) & 0x1f));
440 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
441 } else if (c
< 0x010000) {
442 *dp
++ = (fsw_u8
)(0xe0 | ((c
>> 12) & 0x0f));
443 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
444 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
446 *dp
++ = (fsw_u8
)(0xf0 | ((c
>> 18) & 0x07));
447 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 12) & 0x3f));
448 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
449 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));