xref: /openbsd/include/uchar.h (revision ee970480)
1*ee970480Sschwarze /*	$OpenBSD: uchar.h,v 1.2 2023/09/05 23:16:01 schwarze Exp $	*/
246c354aaSschwarze /*
346c354aaSschwarze  * Written by Ingo Schwarze <schwarze@openbsd.org>
446c354aaSschwarze  * and placed in the public domain on March 19, 2022.
546c354aaSschwarze  */
646c354aaSschwarze 
746c354aaSschwarze #ifndef _UCHAR_H_
846c354aaSschwarze #define _UCHAR_H_
946c354aaSschwarze 
1046c354aaSschwarze #include <sys/cdefs.h>
1146c354aaSschwarze #include <sys/_types.h>
1246c354aaSschwarze 
1346c354aaSschwarze #ifndef _MBSTATE_T_DEFINED_
1446c354aaSschwarze #define _MBSTATE_T_DEFINED_
1546c354aaSschwarze typedef __mbstate_t	mbstate_t;
1646c354aaSschwarze #endif
1746c354aaSschwarze 
1846c354aaSschwarze #ifndef _SIZE_T_DEFINED_
1946c354aaSschwarze #define _SIZE_T_DEFINED_
2046c354aaSschwarze typedef __size_t	size_t;
2146c354aaSschwarze #endif
2246c354aaSschwarze 
2346c354aaSschwarze #define __STDC_UTF_16__	1
2446c354aaSschwarze #define __STDC_UTF_32__	1
2546c354aaSschwarze 
26*ee970480Sschwarze #if !defined(__cplusplus) || __cplusplus < 201103L
2746c354aaSschwarze typedef __uint16_t	char16_t;
2846c354aaSschwarze typedef __uint32_t	char32_t;
29*ee970480Sschwarze #endif
3046c354aaSschwarze 
3146c354aaSschwarze __BEGIN_DECLS
3246c354aaSschwarze size_t	mbrtoc16(char16_t * __restrict, const char * __restrict, size_t,
3346c354aaSschwarze 	    mbstate_t * __restrict);
3446c354aaSschwarze size_t	c16rtomb(char * __restrict, char16_t, mbstate_t * __restrict);
3546c354aaSschwarze size_t	mbrtoc32(char32_t * __restrict, const char * __restrict, size_t,
3646c354aaSschwarze 	    mbstate_t * __restrict);
3746c354aaSschwarze size_t	c32rtomb(char * __restrict, char32_t, mbstate_t * __restrict);
3846c354aaSschwarze __END_DECLS
3946c354aaSschwarze 
4046c354aaSschwarze #endif /* !_UCHAR_H_ */
41