xref: /haiku/headers/posix/wchar.h (revision 03187b607b2b5eec7ee059f1ead09bdba14991fb)
1 /*
2  * Copyright 2008 Haiku Inc. All Rights Reserved.
3  * Distributed under the terms of the MIT License.
4  */
5 #ifndef _WCHAR_H
6 #define _WCHAR_H
7 
8 #include <stddef.h>
9 #include <stdio.h>
10 
11 /* stddef.h is not supposed to define wint_t, but gcc 2.95.3's one does.
12  * In all other cases we will do that. */
13 #ifndef _WINT_T
14 #define _WINT_T
15 
16 #ifndef __WINT_TYPE__
17 #define __WINT_TYPE__ unsigned int
18 #endif
19 
20 typedef __WINT_TYPE__ wint_t;
21 
22 #endif	/* _WINT_T */
23 
24 typedef int wctype_t;
25 
26 typedef struct {
27 	int		__count;
28 	wint_t	__value;
29 } mbstate_t;
30 
31 
32 #define WEOF		((wint_t)(-1))
33 
34 #define WCHAR_MIN	0x00000000UL
35 #define WCHAR_MAX	0x7FFFFFFFUL
36 
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 extern wint_t	btowc(int);
43 
44 extern wint_t	fgetwc(FILE *);
45 extern wchar_t	*fgetws(wchar_t *, int, FILE *);
46 extern wint_t	fputwc(wchar_t, FILE *);
47 extern int		fputws(const wchar_t *, FILE *);
48 extern int		fwide(FILE *, int);
49 extern int		fwprintf(FILE *, const wchar_t *, ...);
50 /*extern int		fwscanf(FILE *, const wchar_t *, ...);*/
51 extern wint_t	getwc(FILE *);
52 extern wint_t	getwchar(void);
53 
54 extern int		iswalnum(wint_t);
55 extern int		iswalpha(wint_t);
56 extern int		iswcntrl(wint_t);
57 extern int		iswctype(wint_t, wctype_t);
58 extern int		iswdigit(wint_t);
59 extern int		iswgraph(wint_t);
60 extern int		iswlower(wint_t);
61 extern int		iswprint(wint_t);
62 extern int		iswpunct(wint_t);
63 extern int		iswspace(wint_t);
64 extern int		iswupper(wint_t);
65 extern int		iswxdigit(wint_t);
66 
67 extern size_t 	mbrlen(const char *s, size_t n, mbstate_t *ps);
68 extern size_t 	mbrtowc(wchar_t *pwc, const char *s, size_t n, mbstate_t *ps);
69 extern int		mbsinit(const mbstate_t *);
70 extern size_t	mbsrtowcs(wchar_t *dst, const char **src, size_t len,
71 					mbstate_t *ps);
72 
73 extern wint_t	putwc(wchar_t, FILE *);
74 extern wint_t	putwchar(wchar_t);
75 
76 extern int		swprintf(wchar_t *, size_t, const wchar_t *, ...);
77 extern int		swscanf(const wchar_t *, const wchar_t *, ...);
78 
79 extern wint_t	towlower(wint_t);
80 extern wint_t	towupper(wint_t);
81 extern wint_t	ungetwc(wint_t, FILE *);
82 
83 extern int		vfwprintf(FILE *, const wchar_t *, va_list);
84 extern int		vfwscanf(FILE *, const wchar_t *, va_list);
85 extern int		vswprintf(wchar_t *, size_t, const wchar_t *, va_list);
86 extern int		vswscanf(const wchar_t *, const wchar_t *, va_list);
87 extern int		vwprintf(const wchar_t *, va_list);
88 extern int		vwscanf(const wchar_t *, va_list);
89 
90 extern size_t   wcrtomb(char *, wchar_t, mbstate_t *);
91 extern wchar_t	*wcscat(wchar_t *, const wchar_t *);
92 extern wchar_t	*wcschr(const wchar_t *, wchar_t);
93 extern int      wcscmp(const wchar_t *ws1, const wchar_t *ws2);
94 extern int      wcscoll(const wchar_t *ws1, const wchar_t *ws2);
95 extern wchar_t	*wcscpy(wchar_t *, const wchar_t *);
96 extern size_t	wcscspn(const wchar_t *, const wchar_t *);
97 extern size_t	wcsftime(wchar_t *, size_t, const wchar_t *,
98 					const struct tm *);
99 extern size_t	wcslen(const wchar_t *);
100 extern wchar_t 	*wcsncat(wchar_t *, const wchar_t *, size_t);
101 extern int		wcsncmp(const wchar_t *, const wchar_t *, size_t);
102 extern wchar_t	*wcsncpy(wchar_t *, const wchar_t *, size_t);
103 extern wchar_t	*wcspbrk(const wchar_t *, const wchar_t *);
104 extern wchar_t	*wcsrchr(const wchar_t *, wchar_t);
105 extern size_t   wcsrtombs(char *dst, const wchar_t **src, size_t len,
106 					mbstate_t *ps);
107 extern size_t	wcsspn(const wchar_t *, const wchar_t *);
108 extern wchar_t	*wcsstr(const wchar_t *, const wchar_t *);
109 extern double	wcstod(const wchar_t *, wchar_t **);
110 extern float	wcstof(const wchar_t *, wchar_t **);
111 extern wchar_t	*wcstok(wchar_t *, const wchar_t *, wchar_t **);
112 extern long int	wcstol(const wchar_t *, wchar_t **, int);
113 extern long double			wcstold(const wchar_t *, wchar_t **);
114 extern long long			wcstoll(const wchar_t *, wchar_t **, int);
115 extern unsigned long		wcstoul(const wchar_t *, wchar_t **, int);
116 extern unsigned long long	wcstoull(const wchar_t *, wchar_t **, int);
117 extern unsigned long int	wcstoul(const wchar_t *, wchar_t **, int);
118 extern wchar_t	*wcswcs(const wchar_t *, const wchar_t *);
119 extern int		wcswidth(const wchar_t *, size_t);
120 extern size_t	wcsxfrm(wchar_t *, const wchar_t *, size_t);
121 extern int		wctob(wint_t);
122 extern wctype_t	wctype(const char *);
123 extern int		wcwidth(wchar_t);
124 extern wchar_t	*wmemchr(const wchar_t *, wchar_t, size_t);
125 extern int		wmemcmp(const wchar_t *, const wchar_t *, size_t);
126 extern wchar_t	*wmemcpy(wchar_t *, const wchar_t *, size_t);
127 extern wchar_t	*wmemmove(wchar_t *, const wchar_t *, size_t);
128 extern wchar_t	*wmemset(wchar_t *, wchar_t, size_t);
129 extern int		wprintf(const wchar_t *, ...);
130 extern int		wscanf(const wchar_t *, ...);
131 
132 #ifdef __cplusplus
133 }
134 #endif
135 
136 #endif /* _WCHAR_H */
137