#pragma clang system_header
// Implement standard types that are known to be defined as unsigned in some
// implementations like MSVC.
namespace std {
namespace locale {
enum category : int {
none = 0u,
collate = 1u << 1u,
ctype = 1u << 2u,
monetary = 1u << 3u,
numeric = 1u << 4u,
time = 1u << 5u,
messages = 1u << 6u,
all = none | collate | ctype | monetary | numeric | time | messages
// CHECK MESSAGES: [[@LINE-1]]:9: warning: use of a signed integer operand with a binary bitwise operator
};
} // namespace locale
namespace ctype_base {
enum mask : int {
space,
print,
cntrl,
upper,
lower,
alpha,
digit,
punct,
xdigit,
/* blank, // C++11 */
alnum = alpha | digit,
// CHECK MESSAGES: [[@LINE-1]]:11: warning: use of a signed integer operand with a binary bitwise operator
graph = alnum | punct
// CHECK MESSAGES: [[@LINE-1]]:11: warning: use of a signed integer operand with a binary bitwise operator
};
} // namespace ctype_base
namespace ios_base {
enum fmtflags : int {
dec = 0u,
oct = 1u << 2u,
hex = 1u << 3u,
basefield = dec | oct | hex | 0u,
// CHECK MESSAGES: [[@LINE-1]]:15: warning: use of a signed integer operand with a binary bitwise operator
left = 1u << 4u,
right = 1u << 5u,
internal = 1u << 6u,
adjustfield = left | right | internal,
// CHECK MESSAGES: [[@LINE-1]]:17: warning: use of a signed integer operand with a binary bitwise operator
scientific = 1u << 7u,
fixed = 1u << 8u,
floatfield = scientific | fixed | (scientific | fixed) | 0u,
// CHECK MESSAGES: [[@LINE-1]]:16: warning: use of a signed integer operand with a binary bitwise operator
// CHECK MESSAGES: [[@LINE-2]]:38: warning: use of a signed integer operand with a binary bitwise operator
boolalpha = 1u << 9u,
showbase = 1u << 10u,
showpoint = 1u << 11u,
showpos = 1u << 12u,
skipws = 1u << 13u,
unitbuf = 1u << 14u,
uppercase = 1u << 15u
};
enum iostate : int {
goodbit = 0u,
badbit = 1u << 1u,
failbit = 1u << 2u,
eofbit = 1u << 3u
};
enum openmode : int {
app = 0u,
binary = 0u << 1u,
in = 0u << 2u,
out = 0u << 3u,
trunc = 0u << 4u,
ate = 0u << 5u
};
} // namespace ios_base
} // namespace std