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