[libc-commits] [libc] Added support of fixed-points in ``is_signed`` and ``is_unsigned``. (PR #133371)
via libc-commits
libc-commits at lists.llvm.org
Thu Mar 27 22:50:36 PDT 2025
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff 96e5ee23a76136851a52f48c780249e2a86a5ce9 d967f431f9382ab80dc034450251ea8c32fa1537 --extensions h,cpp -- libc/src/__support/CPP/type_traits/is_signed.h libc/src/__support/CPP/type_traits/is_unsigned.h libc/test/src/__support/CPP/type_traits_test.cpp
``````````
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/libc/src/__support/CPP/type_traits/is_signed.h b/libc/src/__support/CPP/type_traits/is_signed.h
index 699b017eda..57a37bdfb0 100644
--- a/libc/src/__support/CPP/type_traits/is_signed.h
+++ b/libc/src/__support/CPP/type_traits/is_signed.h
@@ -20,69 +20,58 @@ namespace cpp {
// Primary template: handles arithmetic and signed fixed-point types
template <typename T>
-struct is_signed : bool_constant<((is_fixed_point_v<T> || is_arithmetic_v<T>) && (T(-1) < T(0)))> {
+struct is_signed : bool_constant<((is_fixed_point_v<T> || is_arithmetic_v<T>) &&
+ (T(-1) < T(0)))> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
// Specializations for unsigned fixed-point types
-template <>
-struct is_signed<unsigned short fract> : bool_constant<false> {
+template <> struct is_signed<unsigned short fract> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned fract> : bool_constant<false> {
+template <> struct is_signed<unsigned fract> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned long fract> : bool_constant<false> {
+template <> struct is_signed<unsigned long fract> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned short accum> : bool_constant<false> {
+template <> struct is_signed<unsigned short accum> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned accum> : bool_constant<false> {
+template <> struct is_signed<unsigned accum> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned long accum> : bool_constant<false> {
+template <> struct is_signed<unsigned long accum> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned short sat fract> : bool_constant<false> {
+template <> struct is_signed<unsigned short sat fract> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned sat fract> : bool_constant<false> {
+template <> struct is_signed<unsigned sat fract> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned long sat fract> : bool_constant<false> {
+template <> struct is_signed<unsigned long sat fract> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned short sat accum> : bool_constant<false> {
+template <> struct is_signed<unsigned short sat accum> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned sat accum> : bool_constant<false> {
+template <> struct is_signed<unsigned sat accum> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
-template <>
-struct is_signed<unsigned long sat accum> : bool_constant<false> {
+template <> struct is_signed<unsigned long sat accum> : bool_constant<false> {
LIBC_INLINE constexpr operator bool() const { return is_signed::value; }
LIBC_INLINE constexpr bool operator()() const { return is_signed::value; }
};
diff --git a/libc/src/__support/CPP/type_traits/is_unsigned.h b/libc/src/__support/CPP/type_traits/is_unsigned.h
index 58cd3f0f59..7d70e6fb69 100644
--- a/libc/src/__support/CPP/type_traits/is_unsigned.h
+++ b/libc/src/__support/CPP/type_traits/is_unsigned.h
@@ -20,69 +20,59 @@ namespace cpp {
// Primary template: handles arithmetic and signed fixed-point types
template <typename T>
-struct is_unsigned : bool_constant<((is_fixed_point_v<T> || is_arithmetic_v<T>) && (T(-1) > T(0)))> {
+struct is_unsigned
+ : bool_constant<((is_fixed_point_v<T> || is_arithmetic_v<T>) &&
+ (T(-1) > T(0)))> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
// Specializations for unsigned fixed-point types
-template <>
-struct is_unsigned<unsigned short fract> : bool_constant<true> {
+template <> struct is_unsigned<unsigned short fract> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned fract> : bool_constant<true> {
+template <> struct is_unsigned<unsigned fract> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned long fract> : bool_constant<true> {
+template <> struct is_unsigned<unsigned long fract> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned short accum> : bool_constant<true> {
+template <> struct is_unsigned<unsigned short accum> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned accum> : bool_constant<true> {
+template <> struct is_unsigned<unsigned accum> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned long accum> : bool_constant<true> {
+template <> struct is_unsigned<unsigned long accum> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned short sat fract> : bool_constant<true> {
+template <> struct is_unsigned<unsigned short sat fract> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned sat fract> : bool_constant<true> {
+template <> struct is_unsigned<unsigned sat fract> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned long sat fract> : bool_constant<true> {
+template <> struct is_unsigned<unsigned long sat fract> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned short sat accum> : bool_constant<true> {
+template <> struct is_unsigned<unsigned short sat accum> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned sat accum> : bool_constant<true> {
+template <> struct is_unsigned<unsigned sat accum> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
-template <>
-struct is_unsigned<unsigned long sat accum> : bool_constant<true> {
+template <> struct is_unsigned<unsigned long sat accum> : bool_constant<true> {
LIBC_INLINE constexpr operator bool() const { return is_unsigned::value; }
LIBC_INLINE constexpr bool operator()() const { return is_unsigned::value; }
};
``````````
</details>
https://github.com/llvm/llvm-project/pull/133371
More information about the libc-commits
mailing list