]> pd.if.org Git - pdclib.old/blob - includes/wchar.h
PDCLIB-2 PDCLIB-12: Move _PDCLIB_mbstate_t to _PDCLIB_encoding.h, the new home for...
[pdclib.old] / includes / wchar.h
1 /* 7. <wchar.h>\r
2 \r
3    This file is part of the Public Domain C Library (PDCLib).\r
4    Permission is granted to use, modify, and / or redistribute at will.\r
5 */\r
6 \r
7 \r
8 #ifndef _PDCLIB_WCHAR_H\r
9 #define _PDCLIB_WCHAR_H\r
10 #include <_PDCLIB_io.h>\r
11 #include <_PDCLIB_encoding.h>\r
12 _PDCLIB_BEGIN_EXTERN_C\r
13 /* This is VASTLY incomplete. Functions being implemented as required by other\r
14    portions of the library\r
15  */\r
16 \r
17 #ifndef _PDCLIB_SIZE_T_DEFINED\r
18 #define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED\r
19 typedef _PDCLIB_size_t size_t;\r
20 #endif\r
21 \r
22 #ifndef __cplusplus\r
23 #ifndef _PDCLIB_WCHAR_T_DEFINED\r
24 #define _PDCLIB_WCHAR_T_DEFINED _PDCLIB_WCHAR_T_DEFINED\r
25 typedef _PDCLIB_wchar_t wchar_t;\r
26 #endif\r
27 #endif\r
28 \r
29 #ifndef _PDCLIB_WINT_T_DEFINED\r
30 #define _PDCLIB_WINT_T_DEFINED _PDCLIB_WINT_T_DEFINED\r
31 typedef _PDCLIB_wint_t wint_t;\r
32 #endif\r
33 \r
34 #ifndef _PDCLIB_MBSTATE_T_DEFINED\r
35 #define _PDCLIB_MBSTATE_T_DEFINED _PDCLIB_MBSTATE_T_DEFINED\r
36 typedef _PDCLIB_mbstate_t mbstate_t;\r
37 #endif\r
38 \r
39 struct tm;\r
40 \r
41 #ifndef _PDCLIB_NULL_DEFINED\r
42 #define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED\r
43 #define NULL _PDCLIB_NULL\r
44 #endif\r
45 \r
46 #ifndef _PDCLIB_WCHAR_MIN_MAX_DEFINED\r
47 #define _PDCLIB_WCHAR_MIN_MAX_DEFINED\r
48 #define WCHAR_MIN _PDCLIB_WCHAR_MIN\r
49 #define WCHAR_MAX _PDCLIB_WCHAR_MAX\r
50 #endif\r
51 \r
52 #define WEOF ((wint_t) -1)\r
53 \r
54 /* Wide character string handling */\r
55 wchar_t *wcscpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2);\r
56 wchar_t *wcsncpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
57 wchar_t *wmemcpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
58 wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);\r
59 wchar_t *wcscat(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2);\r
60 wchar_t *wcsncat(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
61 int wcscmp(const wchar_t *s1, const wchar_t *s2);\r
62 int wcscoll(const wchar_t *s1, const wchar_t *s2);\r
63 int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n);\r
64 size_t wcsxfrm(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
65 int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n);\r
66 wchar_t *wcschr(const wchar_t *s, wchar_t c);\r
67 size_t wcscspn(const wchar_t *s1, const wchar_t *s2);\r
68 wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2);\r
69 wchar_t *wcsrchr(const wchar_t *s, wchar_t c);\r
70 size_t wcsspn(const wchar_t *s1, const wchar_t *s2);\r
71 wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);\r
72 wchar_t *wcstok(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, wchar_t **_PDCLIB_restrict ptr);\r
73 wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n); \r
74 size_t wcslen(const wchar_t *s);\r
75 wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n);\r
76 \r
77 #if 0\r
78 size_t wcsftime(wchar_t *_PDCLIB_restrict s, size_t maxsize, const wchar_t *_PDCLIB_restrict format, const struct tm *_PDCLIB_restrict timeptr);\r
79 #endif\r
80 \r
81 /* Wide character I/O */\r
82 int fwprintf(struct _PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...);\r
83 int fwscanf(struct _PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...);\r
84 int swprintf(wchar_t *_PDCLIB_restrict s, size_t n, const wchar_t *_PDCLIB_restrict format, ...);\r
85 int swscanf(const wchar_t *_PDCLIB_restrict s, const wchar_t *_PDCLIB_restrict format, ...);\r
86 int vfwprintf(struct _PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg);\r
87 int vfwscanf(struct _PDCLIB_file_t *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg);\r
88 int vswprintf(wchar_t *_PDCLIB_restrict s, size_t n, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg);\r
89 int vswscanf(const wchar_t *_PDCLIB_restrict s, const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg);\r
90 int vwprintf(const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg);\r
91 int vwscanf(const wchar_t *_PDCLIB_restrict format, _PDCLIB_va_list arg);\r
92 int wprintf(const wchar_t *_PDCLIB_restrict format, ...);\r
93 int wscanf(const wchar_t *_PDCLIB_restrict format, ...);\r
94 wint_t fgetwc(struct _PDCLIB_file_t *stream);\r
95 wchar_t *fgetws(wchar_t *_PDCLIB_restrict s, int n, struct _PDCLIB_file_t *_PDCLIB_restrict stream);\r
96 wint_t fputwc(wchar_t c, struct _PDCLIB_file_t *stream);\r
97 int fputws(const wchar_t *_PDCLIB_restrict s, struct _PDCLIB_file_t *_PDCLIB_restrict stream);\r
98 int fwide(struct _PDCLIB_file_t *stream, int mode);\r
99 wint_t getwc(struct _PDCLIB_file_t *stream);\r
100 wint_t getwchar(void);\r
101 wint_t putwc(wchar_t c, struct _PDCLIB_file_t *stream);\r
102 wint_t putwchar(wchar_t c);\r
103 wint_t ungetwc(wint_t c, struct _PDCLIB_file_t *stream);\r
104 \r
105 #if _PDCLIB_GNU_SOURCE\r
106 wint_t getwc_unlocked(struct _PDCLIB_file_t *stream);\r
107 wint_t getwchar_unlocked(void);\r
108 wint_t fgetwc_unlocked(struct _PDCLIB_file_t *stream);\r
109 wint_t fputwc_unlocked(wchar_t wc, struct _PDCLIB_file_t *stream);\r
110 wint_t putwc_unlocked(wchar_t wc, struct _PDCLIB_file_t *stream);\r
111 wint_t putwchar_unlocked(wchar_t wc);\r
112 wchar_t *fgetws_unlocked(wchar_t *ws, int n, struct _PDCLIB_file_t *stream);\r
113 int fputws_unlocked(const wchar_t *ws, struct _PDCLIB_file_t *stream);\r
114 #endif\r
115 \r
116 /* Wide character <-> Numeric conversions */\r
117 #if 0\r
118 double wcstod(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr);\r
119 float wcstof(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr);\r
120 long double wcstold(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr);\r
121 #endif\r
122 long int wcstol(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
123 long long int wcstoll(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
124 unsigned long int wcstoul(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
125 unsigned long long int wcstoull(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
126 \r
127 /* Character set conversion */\r
128 wint_t btowc(int c);\r
129 int wctob(wint_t c);\r
130 int mbsinit(const mbstate_t *ps);\r
131 size_t mbrlen(const char *_PDCLIB_restrict s, size_t n, mbstate_t *_PDCLIB_restrict ps);\r
132 size_t mbrtowc(wchar_t *_PDCLIB_restrict pwc, const char *_PDCLIB_restrict s, size_t n, mbstate_t *_PDCLIB_restrict ps);\r
133 size_t wcrtomb(char *_PDCLIB_restrict s, wchar_t wc, mbstate_t *_PDCLIB_restrict ps);\r
134 size_t mbsrtowcs(wchar_t *_PDCLIB_restrict dst, const char **_PDCLIB_restrict src, size_t len, mbstate_t *_PDCLIB_restrict ps);\r
135 size_t wcsrtombs(char *_PDCLIB_restrict dst, const wchar_t **_PDCLIB_restrict src, size_t len, mbstate_t *_PDCLIB_restrict ps);\r
136 \r
137 _PDCLIB_END_EXTERN_C\r
138 #endif\r