]> pd.if.org Git - pdclib/blob - includes/uchar.h
PDCLib includes with quotes, not <>.
[pdclib] / includes / uchar.h
1 /* Unicode utilities <uchar.h>
2
3  This file is part of the Public Domain C Library (PDCLib).
4  Permission is granted to use, modify, and / or redistribute at will.
5 */
6
7 #ifndef _PDCLIB_UCHAR_H
8 #define _PDCLIB_UCHAR_H _PDCLIB_UCHAR_H
9 #include "_PDCLIB_int.h"
10
11 #ifdef __cplusplus
12 extern "C" {
13 #endif
14
15 #ifndef _PDCLIB_SIZE_T_DEFINED
16 #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED
17 typedef _PDCLIB_size_t size_t;
18 #endif
19
20 #ifndef _PDCLIB_MBSTATE_T_DEFINED
21 #define _PDCLIB_MBSTATE_T_DEFINED _PDCLIB_MBSTATE_T_DEFINED
22 typedef _PDCLIB_mbstate_t mbstate_t;
23 #endif
24
25 #ifndef __cplusplus
26
27 /* These are built-in types in C++ */
28
29 #ifndef _PDCLIB_CHAR16_T_DEFINED
30 #define _PDCLIB_CHAR16_T_DEFINED _PDCLIB_CHAR16_T_DEFINED
31 typedef _PDCLIB_uint_least16_t char16_t;
32 #endif
33
34 #ifndef _PDCLIB_CHAR32_T_DEFINED
35 #define _PDCLIB_CHAR32_T_DEFINED _PDCLIB_CHAR32_T_DEFINED
36 typedef _PDCLIB_uint_least32_t char32_t;
37 #endif
38
39 #endif
40
41 size_t mbrtoc16( char16_t * _PDCLIB_restrict pc16, const char * _PDCLIB_restrict s, size_t n, mbstate_t * _PDCLIB_restrict ps );
42
43 size_t c16rtomb( char * _PDCLIB_restrict s, char16_t c16, mbstate_t * _PDCLIB_restrict ps );
44
45 size_t mbrtoc32( char32_t * _PDCLIB_restrict pc32, const char * _PDCLIB_restrict s, size_t n, mbstate_t * _PDCLIB_restrict ps);
46
47 size_t c32rtomb( char * _PDCLIB_restrict s, char32_t c32, mbstate_t * _PDCLIB_restrict ps);
48
49 #if defined(_PDCLIB_EXTENSIONS)
50
51 /* Analogous to strlen() / wcslen() */
52
53 size_t _PDCLIB_c16slen( const char16_t * str );
54
55 size_t _PDCLIB_c32slen( const char32_t * str );
56
57 /* String generalizations of the above functions */
58
59 size_t _PDCLIB_mbsrtoc16s( char16_t * _PDCLIB_restrict dst, const char * * _PDCLIB_restrict src, size_t len, mbstate_t * _PDCLIB_restrict ps );
60
61 size_t _PDCLIB_mbsrtoc32s( char32_t * _PDCLIB_restrict dst, const char * * _PDCLIB_restrict src, size_t len, mbstate_t * _PDCLIB_restrict ps );
62
63 size_t _PDCLIB_c16srtombs( char * _PDCLIB_restrict dst, const char16_t * * _PDCLIB_restrict src, size_t len, mbstate_t * _PDCLIB_restrict ps );
64
65 size_t _PDCLIB_c32srtombs( char * _PDCLIB_restrict dst, const char32_t * * _PDCLIB_restrict src, size_t len, mbstate_t * _PDCLIB_restrict ps );
66 #endif
67
68 #endif