LibC: Implement wsctoT functions

This commit is contained in:
2026-07-04 02:39:50 +03:00
parent 122c325a5b
commit 0d8d731d91

View File

@@ -5,6 +5,8 @@
#include <locale.h> #include <locale.h>
#include <wchar.h> #include <wchar.h>
#include <bits/strtoT.hpp>
wint_t btowc(int c) wint_t btowc(int c)
{ {
if (c == 0 || c > 0x7F) if (c == 0 || c > 0x7F)
@@ -31,8 +33,6 @@ int mbsinit(const mbstate_t* ps)
} }
wchar_t* wcstok(wchar_t* __restrict, const wchar_t* __restrict, wchar_t** __restrict) { ASSERT_NOT_REACHED(); } wchar_t* wcstok(wchar_t* __restrict, const wchar_t* __restrict, wchar_t** __restrict) { ASSERT_NOT_REACHED(); }
long wcstol(const wchar_t* __restrict, wchar_t** __restrict, int) { ASSERT_NOT_REACHED(); }
unsigned long wcstoul(const wchar_t* __restrict, wchar_t** __restrict, int) { ASSERT_NOT_REACHED(); }
int swprintf(wchar_t* __restrict, size_t, const wchar_t* __restrict, ...) { ASSERT_NOT_REACHED(); } int swprintf(wchar_t* __restrict, size_t, const wchar_t* __restrict, ...) { ASSERT_NOT_REACHED(); }
size_t wcsrtombs(char* __restrict, const wchar_t** __restrict, size_t, mbstate_t* __restrict) { ASSERT_NOT_REACHED(); } size_t wcsrtombs(char* __restrict, const wchar_t** __restrict, size_t, mbstate_t* __restrict) { ASSERT_NOT_REACHED(); }
@@ -354,6 +354,41 @@ wchar_t* wmemset(wchar_t* ws, wchar_t wc, size_t n)
return ws; return ws;
} }
float wcstof(const wchar_t* __restrict nptr, wchar_t** __restrict endptr)
{
return strtoT<float>(nptr, endptr, errno);
}
double wcstod(const wchar_t* __restrict nptr, wchar_t** __restrict endptr)
{
return strtoT<double>(nptr, endptr, errno);
}
long double wcstold(const wchar_t* __restrict nptr, wchar_t** __restrict endptr)
{
return strtoT<long double>(nptr, endptr, errno);
}
long wcstol(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base)
{
return strtoT<long>(nptr, endptr, base, errno);
}
long long wcstoll(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base)
{
return strtoT<long long>(nptr, endptr, base, errno);
}
unsigned long wcstoul(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base)
{
return strtoT<unsigned long>(nptr, endptr, base, errno);
}
unsigned long long wcstoull(const wchar_t* __restrict nptr, wchar_t** __restrict endptr, int base)
{
return strtoT<unsigned long long>(nptr, endptr, base, errno);
}
// FIXME: actually support multibyte :D // FIXME: actually support multibyte :D
wint_t towlower(wint_t wc) wint_t towlower(wint_t wc)