@@ -29,33 +29,79 @@ struct is_unsigned : bool_constant<(is_arithmetic_v<T> && (T(-1) > T(0)))> {
2929// Specializations for unsigned fixed-point types
3030template <typename T, bool IsUnsigned>
3131struct fixed_point_is_unsigned : bool_constant<IsUnsigned> {
32- LIBC_INLINE constexpr operator bool () const { return fixed_point_is_unsigned::value; }
33- LIBC_INLINE constexpr bool operator ()() const { return fixed_point_is_unsigned::value; }
32+ LIBC_INLINE constexpr operator bool () const {
33+ return fixed_point_is_unsigned::value;
34+ }
35+ LIBC_INLINE constexpr bool operator ()() const {
36+ return fixed_point_is_unsigned::value;
37+ }
3438};
35- template <> struct is_unsigned <fract> : fixed_point_is_unsigned<fract, false > {};
36- template <> struct is_unsigned <unsigned short fract> : fixed_point_is_unsigned<unsigned short fract, true > {};
37- template <> struct is_unsigned <unsigned fract> : fixed_point_is_unsigned<unsigned fract, true > {};
38- template <> struct is_unsigned <unsigned long fract> : fixed_point_is_unsigned<unsigned long fract, true > {};
39- template <> struct is_unsigned <short fract> : fixed_point_is_unsigned<short fract, false > {};
40- template <> struct is_unsigned <long fract> : fixed_point_is_unsigned<long fract, false > {};
41- template <> struct is_unsigned <accum> : fixed_point_is_unsigned<accum, false > {};
42- template <> struct is_unsigned <unsigned short accum> : fixed_point_is_unsigned<unsigned short accum, true > {};
43- template <> struct is_unsigned <unsigned accum> : fixed_point_is_unsigned<unsigned accum, true > {};
44- template <> struct is_unsigned <unsigned long accum> : fixed_point_is_unsigned<unsigned long accum, true > {};
45- template <> struct is_unsigned <short accum> : fixed_point_is_unsigned<short accum, false > {};
46- template <> struct is_unsigned <long accum> : fixed_point_is_unsigned<long accum, false > {};
47- template <> struct is_unsigned <sat fract> : fixed_point_is_unsigned<sat fract, false > {};
48- template <> struct is_unsigned <unsigned short sat fract> : fixed_point_is_unsigned<unsigned short sat fract, true > {};
49- template <> struct is_unsigned <unsigned sat fract> : fixed_point_is_unsigned<unsigned sat fract, true > {};
50- template <> struct is_unsigned <unsigned long sat fract> : fixed_point_is_unsigned<unsigned long sat fract, true > {};
51- template <> struct is_unsigned <short sat fract> : fixed_point_is_unsigned<short sat fract, false > {};
52- template <> struct is_unsigned <long sat fract> : fixed_point_is_unsigned<long sat fract, false > {};
53- template <> struct is_unsigned <sat accum> : fixed_point_is_unsigned<sat accum, false > {};
54- template <> struct is_unsigned <unsigned short sat accum> : fixed_point_is_unsigned<unsigned short sat accum, true > {};
55- template <> struct is_unsigned <unsigned sat accum> : fixed_point_is_unsigned<unsigned sat accum, true > {};
56- template <> struct is_unsigned <unsigned long sat accum> : fixed_point_is_unsigned<unsigned long sat accum, true > {};
57- template <> struct is_unsigned <short sat accum> : fixed_point_is_unsigned<short sat accum, false > {};
58- template <> struct is_unsigned <long sat accum> : fixed_point_is_unsigned<long sat accum, false > {};
39+ template <>
40+ struct is_unsigned <fract> : fixed_point_is_unsigned<fract, false > {};
41+ template <>
42+ struct is_unsigned <unsigned short fract>
43+ : fixed_point_is_unsigned<unsigned short fract, true > {};
44+ template <>
45+ struct is_unsigned <unsigned fract>
46+ : fixed_point_is_unsigned<unsigned fract, true > {};
47+ template <>
48+ struct is_unsigned <unsigned long fract>
49+ : fixed_point_is_unsigned<unsigned long fract, true > {};
50+ template <>
51+ struct is_unsigned <short fract> : fixed_point_is_unsigned<short fract, false > {
52+ };
53+ template <>
54+ struct is_unsigned <long fract> : fixed_point_is_unsigned<long fract, false > {};
55+ template <>
56+ struct is_unsigned <accum> : fixed_point_is_unsigned<accum, false > {};
57+ template <>
58+ struct is_unsigned <unsigned short accum>
59+ : fixed_point_is_unsigned<unsigned short accum, true > {};
60+ template <>
61+ struct is_unsigned <unsigned accum>
62+ : fixed_point_is_unsigned<unsigned accum, true > {};
63+ template <>
64+ struct is_unsigned <unsigned long accum>
65+ : fixed_point_is_unsigned<unsigned long accum, true > {};
66+ template <>
67+ struct is_unsigned <short accum> : fixed_point_is_unsigned<short accum, false > {
68+ };
69+ template <>
70+ struct is_unsigned <long accum> : fixed_point_is_unsigned<long accum, false > {};
71+ template <>
72+ struct is_unsigned <sat fract> : fixed_point_is_unsigned<sat fract, false > {};
73+ template <>
74+ struct is_unsigned <unsigned short sat fract>
75+ : fixed_point_is_unsigned<unsigned short sat fract, true > {};
76+ template <>
77+ struct is_unsigned <unsigned sat fract>
78+ : fixed_point_is_unsigned<unsigned sat fract, true > {};
79+ template <>
80+ struct is_unsigned <unsigned long sat fract>
81+ : fixed_point_is_unsigned<unsigned long sat fract, true > {};
82+ template <>
83+ struct is_unsigned <short sat fract>
84+ : fixed_point_is_unsigned<short sat fract, false > {};
85+ template <>
86+ struct is_unsigned <long sat fract>
87+ : fixed_point_is_unsigned<long sat fract, false > {};
88+ template <>
89+ struct is_unsigned <sat accum> : fixed_point_is_unsigned<sat accum, false > {};
90+ template <>
91+ struct is_unsigned <unsigned short sat accum>
92+ : fixed_point_is_unsigned<unsigned short sat accum, true > {};
93+ template <>
94+ struct is_unsigned <unsigned sat accum>
95+ : fixed_point_is_unsigned<unsigned sat accum, true > {};
96+ template <>
97+ struct is_unsigned <unsigned long sat accum>
98+ : fixed_point_is_unsigned<unsigned long sat accum, true > {};
99+ template <>
100+ struct is_unsigned <short sat accum>
101+ : fixed_point_is_unsigned<short sat accum, false > {};
102+ template <>
103+ struct is_unsigned <long sat accum>
104+ : fixed_point_is_unsigned<long sat accum, false > {};
59105#endif // LIBC_COMPILER_HAS_FIXED_POINT
60106
61107template <typename T>
0 commit comments