Changeset 696b405 in mainline for common/stdc/wchar.c
- Timestamp:
- 2025-04-13T12:54:10Z (4 weeks ago)
- Branches:
- master
- Children:
- 9daee3de
- Parents:
- 7d1497c
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2025-04-13 10:13:16)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2025-04-13 12:54:10)
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
common/stdc/wchar.c
r7d1497c r696b405 1 1 /* 2 * Copyright (c) 20 17 CZ.NIC, z.s.p.o.2 * Copyright (c) 2025 Jiří Zárevúcky 3 3 * All rights reserved. 4 4 * … … 27 27 */ 28 28 29 /* 30 * Authors: 31 * Jiří Zárevúcky (jzr) <zarevucky.jiri@gmail.com> 32 */ 29 #include <uchar.h> 30 #include <wchar.h> 33 31 34 /** @addtogroup libc 35 * @{ 36 */ 37 /** @file 38 */ 39 40 #ifndef _LIBC_WCHAR_H_ 41 #define _LIBC_WCHAR_H_ 42 43 #include <_bits/size_t.h> 44 #include <_bits/wchar_t.h> 45 #include <_bits/wchar_limits.h> 46 #include <_bits/wint_t.h> 47 #include <_bits/NULL.h> 48 #include <_bits/WEOF.h> 49 32 #if __STDC_HOSTED__ 33 #include <fibril.h> 50 34 #endif 51 35 52 /** @} 53 */ 36 wint_t btowc(int c) 37 { 38 return (c < 0x80) ? c : WEOF; 39 } 40 41 int wctob(wint_t c) 42 { 43 return c; 44 } 45 46 int mbsinit(const mbstate_t *ps) 47 { 48 return ps == NULL || ps->continuation == 0; 49 } 50 51 size_t mbrlen(const char *s, size_t n, mbstate_t *ps) 52 { 53 #if __STDC_HOSTED__ 54 static fibril_local mbstate_t global_state; 55 if (!ps) 56 ps = &global_state; 57 #endif 58 59 return mbrtowc(NULL, s, n, ps); 60 } 61 62 _Static_assert(sizeof(wchar_t) == sizeof(char16_t) || sizeof(wchar_t) == sizeof(char32_t)); 63 64 size_t mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps) 65 { 66 #if __STDC_HOSTED__ 67 static fibril_local mbstate_t global_state; 68 if (!ps) 69 ps = &global_state; 70 #endif 71 72 if (sizeof(wchar_t) == sizeof(char16_t)) 73 return mbrtoc16((char16_t *) pwc, s, n, ps); 74 else 75 return mbrtoc32((char32_t *) pwc, s, n, ps); 76 } 77 78 size_t wcrtomb(char *s, wchar_t wc, mbstate_t * ps) 79 { 80 #if __STDC_HOSTED__ 81 static fibril_local mbstate_t global_state; 82 if (!ps) 83 ps = &global_state; 84 #endif 85 86 if (sizeof(wchar_t) == sizeof(char16_t)) 87 return c16rtomb(s, (char16_t) wc, ps); 88 else 89 return c32rtomb(s, (char32_t) wc, ps); 90 }
Note:
See TracChangeset
for help on using the changeset viewer.