2020-01-18 09:38:21 +01:00
|
|
|
/*
|
|
|
|
|
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
|
|
|
|
|
*
|
2021-04-22 01:24:48 -07:00
|
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
2020-01-18 09:38:21 +01:00
|
|
|
*/
|
|
|
|
|
|
2019-02-24 15:19:32 +01:00
|
|
|
#pragma once
|
|
|
|
|
|
2023-07-15 15:22:45 +02:00
|
|
|
// Includes essentially mandated by POSIX:
|
|
|
|
|
// https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/wchar.h.html
|
|
|
|
|
#include <ctype.h>
|
2021-12-19 21:14:23 +03:30
|
|
|
#include <stdarg.h>
|
2019-02-24 15:19:32 +01:00
|
|
|
#include <stddef.h>
|
2023-07-15 15:22:45 +02:00
|
|
|
#include <stdio.h>
|
|
|
|
|
#include <stdlib.h>
|
|
|
|
|
#include <string.h>
|
|
|
|
|
#include <time.h>
|
|
|
|
|
|
|
|
|
|
#include <bits/FILE.h>
|
|
|
|
|
#include <bits/wchar_size.h>
|
2019-05-28 11:53:16 +02:00
|
|
|
#include <sys/cdefs.h>
|
2019-02-24 15:19:32 +01:00
|
|
|
|
|
|
|
|
__BEGIN_DECLS
|
|
|
|
|
|
|
|
|
|
#ifndef WEOF
|
2022-03-10 18:13:30 +01:00
|
|
|
# define WEOF (0xffffffffu)
|
2019-02-24 15:19:32 +01:00
|
|
|
#endif
|
|
|
|
|
|
2023-04-28 22:55:59 +04:00
|
|
|
#ifdef __cplusplus
|
|
|
|
|
# define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS
|
|
|
|
|
#endif
|
|
|
|
|
|
2021-05-27 12:47:44 +02:00
|
|
|
typedef __WINT_TYPE__ wint_t;
|
2021-05-27 12:44:54 +02:00
|
|
|
typedef unsigned long int wctype_t;
|
2021-05-27 12:47:44 +02:00
|
|
|
|
2021-09-19 12:48:04 +02:00
|
|
|
// A zero-initialized mbstate_t struct must be a valid initial state.
|
2021-06-02 14:56:43 +02:00
|
|
|
typedef struct {
|
2021-06-05 12:44:01 +02:00
|
|
|
unsigned char bytes[4];
|
2021-09-19 13:31:16 +02:00
|
|
|
unsigned int stored_bytes;
|
2021-06-02 14:56:43 +02:00
|
|
|
} mbstate_t;
|
|
|
|
|
|
2021-09-18 08:47:41 +02:00
|
|
|
struct tm;
|
|
|
|
|
|
2022-04-01 20:58:27 +03:00
|
|
|
size_t wcslen(wchar_t const*);
|
|
|
|
|
wchar_t* wcscpy(wchar_t*, wchar_t const*);
|
|
|
|
|
wchar_t* wcsdup(wchar_t const*);
|
|
|
|
|
wchar_t* wcsncpy(wchar_t*, wchar_t const*, size_t);
|
|
|
|
|
__attribute__((warn_unused_result)) size_t wcslcpy(wchar_t*, wchar_t const*, size_t);
|
|
|
|
|
int wcscmp(wchar_t const*, wchar_t const*);
|
|
|
|
|
int wcsncmp(wchar_t const*, wchar_t const*, size_t);
|
|
|
|
|
wchar_t* wcschr(wchar_t const*, int);
|
|
|
|
|
wchar_t* wcsrchr(wchar_t const*, wchar_t);
|
|
|
|
|
wchar_t* wcscat(wchar_t*, wchar_t const*);
|
|
|
|
|
wchar_t* wcsncat(wchar_t*, wchar_t const*, size_t);
|
|
|
|
|
wchar_t* wcstok(wchar_t*, wchar_t const*, wchar_t**);
|
|
|
|
|
long wcstol(wchar_t const*, wchar_t**, int);
|
|
|
|
|
long long wcstoll(wchar_t const*, wchar_t**, int);
|
2021-05-27 12:47:44 +02:00
|
|
|
wint_t btowc(int c);
|
2022-04-01 20:58:27 +03:00
|
|
|
size_t mbrtowc(wchar_t*, char const*, size_t, mbstate_t*);
|
|
|
|
|
size_t mbrlen(char const*, size_t, mbstate_t*);
|
2021-06-02 20:54:31 +02:00
|
|
|
size_t wcrtomb(char*, wchar_t, mbstate_t*);
|
2022-04-01 20:58:27 +03:00
|
|
|
int wcscoll(wchar_t const*, wchar_t const*);
|
|
|
|
|
size_t wcsxfrm(wchar_t*, wchar_t const*, size_t);
|
2021-06-02 20:54:31 +02:00
|
|
|
int wctob(wint_t);
|
2022-04-01 20:58:27 +03:00
|
|
|
int mbsinit(mbstate_t const*);
|
|
|
|
|
wchar_t* wcspbrk(wchar_t const*, wchar_t const*);
|
|
|
|
|
wchar_t* wcsstr(wchar_t const*, wchar_t const*);
|
|
|
|
|
wchar_t* wmemchr(wchar_t const*, wchar_t, size_t);
|
|
|
|
|
wchar_t* wmemcpy(wchar_t*, wchar_t const*, size_t);
|
2021-09-22 10:22:24 +00:00
|
|
|
wchar_t* wmemset(wchar_t*, wchar_t, size_t);
|
2022-04-01 20:58:27 +03:00
|
|
|
wchar_t* wmemmove(wchar_t*, wchar_t const*, size_t);
|
|
|
|
|
unsigned long wcstoul(wchar_t const*, wchar_t**, int);
|
|
|
|
|
unsigned long long wcstoull(wchar_t const*, wchar_t**, int);
|
|
|
|
|
float wcstof(wchar_t const*, wchar_t**);
|
|
|
|
|
double wcstod(wchar_t const*, wchar_t**);
|
|
|
|
|
long double wcstold(wchar_t const*, wchar_t**);
|
2021-09-27 01:15:34 +02:00
|
|
|
int wcwidth(wchar_t);
|
2022-06-29 05:01:14 +02:00
|
|
|
int wcswidth(wchar_t const*, size_t);
|
2022-04-01 20:58:27 +03:00
|
|
|
size_t wcsrtombs(char*, wchar_t const**, size_t, mbstate_t*);
|
|
|
|
|
size_t mbsrtowcs(wchar_t*, char const**, size_t, mbstate_t*);
|
|
|
|
|
int wmemcmp(wchar_t const*, wchar_t const*, size_t);
|
|
|
|
|
size_t wcsnrtombs(char*, wchar_t const**, size_t, size_t, mbstate_t*);
|
|
|
|
|
size_t mbsnrtowcs(wchar_t*, char const**, size_t, size_t, mbstate_t*);
|
|
|
|
|
size_t wcscspn(wchar_t const* wcs, wchar_t const* reject);
|
|
|
|
|
size_t wcsspn(wchar_t const* wcs, wchar_t const* accept);
|
2019-10-12 22:47:25 -03:00
|
|
|
|
2021-12-19 21:14:23 +03:30
|
|
|
wint_t fgetwc(FILE* stream);
|
|
|
|
|
wint_t getwc(FILE* stream);
|
2021-12-19 21:18:58 +03:30
|
|
|
wint_t getwchar(void);
|
2021-12-20 16:08:03 +03:30
|
|
|
wint_t fputwc(wchar_t wc, FILE* stream);
|
|
|
|
|
wint_t putwc(wchar_t wc, FILE* stream);
|
|
|
|
|
wint_t putwchar(wchar_t wc);
|
2021-12-19 22:22:31 +03:30
|
|
|
wchar_t* fgetws(wchar_t* __restrict ws, int n, FILE* __restrict stream);
|
2022-04-01 20:58:27 +03:00
|
|
|
int fputws(wchar_t const* __restrict ws, FILE* __restrict stream);
|
2021-12-19 23:29:21 +03:30
|
|
|
wint_t ungetwc(wint_t wc, FILE* stream);
|
2021-12-19 21:59:27 +03:30
|
|
|
int fwide(FILE* stream, int mode);
|
2021-12-19 21:14:23 +03:30
|
|
|
|
2022-04-01 20:58:27 +03:00
|
|
|
int wprintf(wchar_t const* __restrict format, ...);
|
|
|
|
|
int fwprintf(FILE* __restrict stream, wchar_t const* __restrict format, ...);
|
|
|
|
|
int swprintf(wchar_t* __restrict wcs, size_t maxlen, wchar_t const* __restrict format, ...);
|
|
|
|
|
int vwprintf(wchar_t const* __restrict format, va_list args);
|
|
|
|
|
int vfwprintf(FILE* __restrict stream, wchar_t const* __restrict format, va_list args);
|
|
|
|
|
int vswprintf(wchar_t* __restrict wcs, size_t maxlen, wchar_t const* __restrict format, va_list args);
|
2021-12-19 22:58:28 +03:30
|
|
|
|
2022-04-01 20:58:27 +03:00
|
|
|
int fwscanf(FILE* __restrict stream, wchar_t const* __restrict format, ...);
|
|
|
|
|
int swscanf(wchar_t const* __restrict ws, wchar_t const* __restrict format, ...);
|
|
|
|
|
int wscanf(wchar_t const* __restrict format, ...);
|
|
|
|
|
int vfwscanf(FILE* __restrict stream, wchar_t const* __restrict format, va_list arg);
|
|
|
|
|
int vswscanf(wchar_t const* __restrict ws, wchar_t const* __restrict format, va_list arg);
|
|
|
|
|
int vwscanf(wchar_t const* __restrict format, va_list arg);
|
2021-12-19 23:03:18 +03:30
|
|
|
|
2022-04-01 20:58:27 +03:00
|
|
|
size_t wcsftime(wchar_t* __restrict wcs, size_t maxsize, wchar_t const* __restrict format, const struct tm* __restrict timeptr);
|
2021-12-19 23:31:35 +03:30
|
|
|
|
2019-02-24 15:19:32 +01:00
|
|
|
__END_DECLS
|