OpenCore  1.0.4
OpenCore Bootloader
Loading...
Searching...
No Matches
fsw_strfunc.h
Go to the documentation of this file.
1/* fsw_strfunc.h generated by mk_fsw_strfunc.py */
2
3static int fsw_streq_ISO88591_UTF8(void *s1data, void *s2data, int len)
4{
5 int i;
6 fsw_u8 *p1 = (fsw_u8 *)s1data;
7 fsw_u8 *p2 = (fsw_u8 *)s2data;
8 fsw_u32 c1, c2;
9
10 for (i = 0; i < len; i++) {
11 c1 = *p1++;
12 c2 = *p2++;
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);
17 c2 |= (*p2++ & 0x3f);
18 } else if ((c2 & 0xf8) == 0xf0) {
19 c2 = ((c2 & 0x07) << 18) | ((*p2++ & 0x3f) << 12);
20 c2 |= ((*p2++ & 0x3f) << 6);
21 c2 |= (*p2++ & 0x3f);
22 }
23 if (c1 != c2)
24 return 0;
25 }
26 return 1;
27}
28
29static int fsw_streq_ISO88591_UTF16(void *s1data, void *s2data, int len)
30{
31 int i;
32 fsw_u8 *p1 = (fsw_u8 *)s1data;
33 fsw_u16 *p2 = (fsw_u16 *)s2data;
34 fsw_u32 c1, c2;
35
36 for (i = 0; i < len; i++) {
37 c1 = *p1++;
38 c2 = *p2++;
39 if (c1 != c2)
40 return 0;
41 }
42 return 1;
43}
44
45static int fsw_streq_ISO88591_UTF16_SWAPPED(void *s1data, void *s2data, int len)
46{
47 int i;
48 fsw_u8 *p1 = (fsw_u8 *)s1data;
49 fsw_u16 *p2 = (fsw_u16 *)s2data;
50 fsw_u32 c1, c2;
51
52 for (i = 0; i < len; i++) {
53 c1 = *p1++;
54 c2 = *p2++; c2 = FSW_SWAPVALUE_U16(c2);
55 if (c1 != c2)
56 return 0;
57 }
58 return 1;
59}
60
61static int fsw_streq_UTF8_UTF16(void *s1data, void *s2data, int len)
62{
63 int i;
64 fsw_u8 *p1 = (fsw_u8 *)s1data;
65 fsw_u16 *p2 = (fsw_u16 *)s2data;
66 fsw_u32 c1, c2;
67
68 for (i = 0; i < len; i++) {
69 c1 = *p1++;
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);
74 c1 |= (*p1++ & 0x3f);
75 } else if ((c1 & 0xf8) == 0xf0) {
76 c1 = ((c1 & 0x07) << 18) | ((*p1++ & 0x3f) << 12);
77 c1 |= ((*p1++ & 0x3f) << 6);
78 c1 |= (*p1++ & 0x3f);
79 }
80 c2 = *p2++;
81 if (c1 != c2)
82 return 0;
83 }
84 return 1;
85}
86
87static int fsw_streq_UTF8_UTF16_SWAPPED(void *s1data, void *s2data, int len)
88{
89 int i;
90 fsw_u8 *p1 = (fsw_u8 *)s1data;
91 fsw_u16 *p2 = (fsw_u16 *)s2data;
92 fsw_u32 c1, c2;
93
94 for (i = 0; i < len; i++) {
95 c1 = *p1++;
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);
105 }
106 c2 = *p2++; c2 = FSW_SWAPVALUE_U16(c2);
107 if (c1 != c2)
108 return 0;
109 }
110 return 1;
111}
112
113static int fsw_streq_UTF16_UTF16_SWAPPED(void *s1data, void *s2data, int len)
114{
115 int i;
116 fsw_u16 *p1 = (fsw_u16 *)s1data;
117 fsw_u16 *p2 = (fsw_u16 *)s2data;
118 fsw_u32 c1, c2;
119
120 for (i = 0; i < len; i++) {
121 c1 = *p1++;
122 c2 = *p2++; c2 = FSW_SWAPVALUE_U16(c2);
123 if (c1 != c2)
124 return 0;
125 }
126 return 1;
127}
128
129static fsw_status_t fsw_strcoerce_UTF8_ISO88591(void *srcdata, int srclen, struct fsw_string *dest)
130{
131 fsw_status_t status;
132 int i;
133 fsw_u8 *sp;
134 fsw_u8 *dp;
135 fsw_u32 c;
136
138 dest->len = srclen;
139 dest->size = srclen * sizeof(fsw_u8);
140 status = fsw_alloc(dest->size, &dest->data);
141 if (status)
142 return status;
143
144 sp = (fsw_u8 *)srcdata;
145 dp = (fsw_u8 *)dest->data;
146 for (i = 0; i < srclen; i++) {
147 c = *sp++;
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);
152 c |= (*sp++ & 0x3f);
153 } else if ((c & 0xf8) == 0xf0) {
154 c = ((c & 0x07) << 18) | ((*sp++ & 0x3f) << 12);
155 c |= ((*sp++ & 0x3f) << 6);
156 c |= (*sp++ & 0x3f);
157 }
158 *dp++ = (fsw_u8) c;
159 }
160 return FSW_SUCCESS;
161}
162
163static fsw_status_t fsw_strcoerce_UTF16_ISO88591(void *srcdata, int srclen, struct fsw_string *dest)
164{
165 fsw_status_t status;
166 int i;
167 fsw_u16 *sp;
168 fsw_u8 *dp;
169 fsw_u32 c;
170
172 dest->len = srclen;
173 dest->size = srclen * sizeof(fsw_u8);
174 status = fsw_alloc(dest->size, &dest->data);
175 if (status)
176 return status;
177
178 sp = (fsw_u16 *)srcdata;
179 dp = (fsw_u8 *)dest->data;
180 for (i = 0; i < srclen; i++) {
181 c = *sp++;
182 *dp++ = (fsw_u8) c;
183 }
184 return FSW_SUCCESS;
185}
186
187static fsw_status_t fsw_strcoerce_UTF16_SWAPPED_ISO88591(void *srcdata, int srclen, struct fsw_string *dest)
188{
189 fsw_status_t status;
190 int i;
191 fsw_u16 *sp;
192 fsw_u8 *dp;
193 fsw_u32 c;
194
196 dest->len = srclen;
197 dest->size = srclen * sizeof(fsw_u8);
198 status = fsw_alloc(dest->size, &dest->data);
199 if (status)
200 return status;
201
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);
206 *dp++ = (fsw_u8) c;
207 }
208 return FSW_SUCCESS;
209}
210
211static fsw_status_t fsw_strcoerce_ISO88591_UTF16(void *srcdata, int srclen, struct fsw_string *dest)
212{
213 fsw_status_t status;
214 int i;
215 fsw_u8 *sp;
216 fsw_u16 *dp;
217 fsw_u32 c;
218
220 dest->len = srclen;
221 dest->size = srclen * sizeof(fsw_u16);
222 status = fsw_alloc(dest->size, &dest->data);
223 if (status)
224 return status;
225
226 sp = (fsw_u8 *)srcdata;
227 dp = (fsw_u16 *)dest->data;
228 for (i = 0; i < srclen; i++) {
229 c = *sp++;
230 *dp++ = (fsw_u16) c;
231 }
232 return FSW_SUCCESS;
233}
234
235static fsw_status_t fsw_strcoerce_UTF8_UTF16(void *srcdata, int srclen, struct fsw_string *dest)
236{
237 fsw_status_t status;
238 int i;
239 fsw_u8 *sp;
240 fsw_u16 *dp;
241 fsw_u32 c;
242
244 dest->len = srclen;
245 dest->size = srclen * sizeof(fsw_u16);
246 status = fsw_alloc(dest->size, &dest->data);
247 if (status)
248 return status;
249
250 sp = (fsw_u8 *)srcdata;
251 dp = (fsw_u16 *)dest->data;
252 for (i = 0; i < srclen; i++) {
253 c = *sp++;
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);
258 c |= (*sp++ & 0x3f);
259 } else if ((c & 0xf8) == 0xf0) {
260 c = ((c & 0x07) << 18) | ((*sp++ & 0x3f) << 12);
261 c |= ((*sp++ & 0x3f) << 6);
262 c |= (*sp++ & 0x3f);
263 }
264 *dp++ = (fsw_u16) c;
265 }
266 return FSW_SUCCESS;
267}
268
269static fsw_status_t fsw_strcoerce_UTF16_SWAPPED_UTF16(void *srcdata, int srclen, struct fsw_string *dest)
270{
271 fsw_status_t status;
272 int i;
273 fsw_u16 *sp;
274 fsw_u16 *dp;
275 fsw_u32 c;
276
278 dest->len = srclen;
279 dest->size = srclen * sizeof(fsw_u16);
280 status = fsw_alloc(dest->size, &dest->data);
281 if (status)
282 return status;
283
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);
288 *dp++ = (fsw_u16) c;
289 }
290 return FSW_SUCCESS;
291}
292
293static fsw_status_t fsw_strcoerce_ISO88591_UTF8(void *srcdata, int srclen, struct fsw_string *dest)
294{
295 fsw_status_t status;
296 int i, destsize;
297 fsw_u8 *sp;
298 fsw_u8 *dp;
299 fsw_u32 c;
300
301 sp = (fsw_u8 *)srcdata;
302 destsize = 0;
303 for (i = 0; i < srclen; i++) {
304 c = *sp++;
305
306 if (c < 0x000080)
307 destsize++;
308 else if (c < 0x000800)
309 destsize += 2;
310 else if (c < 0x010000)
311 destsize += 3;
312 else
313 destsize += 4;
314 }
315
317 dest->len = srclen;
318 dest->size = destsize;
319 status = fsw_alloc(dest->size, &dest->data);
320 if (status)
321 return status;
322
323 sp = (fsw_u8 *)srcdata;
324 dp = (fsw_u8 *)dest->data;
325 for (i = 0; i < srclen; i++) {
326 c = *sp++;
327
328 if (c < 0x000080) {
329 *dp++ = (fsw_u8) c;
330 } else if (c < 0x000800) {
331 *dp++ = 0xc0 | ((c >> 6) & 0x1f);
332 *dp++ = 0x80 | (c & 0x3f);
333 } else if (c < 0x010000) {
334 *dp++ = 0xe0 | ((c >> 12) & 0x0f);
335 *dp++ = 0x80 | ((c >> 6) & 0x3f);
336 *dp++ = 0x80 | (c & 0x3f);
337 } else {
338 *dp++ = 0xf0 | ((c >> 18) & 0x07);
339 *dp++ = 0x80 | ((c >> 12) & 0x3f);
340 *dp++ = 0x80 | ((c >> 6) & 0x3f);
341 *dp++ = 0x80 | (c & 0x3f);
342 }
343 }
344 return FSW_SUCCESS;
345}
346
347static fsw_status_t fsw_strcoerce_UTF16_UTF8(void *srcdata, int srclen, struct fsw_string *dest)
348{
349 fsw_status_t status;
350 int i, destsize;
351 fsw_u16 *sp;
352 fsw_u8 *dp;
353 fsw_u32 c;
354
355 sp = (fsw_u16 *)srcdata;
356 destsize = 0;
357 for (i = 0; i < srclen; i++) {
358 c = *sp++;
359
360 if (c < 0x000080)
361 destsize++;
362 else if (c < 0x000800)
363 destsize += 2;
364 else if (c < 0x010000)
365 destsize += 3;
366 else
367 destsize += 4;
368 }
369
371 dest->len = srclen;
372 dest->size = destsize;
373 status = fsw_alloc(dest->size, &dest->data);
374 if (status)
375 return status;
376
377 sp = (fsw_u16 *)srcdata;
378 dp = (fsw_u8 *)dest->data;
379 for (i = 0; i < srclen; i++) {
380 c = *sp++;
381
382 if (c < 0x000080) {
383 *dp++ = (fsw_u8) c;
384 } else if (c < 0x000800) {
385 *dp++ = 0xc0 | ((c >> 6) & 0x1f);
386 *dp++ = 0x80 | (c & 0x3f);
387 } else if (c < 0x010000) {
388 *dp++ = 0xe0 | ((c >> 12) & 0x0f);
389 *dp++ = 0x80 | ((c >> 6) & 0x3f);
390 *dp++ = 0x80 | (c & 0x3f);
391 } else {
392 *dp++ = 0xf0 | ((c >> 18) & 0x07);
393 *dp++ = 0x80 | ((c >> 12) & 0x3f);
394 *dp++ = 0x80 | ((c >> 6) & 0x3f);
395 *dp++ = 0x80 | (c & 0x3f);
396 }
397 }
398 return FSW_SUCCESS;
399}
400
401static fsw_status_t fsw_strcoerce_UTF16_SWAPPED_UTF8(void *srcdata, int srclen, struct fsw_string *dest)
402{
403 fsw_status_t status;
404 int i, destsize;
405 fsw_u16 *sp;
406 fsw_u8 *dp;
407 fsw_u32 c;
408
409 sp = (fsw_u16 *)srcdata;
410 destsize = 0;
411 for (i = 0; i < srclen; i++) {
412 c = *sp++; c = FSW_SWAPVALUE_U16(c);
413
414 if (c < 0x000080)
415 destsize++;
416 else if (c < 0x000800)
417 destsize += 2;
418 else if (c < 0x010000)
419 destsize += 3;
420 else
421 destsize += 4;
422 }
423
425 dest->len = srclen;
426 dest->size = destsize;
427 status = fsw_alloc(dest->size, &dest->data);
428 if (status)
429 return status;
430
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);
435
436 if (c < 0x000080) {
437 *dp++ = (fsw_u8) c;
438 } else if (c < 0x000800) {
439 *dp++ = 0xc0 | ((c >> 6) & 0x1f);
440 *dp++ = 0x80 | (c & 0x3f);
441 } else if (c < 0x010000) {
442 *dp++ = 0xe0 | ((c >> 12) & 0x0f);
443 *dp++ = 0x80 | ((c >> 6) & 0x3f);
444 *dp++ = 0x80 | (c & 0x3f);
445 } else {
446 *dp++ = 0xf0 | ((c >> 18) & 0x07);
447 *dp++ = 0x80 | ((c >> 12) & 0x3f);
448 *dp++ = 0x80 | ((c >> 6) & 0x3f);
449 *dp++ = 0x80 | (c & 0x3f);
450 }
451 }
452 return FSW_SUCCESS;
453}
int fsw_status_t
Definition fsw_core.h:153
#define FSW_SWAPVALUE_U16(v)
Definition fsw_core.h:77
@ FSW_SUCCESS
Definition fsw_core.h:159
@ FSW_STRING_TYPE_ISO88591
Definition fsw_core.h:186
@ FSW_STRING_TYPE_UTF8
Definition fsw_core.h:187
@ FSW_STRING_TYPE_UTF16
Definition fsw_core.h:188
UINT16 fsw_u16
UINT32 fsw_u32
#define fsw_alloc(size, ptrptr)
UINT8 fsw_u8
void * data
Data pointer (may be NULL if type is EMPTY or len is zero)
Definition fsw_core.h:177
int len
Length in characters.
Definition fsw_core.h:175
int size
Total data size in bytes.
Definition fsw_core.h:176
int type
Encoding of the string - empty, ISO-8859-1, UTF8, UTF16.
Definition fsw_core.h:174