]> pd.if.org Git - pdclib.old/commitdiff
PDCLIB-2: Complete wchar.h + manual page. This header is a monster, implies numerous...
authorOwen Shepherd <owen.shepherd@e43.eu>
Wed, 29 Aug 2012 23:29:27 +0000 (00:29 +0100)
committerOwen Shepherd <owen.shepherd@e43.eu>
Wed, 29 Aug 2012 23:29:27 +0000 (00:29 +0100)
includes/stdint.h
includes/wchar.h
man3/wchar.h.3 [new file with mode: 0644]

index 2a7683672cd5ffe3627dd9a9fef163c6f50bcdf0..8699a2eed8f7eae1e7aae4f8c89395a32f75a00f 100644 (file)
@@ -153,8 +153,11 @@ typedef _PDCLIB_uintmax_t uintmax_t;
 
 #define SIZE_MAX _PDCLIB_SIZE_MAX
 
+#ifndef _PDCLIB_WCHAR_MIN_MAX_DEFINED
+#define _PDCLIB_WCHAR_MIN_MAX_DEFINED
 #define WCHAR_MIN _PDCLIB_WCHAR_MIN
 #define WCHAR_MAX _PDCLIB_WCHAR_MAX
+#endif
 
 #define WINT_MIN _PDCLIB_WINT_MIN
 #define WINT_MAX _PDCLIB_WINT_MAX
index 59955b3d80b7a3cb5fa0d6d72123d8d9ecc4cf50..a98abdbdea20ba7aa1f2d5397c304c44ca68516b 100644 (file)
@@ -21,15 +21,106 @@ typedef _PDCLIB_size_t size_t;
 #ifndef __cplusplus\r
 #ifndef _PDCLIB_WCHAR_T_DEFINED\r
 #define _PDCLIB_WCHAR_T_DEFINED _PDCLIB_WCHAR_T_DEFINED\r
-typedef _PDCLIB_wchar_t   wchar_t;\r
+typedef _PDCLIB_wchar_t wchar_t;\r
 #endif\r
 #endif\r
 \r
