mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-29 23:10:11 +01:00
glsl: add new glsl_strtof() function
Note, we could alternately implement this in terms of glsl_strtod() with a (float) cast. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
6102b9d441
commit
811b5b4b39
2 changed files with 25 additions and 0 deletions
|
|
@ -55,3 +55,25 @@ glsl_strtod(const char *s, char **end)
|
|||
return strtod(s, end);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Wrapper around strtof which uses the "C" locale so the decimal
|
||||
* point is always '.'
|
||||
*/
|
||||
float
|
||||
glsl_strtof(const char *s, char **end)
|
||||
{
|
||||
#if defined(_GNU_SOURCE) && !defined(__CYGWIN__) && !defined(__FreeBSD__) && \
|
||||
!defined(__HAIKU__) && !defined(__UCLIBC__)
|
||||
static locale_t loc = NULL;
|
||||
if (!loc) {
|
||||
loc = newlocale(LC_CTYPE_MASK, "C", NULL);
|
||||
}
|
||||
return strtof_l(s, end, loc);
|
||||
#elif _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE
|
||||
return strtof(s, end);
|
||||
#else
|
||||
return (float) strtod(s, end);
|
||||
#endif
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,6 +34,9 @@ extern "C" {
|
|||
extern double
|
||||
glsl_strtod(const char *s, char **end);
|
||||
|
||||
extern float
|
||||
glsl_strtof(const char *s, char **end);
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue