haiku/headers/posix/uchar.h
2023-04-08 12:30:14 -04:00

55 lines
868 B
C

/*
* Copyright 2018-2020 Haiku, Inc. All Right Reserved
* Distributed under the terms of MIT license.
*/
#ifndef _UCHAR_H
#define _UCHAR_H
#include <stdint.h>
#include <wchar.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef uint_least32_t char32_t;
typedef uint_least16_t char16_t;
#define __STD_UTF_32__ 1
#define __STD_UTF_16__ 1
// TODO implement mbrtoc16
static __inline size_t
c16rtomb(char *dest, char32_t wc, mbstate_t *mbState)
{
wchar_t tmp = (wchar_t)wc;
return wcrtomb(dest, tmp, mbState);
}
static __inline size_t
mbrtoc32(char32_t *dest, const char *src, size_t srcLength, mbstate_t *mbState)
{
return mbrtowc((wchar_t*)dest, src, srcLength, mbState);
}
static __inline size_t
c32rtomb(char *dest, char32_t wc, mbstate_t *mbState)
{
return wcrtomb(dest, (wchar_t)wc, mbState);
}
#ifdef __cplusplus
}
#endif
#endif /* _UCHAR_H */