-wchar_t *wcschr( const wchar_t * haystack, wchar_t needle ) _PDCLIB_nothrow;\r
-wchar_t *wcsrchr( const wchar_t * haystack, wchar_t needle ) _PDCLIB_nothrow;\r
-size_t   wcslen( const wchar_t * string) _PDCLIB_nothrow;\r
-wchar_t *wcscpy( wchar_t * _PDCLIB_restrict dest, \r
-                 const wchar_t * _PDCLIB_restrict src) _PDCLIB_nothrow;\r
+#ifndef _PDCLIB_WINT_T_DEFINED\r
+#define _PDCLIB_WINT_T_DEFINED _PDCLIB_WINT_T_DEFINED\r
+typedef _PDCLIB_wint_t wint_t;\r
+#endif\r
+\r
+#ifndef _PDCLIB_MBSTATE_T_DEFINED\r
+#define _PDCLIB_MBSTATE_T_DEFINED _PDCLIB_MBSTATE_T_DEFINED\r
+typedef _PDCLIB_mbstate_t mbstate_t;\r
+#endif\r
+\r
+struct tm;\r
+\r
+#ifndef _PDCLIB_NULL_DEFINED\r
+#define _PDCLIB_NULL_DEFINED _PDCLIB_NULL_DEFINED\r
+#define NULL _PDCLIB_NULL\r
+#endif\r
+\r
+#ifndef _PDCLIB_WCHAR_MIN_MAX_DEFINED\r
+#define _PDCLIB_WCHAR_MIN_MAX_DEFINED\r
+#define WCHAR_MIN _PDCLIB_WCHAR_MIN\r
+#define WCHAR_MAX _PDCLIB_WCHAR_MAX\r
+#endif\r
+\r
+#define WEOF ((wint_t) -1)\r
+\r
+/* Wide character string handling */\r
+wchar_t *wcscpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2);\r
+wchar_t *wcsncpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
+wchar_t *wmemcpy(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
+wchar_t *wmemmove(wchar_t *s1, const wchar_t *s2, size_t n);\r
+wchar_t *wcscat(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2);\r
+wchar_t *wcsncat(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
+int wcscmp(const wchar_t *s1, const wchar_t *s2);\r
+int wcscoll(const wchar_t *s1, const wchar_t *s2);\r
+int wcsncmp(const wchar_t *s1, const wchar_t *s2, size_t n);\r
+size_t wcsxfrm(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, size_t n);\r
+int wmemcmp(const wchar_t *s1, const wchar_t *s2, size_t n);\r
+wchar_t *wcschr(const wchar_t *s, wchar_t c);\r
+size_t wcscspn(const wchar_t *s1, const wchar_t *s2);\r
+wchar_t *wcspbrk(const wchar_t *s1, const wchar_t *s2);\r
+wchar_t *wcsrchr(const wchar_t *s, wchar_t c);\r
+size_t wcsspn(const wchar_t *s1, const wchar_t *s2);\r
+wchar_t *wcsstr(const wchar_t *s1, const wchar_t *s2);\r
+wchar_t *wcstok(wchar_t *_PDCLIB_restrict s1, const wchar_t *_PDCLIB_restrict s2, wchar_t **_PDCLIB_restrict ptr);\r
+wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n); \r
+size_t wcslen(const wchar_t *s);\r
+wchar_t *wmemset(wchar_t *s, wchar_t c, size_t n);\r
+\r
+#if 0\r
+size_t wcsftime(wchar_t *_PDCLIB_restrict s, size_t maxsize, const wchar_t *_PDCLIB_restrict format, const struct tm *_PDCLIB_restrict timeptr);\r
+#endif\r
+\r
+/* Wide character I/O */\r
+int fwprintf(FILE *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...);\r
+int fwscanf(FILE *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, ...);\r
+int swprintf(wchar_t *_PDCLIB_restrict s, size_t n, const wchar_t *_PDCLIB_restrict format, ...);\r
+int swscanf(const wchar_t *_PDCLIB_restrict s, const wchar_t *_PDCLIB_restrict format, ...);\r
+int vfwprintf(FILE *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, va_list arg);\r
+int vfwscanf(FILE *_PDCLIB_restrict stream, const wchar_t *_PDCLIB_restrict format, va_list arg);\r
+int vswprintf(wchar_t *_PDCLIB_restrict s, size_t n, const wchar_t *_PDCLIB_restrict format, va_list arg);\r
+int vswscanf(const wchar_t *_PDCLIB_restrict s, const wchar_t *_PDCLIB_restrict format, va_list arg);\r
+int vwprintf(const wchar_t *_PDCLIB_restrict format, va_list arg);\r
+int vwscanf(const wchar_t *_PDCLIB_restrict format, va_list arg);\r
+int wprintf(const wchar_t *_PDCLIB_restrict format, ...);\r
+int wscanf(const wchar_t *_PDCLIB_restrict format, ...);\r
+wint_t fgetwc(FILE *stream);\r
+wchar_t *fgetws(wchar_t *_PDCLIB_restrict s, int n, FILE *_PDCLIB_restrict stream);\r
+wint_t fputwc(wchar_t c, FILE *stream);\r
+int fputws(const wchar_t *_PDCLIB_restrict s, FILE *_PDCLIB_restrict stream);\r
+int fwide(FILE *stream, int mode);\r
+wint_t getwc(FILE *stream);\r
+wint_t getwchar(void);\r
+wint_t putwc(wchar_t c, FILE *stream);\r
+wint_t putwchar(wchar_t c);\r
+wint_t ungetwc(wint_t c, FILE *stream);\r
+\r
+/* Wide character <-> Numeric conversions */\r
+#if 0\r
+double wcstod(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr);\r
+float wcstof(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr);\r
+long double wcstold(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr);\r
+#endif\r
+long int wcstol(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
+long long int wcstoll(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
+unsigned long int wcstoul(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
+unsigned long long int wcstoull(const wchar_t *_PDCLIB_restrict nptr, wchar_t **_PDCLIB_restrict endptr, int base);\r
+\r
+/* Character set conversion */\r
+wint_t btowc(int c);\r
+int wctob(wint_t c);\r
+int mbsinit(const mbstate_t *ps);\r
+size_t mbrlen(const char *_PDCLIB_restrict s, size_t n, mbstate_t *_PDCLIB_restrict ps);\r
+size_t mbrtowc(wchar_t *_PDCLIB_restrict pwc, const char *_PDCLIB_restrict s, size_t n, mbstate_t *_PDCLIB_restrict ps);\r
+size_t wcrtomb(char *_PDCLIB_restrict s, wchar_t wc, mbstate_t *_PDCLIB_restrict ps);\r
+size_t mbsrtowcs(wchar_t *_PDCLIB_restrict dst, const char **_PDCLIB_restrict src, size_t len, mbstate_t *_PDCLIB_restrict ps);\r
+size_t wcsrtombs(char *_PDCLIB_restrict dst, const wchar_t **_PDCLIB_restrict src, size_t len, mbstate_t *_PDCLIB_restrict ps);\r
 \r
 _PDCLIB_END_EXTERN_C\r
 #endif\r
diff --git a/man3/wchar.h.3 b/man3/wchar.h.3
new file mode 100644 (file)
index 0000000..0df246a
--- /dev/null
@@ -0,0 +1,254 @@
+.\" This file is part of the Public Domain C Library " "PDCLib).\r
+.\" Permission is granted to use" "modify" "and / or redistribute at will.\r
+.\"\r
+.Dd\r
+.Dt WCHAR.H 3\r
+.Os\r
+.\"\r
+.Sh NAME\r
+.Nm wchar.h\r
+.Nd wide character & wide character string manipulation\r
+.\"\r
+.Sh SYNOPSIS\r
+.In wchar.h\r
+.\"\r
+.Sh DESCRIPTION\r
+The\r
+.In wchar.h\r
+header provides functions for manipulating wide character strings" "for\r
+converting between wide characters and multibyte character sets" "for \r
+manipulating wide character strings" "and for wide character oriented input and \r
+output.\r
+.\"\r
+.Ss Types & Definitions\r
+The type\r
+.Vt size_t\r
+and macro\r
+.Dv NULL\r
+shall be defined as in\r
+.In stddef.h .\r
+.Pp\r
+The type\r
+.Vt wchar_t\r
+shall be defined as an integral type capable of representing any wide character\r
+in the implementation defined encoding. The type\r
+.Vt wint_t\r
+shall be defined as an integral type capable of representing any wide character\r
+in the implementation defined encoding" "plus the distinct value given by\r
+.Dv WEOF ,\r
+which evaluates to a constant expression of type\r
+.Vt wint_t\r
+which does not correspond to any character in the implementation defined \r
+character set. The macros \r
+.Dv WCHAR_MIN\r
+and\r
+.Dv WCHAR_MAX\r
+shall be defined as in\r
+.In stdint.h .\r
+.Pp\r
+The type\r
+.Vt mbstate_t\r
+shall be a complete non-array object type used for the storage of the state of\r
+a multibyte to wide character conversion.\r
+.Pp\r
+The type\r
+.Vt struct tm\r
+shall be defined as an incomplete type" "a full definition of wich can be found \r
+in\r
+.In time.h .\r
+.\"\r
+.Ss Wide Character String Handling Functions\r
+.Fn "wchar_t *wcscpy" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2"\r
+.br\r
+.Fn "wchar_t *wcsncpy" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2" "size_t n"\r
+.br\r
+.Fn "wchar_t *wmemcpy" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2" "size_t n"\r
+.br\r
+.Fn "wchar_t *wmemmove" "wchar_t *s1" "const wchar_t *s2" "size_t n"\r
+.br\r
+.Fn "wchar_t *wcscat" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2"\r
+.br\r
+.Fn "wchar_t *wcsncat" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2" "size_t n"\r
+.br\r
+.Fn "int wcscmp" "const wchar_t *s1" "const wchar_t *s2"\r
+.br\r
+.Fn "int wcscoll" "const wchar_t *s1" "const wchar_t *s2"\r
+.br\r
+.Fn "int wcsncmp" "const wchar_t *s1" "const wchar_t *s2" "size_t n"\r
+.br\r
+.Fn "size_t wcsxfrm" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2" "size_t n"\r
+.br\r
+.Fn "int wmemcmp" "const wchar_t *s1" "const wchar_t *s2" "size_t n"\r
+.br\r
+.Fn "wchar_t *wcschr" "const wchar_t *s" "wchar_t c"\r
+.br\r
+.Fn "size_t wcscspn" "const wchar_t *s1" "const wchar_t *s2"\r
+.br\r
+.Fn "wchar_t *wcspbrk" "const wchar_t *s1" "const wchar_t *s2"\r
+.br\r
+.Fn "wchar_t *wcsrchr" "const wchar_t *s" "wchar_t c"\r
+.br\r
+.Fn "size_t wcsspn" "const wchar_t *s1" "const wchar_t *s2"\r
+.br\r
+.Fn "wchar_t *wcsstr" "const wchar_t *s1" "const wchar_t *s2"\r
+.br\r
+.Fn "wchar_t *wcstok" "wchar_t *_PDCLIB_restrict s1" "const wchar_t *_PDCLIB_restrict s2" "wchar_t **_PDCLIB_restrict ptr"\r
+.br\r
+.Fn "wchar_t *wmemchr" "const wchar_t *s" "wchar_t c" "size_t n" \r
+.br\r
+.Fn "size_t wcslen" "const wchar_t *s"\r
+.br\r
+.Fn "wchar_t *wmemset" "wchar_t *s" "wchar_t c" "size_t n"\r
+.\"\r
+.Ss Wide Character String Formatting\r
+.Fn "int swprintf" "wchar_t *_PDCLIB_restrict s" "size_t n" "const wchar_t *_PDCLIB_restrict format" "..."\r
+.br\r
+.Fn "int swscanf" "const wchar_t *_PDCLIB_restrict s" "const wchar_t *_PDCLIB_restrict format" "..."\r
+.br\r
+.Fn "int vswprintf" "wchar_t *_PDCLIB_restrict s" "size_t n" "const wchar_t *_PDCLIB_restrict format" "va_list arg"\r
+.br\r
+.Fn "int vswscanf" "const wchar_t *_PDCLIB_restrict s" "const wchar_t *_PDCLIB_restrict format" "va_list arg"\r
+.br\r
+.Fn "size_t wcsftime" "wchar_t *_PDCLIB_restrict s" "size_t maxsize" "const wchar_t *_PDCLIB_restrict format" "const struct tm *_PDCLIB_restrict timeptr"\r
+.\"\r
+.Ss Wide Character Input and Output\r
+.Fn "int fwprintf" "FILE *_PDCLIB_restrict stream" "const wchar_t *_PDCLIB_restrict format" "..."\r
+.br\r
+.Fn "int fwscanf" "FILE *_PDCLIB_restrict stream" "const wchar_t *_PDCLIB_restrict format" "..."\r
+.br\r
+.Fn "int vfwprintf" "FILE *_PDCLIB_restrict stream" "const wchar_t *_PDCLIB_restrict format" "va_list arg"\r
+.br\r
+.Fn "int vfwscanf" "FILE *_PDCLIB_restrict stream" "const wchar_t *_PDCLIB_restrict format" "va_list arg"\r
+.br\r
+.Fn "int vwprintf" "const wchar_t *_PDCLIB_restrict format" "va_list arg"\r
+.br\r
+.Fn "int vwscanf" "const wchar_t *_PDCLIB_restrict format" "va_list arg"\r
+.br\r
+.Fn "int wprintf" "const wchar_t *_PDCLIB_restrict format" "..."\r
+.br\r
+.Fn "int wscanf" "const wchar_t *_PDCLIB_restrict format" "..."\r
+.br\r
+.Fn "wint_t fgetwc" "FILE *stream"\r
+.br\r
+.Fn "wchar_t *fgetws" "wchar_t *_PDCLIB_restrict s" "int n" "FILE *_PDCLIB_restrict stream"\r
+.br\r
+.Fn "wint_t fputwc" "wchar_t c" "FILE *stream"\r
+.br\r
+.Fn "int fputws" "const wchar_t *_PDCLIB_restrict s" "FILE *_PDCLIB_restrict stream"\r
+.br\r
+.Fn "int fwide" "FILE *stream" "int mode"\r
+.br\r
+.Fn "wint_t getwc" "FILE *stream"\r
+.br\r
+.Fn "wint_t getwchar" "void"\r
+.br\r
+.Fn "wint_t putwc" "wchar_t c" "FILE *stream"\r
+.br\r
+.Fn "wint_t putwchar" "wchar_t c"\r
+.br\r
+.Fn "wint_t ungetwc" "wint_t c" "FILE *stream"\r
+.\"\r
+.Ss Wide Character String Parsing\r
+.Fn "double wcstod" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr"\r
+.br\r
+.Fn "float wcstof" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr"\r
+.br\r
+.Fn "long double wcstold" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr"\r
+.br\r
+.Fn "long int wcstol" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr" "int base"\r
+.br\r
+.Fn "long long int wcstoll" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr" "int base"\r
+.br\r
+.Fn "unsigned long int wcstoul" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr" "int base"\r
+.br\r
+.Fn "unsigned long long int wcstoull" "const wchar_t *_PDCLIB_restrict nptr" "wchar_t **_PDCLIB_restrict endptr" "int base"\r
+.\"\r
+.Ss Character Set Conversion\r
+.Fn "wint_t btowc" "int c"\r
+.br\r
+.Fn "int wctob" "wint_t c"\r
+.br\r
+.Fn "int mbsinit" "const mbstate_t *ps"\r
+.br\r
+.Fn "size_t mbrlen" "const char *_PDCLIB_restrict s" "size_t n" "mbstate_t *_PDCLIB_restrict ps"\r
+.br\r
+.Fn "size_t mbrtowc" "wchar_t *_PDCLIB_restrict pwc" "const char *_PDCLIB_restrict s" "size_t n" "mbstate_t *_PDCLIB_restrict ps"\r
+.br\r
+.Fn "size_t wcrtomb" "char *_PDCLIB_restrict s" "wchar_t wc" "mbstate_t *_PDCLIB_restrict ps"\r
+.br\r
+.Fn "size_t mbsrtowcs" "wchar_t *_PDCLIB_restrict dst" "const char **_PDCLIB_restrict src" "size_t len" "mbstate_t *_PDCLIB_restrict ps"\r
+.br\r
+.Fn "size_t wcsrtombs" "char *_PDCLIB_restrict dst" "const wchar_t **_PDCLIB_restrict src" "size_t len" "mbstate_t *_PDCLIB_restrict ps"\r
+.\"\r
+.Sh SEE ALSO\r
+.Xr string.h 3\r
+.Xr uchar.h 3\r
+.Xr wcscpy 3\r
+.Xr wcsncpy 3\r
+.Xr wmemcpy 3\r
+.Xr wmemmove 3\r
+.Xr wcscat 3\r
+.Xr wcsncat 3\r
+.Xr wcscmp 3\r
+.Xr wcscoll 3\r
+.Xr wcsncmp 3\r
+.Xr wcsxfrm 3\r
+.Xr wmemcmp 3\r
+.Xr wcschr 3\r
+.Xr wcscspn 3\r
+.Xr wcspbrk 3\r
+.Xr wcsrchr 3\r
+.Xr wcsspn 3\r
+.Xr wcsstr 3\r
+.Xr wcstok 3\r
+.Xr wmemchr 3\r
+.Xr wcslen 3\r
+.Xr wmemset 3\r
+.\"\r
+.Xr swprintf 3\r
+.Xr swscanf 3\r
+.Xr vswprintf 3\r
+.Xr vswscanf 3\r
+.Xr wcsftime 3\r
+.\"\r
+.Xr fwprintf 3\r
+.Xr fwscanf 3\r
+.Xr vfwprintf 3\r
+.Xr vfwscanf 3\r
+.Xr vwprintf 3\r
+.Xr vwscanf 3\r
+.Xr wprintf 3\r
+.Xr wscanf 3\r
+.Xr fgetwc 3\r
+.Xr fgetws 3\r
+.Xr fputwc 3\r
+.Xr fputws 3\r
+.Xr fwide 3\r
+.Xr getwc 3\r
+.Xr getwchar 3\r
+.Xr putwc 3\r
+.Xr putwchar 3\r
+.Xr ungetwc 3\r
+.\"\r
+.Xr wcstod 3\r
+.Xr wcstof 3\r
+.Xr wcstold 3\r
+.Xr wcstol 3\r
+.Xr wcstoll 3\r
+.Xr wcstoul 3\r
+.Xr wcstoull 3\r
+.\"\r
+.Xr btowc 3\r
+.Xr wctomb 3\r
+.Xr mbsinit 3\r
+.Xr mbrlen 3\r
+.Xr mbrtowc 3\r
+.Xr wcrtomb 3\r
+.Xr mbsrtowcs 3\r
+.Xr wcsrtombs 3\r
+.\"\r
+.Sh STANDARDS\r
+Conforming to\r
+.St -isoC-amd1 ,\r
+.St -isoC-99 and\r
+.St -isoC-2011 .
\ No newline at end of file