summaryrefslogtreecommitdiff
path: root/AK
diff options
context:
space:
mode:
authorAndrew Kaster <andrewdkaster@gmail.com>2022-04-09 14:31:54 -0600
committerBrian Gianforcaro <b.gianfo@gmail.com>2022-04-23 10:43:32 -0700
commit83603d68d2e6fe51673c9857b459138df761327a (patch)
tree6fb3dd0acf353031b6d8719d3bac6250593a01ea /AK
parentbc7c8879c5d3230c0caf3ea922446e27c6f77cbc (diff)
downloadserenity-83603d68d2e6fe51673c9857b459138df761327a.zip
AK: Make sure we don't include Math.h or math.h from KERNEL
Diffstat (limited to 'AK')
-rw-r--r--AK/FixedPoint.h8
-rw-r--r--AK/IntegralMath.h2
-rw-r--r--AK/Math.h4
-rw-r--r--AK/PrintfImplementation.h11
4 files changed, 19 insertions, 6 deletions
diff --git a/AK/FixedPoint.h b/AK/FixedPoint.h
index aad0cba7e0..00ff9c34d6 100644
--- a/AK/FixedPoint.h
+++ b/AK/FixedPoint.h
@@ -9,10 +9,13 @@
#include <AK/Concepts.h>
#include <AK/Format.h>
#include <AK/IntegralMath.h>
-#include <AK/Math.h>
#include <AK/NumericLimits.h>
#include <AK/Types.h>
+#ifndef KERNEL
+# include <AK/Math.h>
+#endif
+
namespace AK {
// FIXME: this always uses round to nearest break-tie to even
@@ -45,11 +48,14 @@ public:
{
}
+#ifndef KERNEL
template<FloatingPoint F>
explicit ALWAYS_INLINE operator F() const
{
return (F)m_value * pow<F>(0.5, precision);
}
+#endif
+
template<Integral I>
explicit constexpr operator I() const
{
diff --git a/AK/IntegralMath.h b/AK/IntegralMath.h
index 0a23debb51..916d9b70cc 100644
--- a/AK/IntegralMath.h
+++ b/AK/IntegralMath.h
@@ -10,8 +10,6 @@
#include <AK/Concepts.h>
#include <AK/Types.h>
-#include <AK/Format.h>
-
namespace AK {
template<Integral T>
diff --git a/AK/Math.h b/AK/Math.h
index f0f0d1a0d5..09debce7cd 100644
--- a/AK/Math.h
+++ b/AK/Math.h
@@ -11,6 +11,10 @@
#include <AK/StdLibExtraDetails.h>
#include <AK/Types.h>
+#ifdef KERNEL
+# error "Including AK/Math.h from the Kernel is never correct! Floating point is disabled."
+#endif
+
namespace AK {
template<FloatingPoint T>
diff --git a/AK/PrintfImplementation.h b/AK/PrintfImplementation.h
index fc46f472d5..f9a46ce10f 100644
--- a/AK/PrintfImplementation.h
+++ b/AK/PrintfImplementation.h
@@ -9,10 +9,13 @@
#include <AK/Format.h>
#include <AK/StdLibExtras.h>
#include <AK/Types.h>
-#include <math.h>
#include <stdarg.h>
#include <wchar.h>
+#ifndef KERNEL
+# include <math.h>
+#endif
+
#ifdef __serenity__
extern "C" size_t strlen(char const*);
#else
@@ -159,7 +162,7 @@ ALWAYS_INLINE int print_decimal(PutChFunc putch, CharType*& bufptr, u64 number,
return field_width;
}
-
+#ifndef KERNEL
template<typename PutChFunc, typename CharType>
ALWAYS_INLINE int print_double(PutChFunc putch, CharType*& bufptr, double number, bool always_sign, bool left_pad, bool zero_pad, u32 field_width, u32 precision)
{
@@ -209,7 +212,7 @@ ALWAYS_INLINE int print_double(PutChFunc putch, CharType*& bufptr, double number
return length;
}
-
+#endif
template<typename PutChFunc, typename CharType>
ALWAYS_INLINE int print_octal_number(PutChFunc putch, CharType*& bufptr, u64 number, bool alternate_form, bool left_pad, bool zero_pad, u32 field_width, bool has_precision, u32 precision)
{
@@ -387,6 +390,7 @@ struct PrintfImpl {
{
return print_hex(m_putch, m_bufptr, NextArgument<u64>()(ap), false, false, state.left_pad, state.zero_pad, 16, false, 1);
}
+#ifndef KERNEL
ALWAYS_INLINE int format_g(ModifierState const& state, ArgumentListRefT ap) const
{
return format_f(state, ap);
@@ -395,6 +399,7 @@ struct PrintfImpl {
{
return print_double(m_putch, m_bufptr, NextArgument<double>()(ap), state.always_sign, state.left_pad, state.zero_pad, state.field_width, state.precision);
}
+#endif
ALWAYS_INLINE int format_o(ModifierState const& state, ArgumentListRefT ap) const
{
return print_octal_number(m_putch, m_bufptr, NextArgument<u32>()(ap), state.alternate_form, state.left_pad, state.zero_pad, state.field_width, state.has_precision, state.precision);