• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 #include <windows.h>
2 #include <stdio.h>
3 
4 float __cdecl
5 __mingw_wcstof (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr);
6 
7 float __cdecl
__mingw_wcstof(const wchar_t * __restrict__ _Str,wchar_t ** __restrict__ _EndPtr)8 __mingw_wcstof (const wchar_t * __restrict__ _Str, wchar_t ** __restrict__ _EndPtr)
9 {
10   float r;
11   char *n, *ep = NULL;
12   size_t l, l2;
13 
14   l = WideCharToMultiByte(CP_UTF8, 0, _Str, -1, NULL, 0, NULL, NULL);
15   n = alloca (l + 1);
16   if (l != 0) WideCharToMultiByte (CP_UTF8, 0, _Str, -1, n, l, NULL, NULL);
17   n[l] = 0;
18   r = __mingw_strtof (n, &ep);
19   if (ep != NULL)
20   {
21     *ep = 0;
22     l2 = MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, n, -1, NULL, 0);
23     if (l2 > 0)
24       l2 -= 1; /* Remove zero terminator from length.  */
25     if (_EndPtr) *_EndPtr = (wchar_t *) &_Str[l2];
26   }
27   else
28    if (_EndPtr) *_EndPtr = NULL;
29   return r;
30 }
31 
32