]>
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 #ifdef __MAKEWITH_TIANO
30 static int fsw_streq_ISO88591_UTF16(void *s1data
, void *s2data
, int len
)
33 fsw_u8
*p1
= (fsw_u8
*)s1data
;
34 fsw_u16
*p2
= (fsw_u16
*)s2data
;
37 for (i
= 0; i
< len
; i
++) {
47 static int fsw_streq_ISO88591_UTF16_SWAPPED(void *s1data
, void *s2data
, int len
)
50 fsw_u8
*p1
= (fsw_u8
*)s1data
;
51 fsw_u16
*p2
= (fsw_u16
*)s2data
;
54 for (i
= 0; i
< len
; i
++) {
56 c2
= *p2
++; c2
= FSW_SWAPVALUE_U16(c2
);
63 static int fsw_streq_UTF8_UTF16(void *s1data
, void *s2data
, int len
)
66 fsw_u8
*p1
= (fsw_u8
*)s1data
;
67 fsw_u16
*p2
= (fsw_u16
*)s2data
;
70 for (i
= 0; i
< len
; i
++) {
72 if ((c1
& 0xe0) == 0xc0) {
73 c1
= ((c1
& 0x1f) << 6) | (*p1
++ & 0x3f);
74 } else if ((c1
& 0xf0) == 0xe0) {
75 c1
= ((c1
& 0x0f) << 12) | ((*p1
++ & 0x3f) << 6);
77 } else if ((c1
& 0xf8) == 0xf0) {
78 c1
= ((c1
& 0x07) << 18) | ((*p1
++ & 0x3f) << 12);
79 c1
|= ((*p1
++ & 0x3f) << 6);
89 static int fsw_streq_UTF8_UTF16_SWAPPED(void *s1data
, void *s2data
, int len
)
92 fsw_u8
*p1
= (fsw_u8
*)s1data
;
93 fsw_u16
*p2
= (fsw_u16
*)s2data
;
96 for (i
= 0; i
< len
; i
++) {
98 if ((c1
& 0xe0) == 0xc0) {
99 c1
= ((c1
& 0x1f) << 6) | (*p1
++ & 0x3f);
100 } else if ((c1
& 0xf0) == 0xe0) {
101 c1
= ((c1
& 0x0f) << 12) | ((*p1
++ & 0x3f) << 6);
102 c1
|= (*p1
++ & 0x3f);
103 } else if ((c1
& 0xf8) == 0xf0) {
104 c1
= ((c1
& 0x07) << 18) | ((*p1
++ & 0x3f) << 12);
105 c1
|= ((*p1
++ & 0x3f) << 6);
106 c1
|= (*p1
++ & 0x3f);
108 c2
= *p2
++; c2
= FSW_SWAPVALUE_U16(c2
);
115 static int fsw_streq_UTF16_UTF16_SWAPPED(void *s1data
, void *s2data
, int len
)
118 fsw_u16
*p1
= (fsw_u16
*)s1data
;
119 fsw_u16
*p2
= (fsw_u16
*)s2data
;
122 for (i
= 0; i
< len
; i
++) {
124 c2
= *p2
++; c2
= FSW_SWAPVALUE_U16(c2
);
131 static fsw_status_t
fsw_strcoerce_UTF8_ISO88591(void *srcdata
, int srclen
, struct fsw_string
*dest
)
139 dest
->type
= FSW_STRING_TYPE_ISO88591
;
141 dest
->size
= srclen
* sizeof(fsw_u8
);
142 status
= fsw_alloc(dest
->size
, &dest
->data
);
146 sp
= (fsw_u8
*)srcdata
;
147 dp
= (fsw_u8
*)dest
->data
;
148 for (i
= 0; i
< srclen
; i
++) {
150 if ((c
& 0xe0) == 0xc0) {
151 c
= ((c
& 0x1f) << 6) | (*sp
++ & 0x3f);
152 } else if ((c
& 0xf0) == 0xe0) {
153 c
= ((c
& 0x0f) << 12) | ((*sp
++ & 0x3f) << 6);
155 } else if ((c
& 0xf8) == 0xf0) {
156 c
= ((c
& 0x07) << 18) | ((*sp
++ & 0x3f) << 12);
157 c
|= ((*sp
++ & 0x3f) << 6);
165 static fsw_status_t
fsw_strcoerce_UTF16_ISO88591(void *srcdata
, int srclen
, struct fsw_string
*dest
)
173 dest
->type
= FSW_STRING_TYPE_ISO88591
;
175 dest
->size
= srclen
* sizeof(fsw_u8
);
176 status
= fsw_alloc(dest
->size
, &dest
->data
);
180 sp
= (fsw_u16
*)srcdata
;
181 dp
= (fsw_u8
*)dest
->data
;
182 for (i
= 0; i
< srclen
; i
++) {
189 static fsw_status_t
fsw_strcoerce_UTF16_SWAPPED_ISO88591(void *srcdata
, int srclen
, struct fsw_string
*dest
)
197 dest
->type
= FSW_STRING_TYPE_ISO88591
;
199 dest
->size
= srclen
* sizeof(fsw_u8
);
200 status
= fsw_alloc(dest
->size
, &dest
->data
);
204 sp
= (fsw_u16
*)srcdata
;
205 dp
= (fsw_u8
*)dest
->data
;
206 for (i
= 0; i
< srclen
; i
++) {
207 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
213 static fsw_status_t
fsw_strcoerce_ISO88591_UTF16(void *srcdata
, int srclen
, struct fsw_string
*dest
)
221 dest
->type
= FSW_STRING_TYPE_UTF16
;
223 dest
->size
= srclen
* sizeof(fsw_u16
);
224 status
= fsw_alloc(dest
->size
, &dest
->data
);
228 sp
= (fsw_u8
*)srcdata
;
229 dp
= (fsw_u16
*)dest
->data
;
230 for (i
= 0; i
< srclen
; i
++) {
237 static fsw_status_t
fsw_strcoerce_UTF8_UTF16(void *srcdata
, int srclen
, struct fsw_string
*dest
)
245 dest
->type
= FSW_STRING_TYPE_UTF16
;
247 dest
->size
= srclen
* sizeof(fsw_u16
);
248 status
= fsw_alloc(dest
->size
, &dest
->data
);
252 sp
= (fsw_u8
*)srcdata
;
253 dp
= (fsw_u16
*)dest
->data
;
254 for (i
= 0; i
< srclen
; i
++) {
256 if ((c
& 0xe0) == 0xc0) {
257 c
= ((c
& 0x1f) << 6) | (*sp
++ & 0x3f);
258 } else if ((c
& 0xf0) == 0xe0) {
259 c
= ((c
& 0x0f) << 12) | ((*sp
++ & 0x3f) << 6);
261 } else if ((c
& 0xf8) == 0xf0) {
262 c
= ((c
& 0x07) << 18) | ((*sp
++ & 0x3f) << 12);
263 c
|= ((*sp
++ & 0x3f) << 6);
271 static fsw_status_t
fsw_strcoerce_UTF16_SWAPPED_UTF16(void *srcdata
, int srclen
, struct fsw_string
*dest
)
279 dest
->type
= FSW_STRING_TYPE_UTF16
;
281 dest
->size
= srclen
* sizeof(fsw_u16
);
282 status
= fsw_alloc(dest
->size
, &dest
->data
);
286 sp
= (fsw_u16
*)srcdata
;
287 dp
= (fsw_u16
*)dest
->data
;
288 for (i
= 0; i
< srclen
; i
++) {
289 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
295 static fsw_status_t
fsw_strcoerce_ISO88591_UTF8(void *srcdata
, int srclen
, struct fsw_string
*dest
)
303 sp
= (fsw_u8
*)srcdata
;
305 for (i
= 0; i
< srclen
; i
++) {
310 else if (c
< 0x000800)
312 else if (c
< 0x010000)
318 dest
->type
= FSW_STRING_TYPE_UTF8
;
320 dest
->size
= destsize
;
321 status
= fsw_alloc(dest
->size
, &dest
->data
);
325 sp
= (fsw_u8
*)srcdata
;
326 dp
= (fsw_u8
*)dest
->data
;
327 for (i
= 0; i
< srclen
; i
++) {
332 } else if (c
< 0x000800) {
333 *dp
++ = (fsw_u8
)(0xc0 | ((c
>> 6) & 0x1f));
334 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
335 } else if (c
< 0x010000) {
336 *dp
++ = (fsw_u8
)(0xe0 | ((c
>> 12) & 0x0f));
337 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
338 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
340 *dp
++ = (fsw_u8
)(0xf0 | ((c
>> 18) & 0x07));
341 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 12) & 0x3f));
342 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
343 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
349 static fsw_status_t
fsw_strcoerce_UTF16_UTF8(void *srcdata
, int srclen
, struct fsw_string
*dest
)
357 sp
= (fsw_u16
*)srcdata
;
359 for (i
= 0; i
< srclen
; i
++) {
364 else if (c
< 0x000800)
366 else if (c
< 0x010000)
372 dest
->type
= FSW_STRING_TYPE_UTF8
;
374 dest
->size
= destsize
;
375 status
= fsw_alloc(dest
->size
, &dest
->data
);
379 sp
= (fsw_u16
*)srcdata
;
380 dp
= (fsw_u8
*)dest
->data
;
381 for (i
= 0; i
< srclen
; i
++) {
386 } else if (c
< 0x000800) {
387 *dp
++ = (fsw_u8
)(0xc0 | ((c
>> 6) & 0x1f));
388 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
389 } else if (c
< 0x010000) {
390 *dp
++ = (fsw_u8
)(0xe0 | ((c
>> 12) & 0x0f));
391 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
392 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
394 *dp
++ = (fsw_u8
)(0xf0 | ((c
>> 18) & 0x07));
395 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 12) & 0x3f));
396 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
397 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
403 static fsw_status_t
fsw_strcoerce_UTF16_SWAPPED_UTF8(void *srcdata
, int srclen
, struct fsw_string
*dest
)
411 sp
= (fsw_u16
*)srcdata
;
413 for (i
= 0; i
< srclen
; i
++) {
414 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
418 else if (c
< 0x000800)
420 else if (c
< 0x010000)
426 dest
->type
= FSW_STRING_TYPE_UTF8
;
428 dest
->size
= destsize
;
429 status
= fsw_alloc(dest
->size
, &dest
->data
);
433 sp
= (fsw_u16
*)srcdata
;
434 dp
= (fsw_u8
*)dest
->data
;
435 for (i
= 0; i
< srclen
; i
++) {
436 c
= *sp
++; c
= FSW_SWAPVALUE_U16(c
);
440 } else if (c
< 0x000800) {
441 *dp
++ = (fsw_u8
)(0xc0 | ((c
>> 6) & 0x1f));
442 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
443 } else if (c
< 0x010000) {
444 *dp
++ = (fsw_u8
)(0xe0 | ((c
>> 12) & 0x0f));
445 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
446 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));
448 *dp
++ = (fsw_u8
)(0xf0 | ((c
>> 18) & 0x07));
449 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 12) & 0x3f));
450 *dp
++ = (fsw_u8
)(0x80 | ((c
>> 6) & 0x3f));
451 *dp
++ = (fsw_u8
)(0x80 | (c
& 0x3f));