use restrict everywhere it's required by c99 and/or posix 2008

to deal with the fact that the public headers may be used with pre-c99
compilers, __restrict is used in place of restrict, and defined
appropriately for any supported compiler. we also avoid the form
[restrict] since older versions of gcc rejected it due to a bug in the
original c99 standard, and instead use the form *restrict.
This commit is contained in:
Rich Felker
2012-09-06 22:44:55 -04:00
parent bac03cdde1
commit 400c5e5c83
192 changed files with 552 additions and 382 deletions

View File

@@ -16,17 +16,17 @@ static long double strtox(const char *s, char **p, int prec)
return y;
}
float strtof(const char *s, char **p)
float strtof(const char *restrict s, char **restrict p)
{
return strtox(s, p, 0);
}
double strtod(const char *s, char **p)
double strtod(const char *restrict s, char **restrict p)
{
return strtox(s, p, 1);
}
long double strtold(const char *s, char **p)
long double strtold(const char *restrict s, char **restrict p)
{
return strtox(s, p, 2);
}

View File

@@ -22,32 +22,32 @@ static unsigned long long strtox(const char *s, char **p, int base, unsigned lon
return y;
}
unsigned long long strtoull(const char *s, char **p, int base)
unsigned long long strtoull(const char *restrict s, char **restrict p, int base)
{
return strtox(s, p, base, ULLONG_MAX);
}
long long strtoll(const char *s, char **p, int base)
long long strtoll(const char *restrict s, char **restrict p, int base)
{
return strtox(s, p, base, LLONG_MIN);
}
unsigned long strtoul(const char *s, char **p, int base)
unsigned long strtoul(const char *restrict s, char **restrict p, int base)
{
return strtox(s, p, base, ULONG_MAX);
}
long strtol(const char *s, char **p, int base)
long strtol(const char *restrict s, char **restrict p, int base)
{
return strtox(s, p, base, 0UL+LONG_MIN);
}
intmax_t strtoimax(const char *s, char **p, int base)
intmax_t strtoimax(const char *restrict s, char **restrict p, int base)
{
return strtoll(s, p, base);
}
uintmax_t strtoumax(const char *s, char **p, int base)
uintmax_t strtoumax(const char *restrict s, char **restrict p, int base)
{
return strtoull(s, p, base);
}

View File

@@ -47,17 +47,17 @@ static long double wcstox(const wchar_t *s, wchar_t **p, int prec)
return y;
}
float wcstof(const wchar_t *s, wchar_t **p)
float wcstof(const wchar_t *restrict s, wchar_t **restrict p)
{
return wcstox(s, p, 0);
}
double wcstod(const wchar_t *s, wchar_t **p)
double wcstod(const wchar_t *restrict s, wchar_t **restrict p)
{
return wcstox(s, p, 1);
}
long double wcstold(const wchar_t *s, wchar_t **p)
long double wcstold(const wchar_t *restrict s, wchar_t **restrict p)
{
return wcstox(s, p, 2);
}

View File

@@ -47,32 +47,32 @@ static unsigned long long wcstox(const wchar_t *s, wchar_t **p, int base, unsign
return y;
}
unsigned long long wcstoull(const wchar_t *s, wchar_t **p, int base)
unsigned long long wcstoull(const wchar_t *restrict s, wchar_t **restrict p, int base)
{
return wcstox(s, p, base, ULLONG_MAX);
}
long long wcstoll(const wchar_t *s, wchar_t **p, int base)
long long wcstoll(const wchar_t *restrict s, wchar_t **restrict p, int base)
{
return wcstox(s, p, base, LLONG_MIN);
}
unsigned long wcstoul(const wchar_t *s, wchar_t **p, int base)
unsigned long wcstoul(const wchar_t *restrict s, wchar_t **restrict p, int base)
{
return wcstox(s, p, base, ULONG_MAX);
}
long wcstol(const wchar_t *s, wchar_t **p, int base)
long wcstol(const wchar_t *restrict s, wchar_t **restrict p, int base)
{
return wcstox(s, p, base, 0UL+LONG_MIN);
}
intmax_t wcstoimax(const wchar_t *s, wchar_t **p, int base)
intmax_t wcstoimax(const wchar_t *restrict s, wchar_t **restrict p, int base)
{
return wcstoll(s, p, base);
}
uintmax_t wcstoumax(const wchar_t *s, wchar_t **p, int base)
uintmax_t wcstoumax(const wchar_t *restrict s, wchar_t **restrict p, int base)
{
return wcstoull(s, p, base);
}