1 /*
2 Copyright (C) 2015-2021, Dirk Krause
3 SPDX-License-Identifier: BSD-3-Clause
4 */
5
6 /*
7 WARNING: This file was generated by the dkct program (see
8 http://dktools.sourceforge.net/ for details).
9 Changes you make here will be lost if dkct is run again!
10 You should modify the original source and run dkct on it.
11 Original source: dk4recwx.cpt
12 */
13
14 /** @file dk4recwx.cpp The dk4recwx module.
15 */
16
17
18 #include <libdk4wx/dk4recwx.h>
19 #include <libdk4c/dk4rec.h>
20 #include <libdk4c/dk4enc.h>
21
22
23
24
25
26
27
28 int
dk4recwx_utf8_to_wxchar(wxChar * dptr,size_t dsz,const char * sptr,dk4_er_t * erp)29 dk4recwx_utf8_to_wxchar(
30 wxChar *dptr,
31 size_t dsz,
32 const char *sptr,
33 dk4_er_t *erp
34 )
35 {
36 int back = 0;
37 if ((NULL != dptr) && (NULL != sptr) && (0 < dsz)) {
38 #if DK4_SIZEOF_WXCHAR > 1
39 #if DK4_SIZEOF_WXCHAR > 2
40 back = dk4recode_utf8_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
41 #else
42 back = dk4recode_utf8_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
43 #endif
44 #else
45 #if wxUSE_UNICODE_UTF8
46 back = dk4str8_cpy_s((char *)dptr, dsz, sptr, erp);
47 #else
48 back = dk4recode_utf8_to_ansi((char *)dptr, dsz, sptr, erp);
49 #endif
50 #endif
51 }
52 else {
53 dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
54 }
55 return back;
56 }
57
58
59
60 int
dk4recwx_dkchar_to_wxchar(wxChar * dptr,size_t dsz,int de,const dkChar * sptr,int se,dk4_er_t * erp)61 dk4recwx_dkchar_to_wxchar(
62 wxChar *dptr,
63 size_t dsz,
64 #if DK4_SIZEOF_WXCHAR == 1
65 int de,
66 #else
67 int WXUNUSED(de),
68 #endif
69 const dkChar *sptr,
70 #if DK4_CHAR_SIZE == 1
71 int se,
72 #else
73 int WXUNUSED(se),
74 #endif
75 dk4_er_t *erp
76 )
77 {
78 int back = 0;
79 if ((NULL != dptr) && (NULL != sptr) && (0 < dsz)) {
80 #if DK4_SIZEOF_WXCHAR > 1
81 #if DK4_SIZEOF_WXCHAR > 2
82 /* +++++ wxChar=4 */
83
84 #if DK4_CHAR_SIZE > 1
85 #if DK4_CHAR_SIZE > 2
86 /* +++++ wxChar=4 dkChar=4 */
87 back = dk4str_cpy_s((dkChar *)dptr, dsz, sptr, erp);
88 /* ----- wxChar=4 dkChar=4 */
89 #else
90 /* +++++ wxChar=4 dkChar=2 */
91 back = dk4recode_utf16_to_c32((dk4_c32_t *)dptr, dsz, (dk4_c16_t *)sptr, erp);
92 /* ----- wxChar=4 dkChar=2 */
93 #endif
94 #else
95 /* +++++ wxChar=4 dkChar=1 */
96 switch (se) {
97 case DK4_ENCODING_UTF8 : {
98 back = dk4recode_utf8_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
99 } break;
100 case DK4_ENCODING_WIN1252 : {
101 back = dk4recode_ansi_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
102 } break;
103 default : { /* ASCII */
104 back = dk4recode_ascii_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
105 } break;
106 }
107 /* ----- wxChar=4 dkChar=1 */
108 #endif
109
110 /* ----- wxChar=4 */
111 #else
112 /* +++++ wxChar=2 */
113
114 #if DK4_CHAR_SIZE > 1
115 #if DK4_CHAR_SIZE > 2
116 /* +++++ wxChar=2 dkChar=4 */
117 back = dk4recode_c32_to_utf16((dk4_c16_t *)dptr, dsz, (dk4_c32_t *)sptr, erp);
118 /* ----- wxChar=2 dkChar=4 */
119 #else
120 /* +++++ wxChar=2 dkChar=2 */
121 back = dk4str_cpy_s((dkChar *)dptr, dsz, sptr, erp);
122 /* ----- wxChar=2 dkChar=2 */
123 #endif
124 #else
125 /* +++++ wxChar=2 dkChar=1 */
126 switch (se) {
127 case DK4_ENCODING_UTF8 : {
128 back = dk4recode_utf8_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
129 } break;
130 case DK4_ENCODING_WIN1252 : {
131 back = dk4recode_ansi_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
132 } break;
133 default : { /* ASCII */
134 back = dk4recode_ascii_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
135 } break;
136 }
137 /* ----- wxChar=2 dkChar=1 */
138 #endif
139
140 /* ----- wxChar=2 */
141 #endif
142 #else
143 /* +++++ wxChar=1 */
144
145 #if DK4_CHAR_SIZE > 1
146 #if DK4_CHAR_SIZE > 2
147 /* +++++ wxChar=1 dkChar=4 */
148 switch (de) {
149 case DK4_ENCODING_UTF8 : {
150 back = dk4recode_c32_to_utf8(dptr, dsz, (dk4_c32_t *)sptr, erp);
151 } break;
152 case DK4_ENCODING_WIN1252 : {
153 back = dk4recode_c32_to_ansi(dptr, dsz, (dk4_c32_t *)sptr, erp);
154 } break;
155 default : { /* ASCII */
156 back = dk4recode_c32_to_ascii(dptr, dsz, (dk4_c32_t *)sptr, erp);
157 } break;
158 }
159 /* ----- wxChar=1 dkChar=4 */
160 #else
161 /* +++++ wxChar=1 dkChar=2 */
162 switch (de) {
163 case DK4_ENCODING_UTF8 : {
164 back = dk4recode_utf16_to_utf8(dptr, dsz, (dk4_c16_t *)sptr, erp);
165 } break;
166 case DK4_ENCODING_WIN1252 : {
167 back = dk4recode_utf16_to_ansi(dptr, dsz, (dk4_c16_t *)sptr, erp);
168 } break;
169 default : { /* ASCII */
170 back = dk4recode_utf16_to_ascii(dptr, dsz, (dk4_c16_t *)sptr, erp);
171 } break;
172 }
173 /* ----- wxChar=1 dkChar=2 */
174 #endif
175 #else
176 /* +++++ wxChar=1 dkChar=1 */
177 back = dk4str_cpy_s(dptr, dsz, sptr, erp);
178 /* ----- wxChar=1 dkChar=1 */
179 #endif
180
181 /* ----- wxChar=1 */
182 #endif
183 } else {
184 dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
185 }
186 return back;
187 }
188
189
190
191 int
dk4recwx_wxchar_to_dkchar(dkChar * dptr,size_t dsz,int de,const wxChar * sptr,int se,dk4_er_t * erp)192 dk4recwx_wxchar_to_dkchar(
193 dkChar *dptr,
194 size_t dsz,
195 #if DK4_CHAR_SIZE == 1
196 int de,
197 #else
198 int WXUNUSED(de),
199 #endif
200 const wxChar *sptr,
201 #if DK4_SIZEOF_WXCHAR == 1
202 int se,
203 #else
204 int WXUNUSED(se),
205 #endif
206 dk4_er_t *erp
207 )
208 {
209 int back = 0;
210
211 if ((NULL != dptr) && (NULL != sptr) && (0 < dsz)) {
212 #if DK4_SIZEOF_WXCHAR > 1
213 #if DK4_SIZEOF_WXCHAR > 2
214 /* +++++ wxChar=4 */
215
216 #if DK4_CHAR_SIZE > 1
217 #if DK4_CHAR_SIZE > 2
218 /* +++++ wxChar=4 dkChar=4 */
219
220 back = dk4str_cpy_s(dptr, dsz, (dkChar *)sptr, erp);
221 /* ----- wxChar=4 dkChar=4 */
222 #else
223 /* +++++ wxChar=4 dkChar=2 */
224
225 back = dk4recode_c32_to_utf16((dk4_c16_t *)dptr, dsz, (dk4_c32_t *)sptr, erp);
226 /* ----- wxChar=4 dkChar=2 */
227 #endif
228 #else
229 /* +++++ wxChar=4 dkChar=1 */
230
231 switch (de) {
232 case DK4_ENCODING_UTF8 : {
233
234 back = dk4recode_c32_to_utf8(dptr, dsz, (dk4_c32_t *)sptr, erp);
235 } break;
236 case DK4_ENCODING_WIN1252 : {
237
238 back = dk4recode_c32_to_ansi(dptr, dsz, (dk4_c32_t *)sptr, erp);
239 } break;
240 default : { /* ASCII */
241
242 back = dk4recode_c32_to_ascii(dptr, dsz, (dk4_c32_t *)sptr, erp);
243 } break;
244 }
245 /* ----- wxChar=4 dkChar=1 */
246 #endif
247
248 /* ----- wxChar=4 */
249 #else
250 /* +++++ wxChar=2 */
251
252 #if DK4_CHAR_SIZE > 1
253 #if DK4_CHAR_SIZE > 2
254 /* +++++ wxChar=2 dkChar=4 */
255
256 back = dk4recode_utf16_to_c32((dk4_c32_t *)dptr, dsz, (dk4_c16_t *)sptr, erp);
257 /* ----- wxChar=2 dkChar=4 */
258 #else
259 /* +++++ wxChar=2 dkChar=2 */
260
261 back = dk4str_cpy_s(dptr, dsz, (dkChar *)sptr, erp);
262 /* ----- wxChar=2 dkChar=2 */
263 #endif
264 #else
265 /* +++++ wxChar=2 dkChar=1 */
266
267 switch (de) {
268 case DK4_ENCODING_UTF8 : {
269
270 back = dk4recode_utf16_to_utf8(dptr, dsz, (dk4_c16_t *)sptr, erp);
271 } break;
272 case DK4_ENCODING_WIN1252 : {
273
274 back = dk4recode_utf16_to_ansi(dptr, dsz, (dk4_c16_t *)sptr, erp);
275 } break;
276 default : { /* ASCII */
277
278 back = dk4recode_utf16_to_ascii(dptr, dsz, (dk4_c16_t *)sptr, erp);
279 } break;
280 }
281 /* ----- wxChar=2 dkChar=1 */
282 #endif
283
284 /* ----- wxChar=2 */
285 #endif
286 #else
287 /* +++++ wxChar=1 */
288
289 #if DK4_CHAR_SIZE > 1
290 #if DK4_CHAR_SIZE > 2
291 /* +++++ wxChar=1 dkChar=4 */
292
293 switch (se) {
294 case DK4_ENCODING_UTF8 : {
295
296 back = dk4recode_utf8_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
297 } break;
298 case DK4_ENCODING_WIN1252 : {
299
300 back = dk4recode_ansi_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
301 } break;
302 default : { /* ASCII */
303
304 back = dk4recode_ascii_to_c32((dk4_c32_t *)dptr, dsz, sptr, erp);
305 } break;
306 }
307 /* ----- wxChar=1 dkChar=4 */
308 #else
309 /* +++++ wxChar=1 dkChar=2 */
310
311 switch (se) {
312 case DK4_ENCODING_UTF8 : {
313
314 back = dk4recode_utf8_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
315 } break;
316 case DK4_ENCODING_WIN1252 : {
317
318 back = dk4recode_ansi_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
319 } break;
320 default : { /* ASCII */
321
322 back = dk4recode_ascii_to_utf16((dk4_c16_t *)dptr, dsz, sptr, erp);
323 } break;
324 }
325 /* ----- wxChar=1 dkChar=2 */
326 #endif
327 #else
328 /* +++++ wxChar=1 dkChar=1 */
329
330 back = dk4str8_cpy_s(dptr, dsz, sptr, erp);
331 /* ----- wxChar=1 dkChar=1 */
332 #endif
333
334 /* ----- wxChar=1 */
335 #endif
336 } else {
337 dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
338 }
339
340 return back;
341 }
342
343
344
345 int
dk4recwx_wxchar_to_char(char * dptr,size_t dsz,int de,const wxChar * sptr,int se,dk4_er_t * erp)346 dk4recwx_wxchar_to_char(
347 char *dptr,
348 size_t dsz,
349 int de,
350 const wxChar *sptr,
351 #if DK4_SIZEOF_WXCHAR == 1
352 int se,
353 #else
354 int WXUNUSED(se),
355 #endif
356 dk4_er_t *erp
357 )
358 {
359 int back = 0;
360 if ((NULL != dptr) && (NULL != sptr) && (0 < dsz)) {
361 switch (de) {
362 case DK4_ENCODING_UTF8 : {
363 #if DK4_SIZEOF_WXCHAR > 1
364 #if DK4_SIZEOF_WXCHAR > 2
365 /* +++ wxChar 4 +++ */
366 back = dk4recode_c32_to_utf8(dptr, dsz, (const dk4_c32_t *)sptr, erp);
367 /* --- wxChar 4 --- */
368 #else
369 /* +++ wxChar 2 +++ */
370 back = dk4recode_utf16_to_utf8(dptr, dsz, (const dk4_c16_t *)sptr, erp);
371 /* --- wxChar 2 --- */
372 #endif
373 #else
374 /* +++ wxChar 1 +++ */
375 switch (se) {
376 case DK4_ENCODING_UTF8 : {
377 back = dk4str8_cpy_s(dptr, dsz, sptr, erp);
378 } break;
379 case DK4_ENCODING_WIN1252 : {
380 back = dk4recode_ansi_to_utf8(dptr, dsz, sptr, erp);
381 } break;
382 default : {
383 back = dk4recode_ascii_to_utf8(dptr, dsz, sptr, erp);
384 } break;
385 }
386 /* --- wxChar 1 --- */
387 #endif
388 } break;
389 case DK4_ENCODING_WIN1252 : {
390 #if DK4_SIZEOF_WXCHAR > 1
391 #if DK4_SIZEOF_WXCHAR > 2
392 /* +++ wxChar 4 +++ */
393 back = dk4recode_c32_to_ansi(dptr, dsz, (const dk4_c32_t *)sptr, erp);
394 /* --- wxChar 4 --- */
395 #else
396 /* +++ wxChar 2 +++ */
397 back = dk4recode_utf16_to_ansi(dptr, dsz, (const dk4_c16_t *)sptr, erp);
398 /* --- wxChar 2 --- */
399 #endif
400 #else
401 /* +++ wxChar 1 +++ */
402 switch (se) {
403 case DK4_ENCODING_UTF8 : {
404 back = dk4recode_utf8_to_ansi(dptr, dsz, sptr, erp);
405 } break;
406 case DK4_ENCODING_WIN1252 : {
407 back = dk4str8_cpy_s(dptr, dsz, sptr, erp);
408 } break;
409 default : {
410 back = dk4recode_ascii_to_ansi(dptr, dsz, sptr, erp);
411 } break;
412 }
413 /* --- wxChar 1 --- */
414 #endif
415 } break;
416 default : {
417 #if DK4_SIZEOF_WXCHAR > 1
418 #if DK4_SIZEOF_WXCHAR > 2
419 /* +++ wxChar 4 +++ */
420 back = dk4recode_c32_to_ascii(dptr, dsz, (const dk4_c32_t *)sptr, erp);
421 /* --- wxChar 4 --- */
422 #else
423 /* +++ wxChar 2 +++ */
424 back = dk4recode_utf16_to_ascii(dptr,dsz,(const dk4_c16_t *)sptr,erp);
425 /* --- wxChar 2 --- */
426 #endif
427 #else
428 /* +++ wxChar 1 +++ */
429 switch (se) {
430 case DK4_ENCODING_UTF8 : {
431 back = dk4recode_utf8_to_ascii(dptr, dsz, sptr, erp);
432 } break;
433 case DK4_ENCODING_WIN1252 : {
434 back = dk4recode_ansi_to_ascii(dptr, dsz, sptr, erp);
435 } break;
436 default : {
437 back = dk4str8_cpy_s(dptr, dsz, sptr, erp);
438 } break;
439 }
440 /* --- wxChar 1 --- */
441 #endif
442 } break;
443 }
444 } else {
445 dk4error_set_simple_error_code(erp, DK4_E_INVALID_ARGUMENTS);
446 }
447 return back;
448 }
449
450
451
452 unsigned long
dk4recwx_wxchar_to_ul(wxChar wxc)453 dk4recwx_wxchar_to_ul(wxChar wxc)
454 {
455 unsigned long back;
456 #if DK4_SIZEOF_WXCHAR > 1
457 #if DK4_SIZEOF_WXCHAR > 2
458 back = (0xFFFFFFFFUL & ((unsigned long)wxc));
459 #else
460 back = (0x0000FFFFUL & ((unsigned long)wxc));
461 #endif
462 #else
463 back = (0x000000FFUL & ((unsigned long)wxc));
464 #endif
465 return back;
466 }
467
468