libstdc++: Fix ctype changed after newlib update.
Newlib changed ctype.h recently[1] by moving the short labels from ctype.h intro
the private namespace in ctype_.h. This broke embedded builds due to them no
longer being found. Instead they now expose the long names to match glibc.
This patch now uses the short or long names depending on is the short ones are
defined or not.
[1] 3ba1bd0d9d
libstdc++-v3/ChangeLog:
PR libstdc++/103305
* config/os/newlib/ctype_base.h (upper, lower, alpha, digit, xdigit,
space, print, graph, cntrl, punct, alnum, blank): Use short or long
names depending on if short ones are defined.
This commit is contained in:
parent
fb15abdc9b
commit
0e510ab534
@ -41,6 +41,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
// NB: Offsets into ctype<char>::_M_table force a particular size
|
||||
// on the mask type. Because of this, we don't use an enum.
|
||||
typedef char mask;
|
||||
#if defined _U && defined _L && defined _N && defined _S
|
||||
static const mask upper = _U;
|
||||
static const mask lower = _L;
|
||||
static const mask alpha = _U | _L;
|
||||
@ -52,8 +53,24 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
|
||||
static const mask cntrl = _C;
|
||||
static const mask punct = _P;
|
||||
static const mask alnum = _U | _L | _N;
|
||||
#if __cplusplus >= 201103L
|
||||
# if __cplusplus >= 201103L
|
||||
static const mask blank = space;
|
||||
# endif
|
||||
#else
|
||||
static const mask upper = _ISupper;
|
||||
static const mask lower = _ISlower;
|
||||
static const mask alpha = _ISupper | _ISlower;
|
||||
static const mask digit = _ISdigit;
|
||||
static const mask xdigit = _ISxdigit | _ISdigit;
|
||||
static const mask space = _ISspace;
|
||||
static const mask print = _ISpunct | _ISupper | _ISlower | _ISdigit | _ISblank;
|
||||
static const mask graph = _ISpunct | _ISupper | _ISlower | _ISdigit;
|
||||
static const mask cntrl = _IScntrl;
|
||||
static const mask punct = _ISpunct;
|
||||
static const mask alnum = _ISupper | _ISlower | _ISdigit;
|
||||
# if __cplusplus >= 201103L
|
||||
static const mask blank = _ISspace | _ISblank;
|
||||
# endif
|
||||
#endif
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user