From f96a3c002aa994d5811a677bd93553ccf9a8abf1 Mon Sep 17 00:00:00 2001 From: Ali Mohammad Pur Date: Tue, 13 Dec 2022 10:29:30 +0330 Subject: [PATCH] Everywhere: Stop shoving things into ::std and mentioning them as such Note that this still keeps the old behaviour of putting things in std by default on serenity so the tools can be happy, but if USING_AK_GLOBALLY is unset, AK behaves like a good citizen and doesn't try to put things in the ::std namespace. std::nothrow_t and its friends get to stay because I'm being told that compilers assume things about them and I can't yeet them into a different namespace...for now. --- AK/Atomic.h | 6 ++--- AK/DeprecatedString.h | 2 +- AK/Format.h | 4 +-- AK/Function.h | 4 +-- AK/OwnPtr.h | 2 +- AK/RefPtr.h | 4 +-- AK/StdLibExtras.h | 26 +++++++++---------- AK/TypedTransfer.h | 4 +-- AK/Types.h | 5 ++-- AK/WeakPtr.h | 2 +- Kernel/Library/LockRefPtr.h | 8 +++--- Kernel/Library/LockWeakPtr.h | 2 +- Tests/AK/TestTypeTraits.cpp | 12 ++++----- Tests/LibAudio/TestFLACSpec.cpp | 2 +- .../ContentFilterSettingsWidget.cpp | 2 +- .../Applications/Presenter/Presentation.cpp | 2 +- Userland/DevTools/Profiler/Profile.h | 2 +- Userland/Libraries/LibCore/System.h | 2 +- Userland/Libraries/LibCrypto/ASN1/DER.cpp | 2 +- Userland/Libraries/LibCrypto/ASN1/DER.h | 2 +- .../Libraries/LibGUI/FileIconProvider.cpp | 2 +- Userland/Libraries/LibJS/Bytecode/Op.h | 2 +- Userland/Libraries/LibJS/Heap/GCPtr.h | 2 +- Userland/Libraries/LibJS/SafeFunction.h | 4 +-- Userland/Libraries/LibPDF/Value.cpp | 2 +- Userland/Libraries/LibPDF/Value.h | 2 +- Userland/Libraries/LibSQL/SQLClient.cpp | 2 +- 27 files changed, 56 insertions(+), 55 deletions(-) diff --git a/AK/Atomic.h b/AK/Atomic.h index ce0a34351d..2bfe1aaa6e 100644 --- a/AK/Atomic.h +++ b/AK/Atomic.h @@ -41,7 +41,7 @@ static inline V* atomic_exchange(T volatile** var, V* desired, MemoryOrder order } template> -static inline V* atomic_exchange(T volatile** var, std::nullptr_t, MemoryOrder order = memory_order_seq_cst) noexcept +static inline V* atomic_exchange(T volatile** var, nullptr_t, MemoryOrder order = memory_order_seq_cst) noexcept { return __atomic_exchange_n(const_cast(var), nullptr, order); } @@ -63,7 +63,7 @@ template> } template> -[[nodiscard]] static inline bool atomic_compare_exchange_strong(T volatile** var, V*& expected, std::nullptr_t, MemoryOrder order = memory_order_seq_cst) noexcept +[[nodiscard]] static inline bool atomic_compare_exchange_strong(T volatile** var, V*& expected, nullptr_t, MemoryOrder order = memory_order_seq_cst) noexcept { if (order == memory_order_acq_rel || order == memory_order_release) return __atomic_compare_exchange_n(const_cast(var), &expected, nullptr, false, memory_order_release, memory_order_acquire); @@ -125,7 +125,7 @@ static inline void atomic_store(T volatile** var, V* desired, MemoryOrder order } template> -static inline void atomic_store(T volatile** var, std::nullptr_t, MemoryOrder order = memory_order_seq_cst) noexcept +static inline void atomic_store(T volatile** var, nullptr_t, MemoryOrder order = memory_order_seq_cst) noexcept { __atomic_store_n(const_cast(var), nullptr, order); } diff --git a/AK/DeprecatedString.h b/AK/DeprecatedString.h index 75cc762e0f..e5a4ed853d 100644 --- a/AK/DeprecatedString.h +++ b/AK/DeprecatedString.h @@ -250,7 +250,7 @@ public: return *this; } - DeprecatedString& operator=(std::nullptr_t) + DeprecatedString& operator=(nullptr_t) { m_impl = nullptr; return *this; diff --git a/AK/Format.h b/AK/Format.h index c52932e974..9b46081814 100644 --- a/AK/Format.h +++ b/AK/Format.h @@ -544,8 +544,8 @@ struct Formatter> : StandardFormatter { }; template<> -struct Formatter : Formatter { - ErrorOr format(FormatBuilder& builder, std::nullptr_t) +struct Formatter : Formatter { + ErrorOr format(FormatBuilder& builder, nullptr_t) { if (m_mode == Mode::Default) m_mode = Mode::Pointer; diff --git a/AK/Function.h b/AK/Function.h index 16ad355e93..f202429fa6 100644 --- a/AK/Function.h +++ b/AK/Function.h @@ -54,7 +54,7 @@ public: using ReturnType = Out; Function() = default; - Function(std::nullptr_t) + Function(nullptr_t) { } @@ -116,7 +116,7 @@ public: return *this; } - Function& operator=(std::nullptr_t) + Function& operator=(nullptr_t) { clear(); return *this; diff --git a/AK/OwnPtr.h b/AK/OwnPtr.h index 8de5eeb37d..ece4c34391 100644 --- a/AK/OwnPtr.h +++ b/AK/OwnPtr.h @@ -97,7 +97,7 @@ public: OwnPtr& operator=(T* ptr) = delete; - OwnPtr& operator=(std::nullptr_t) + OwnPtr& operator=(nullptr_t) { clear(); return *this; diff --git a/AK/RefPtr.h b/AK/RefPtr.h index f60af914af..7619017347 100644 --- a/AK/RefPtr.h +++ b/AK/RefPtr.h @@ -197,7 +197,7 @@ public: return *this; } - RefPtr& operator=(std::nullptr_t) + RefPtr& operator=(nullptr_t) { clear(); return *this; @@ -256,7 +256,7 @@ public: ALWAYS_INLINE operator bool() { return !is_null(); } - bool operator==(std::nullptr_t) const { return is_null(); } + bool operator==(nullptr_t) const { return is_null(); } bool operator==(RefPtr const& other) const { return as_ptr() == other.as_ptr(); } diff --git a/AK/StdLibExtras.h b/AK/StdLibExtras.h index 02b98cd2c2..8e1e87be20 100644 --- a/AK/StdLibExtras.h +++ b/AK/StdLibExtras.h @@ -34,10 +34,17 @@ requires(AK::Detail::IsIntegral) } -#ifndef AK_DONT_REPLACE_STD -namespace std { // NOLINT(cert-dcl58-cpp) Names in std to aid tools +#if !USING_AK_GLOBALLY +# define AK_REPLACED_STD_NAMESPACE AK::replaced_std +#else +# define AK_REPLACED_STD_NAMESPACE std +#endif + +namespace AK_REPLACED_STD_NAMESPACE { // NOLINT(cert-dcl58-cpp) Names in std to aid tools // NOTE: These are in the "std" namespace since some compilers and static analyzers rely on it. +// If USING_AK_GLOBALLY is false, we can't put them in ::std, so we put them in AK::replaced_std instead +// The user code should not notice anything unless it explicitly asks for std::stuff, so...don't. template constexpr T&& forward(AK::Detail::RemoveReference& param) @@ -59,20 +66,11 @@ constexpr T&& move(T& arg) } } -#else -# include -#endif -#if !USING_AK_GLOBALLY namespace AK { -#endif - -using std::forward; -using std::move; - -#if !USING_AK_GLOBALLY +using AK_REPLACED_STD_NAMESPACE::forward; +using AK_REPLACED_STD_NAMESPACE::move; } -#endif namespace AK::Detail { template @@ -193,11 +191,13 @@ using AK::array_size; using AK::ceil_div; using AK::clamp; using AK::exchange; +using AK::forward; using AK::is_constant_evaluated; using AK::is_power_of_two; using AK::max; using AK::min; using AK::mix; +using AK::move; using AK::RawPtr; using AK::round_up_to_power_of_two; using AK::swap; diff --git a/AK/TypedTransfer.h b/AK/TypedTransfer.h index 80625b0f3c..cc18fb9717 100644 --- a/AK/TypedTransfer.h +++ b/AK/TypedTransfer.h @@ -25,9 +25,9 @@ public: for (size_t i = 0; i < count; ++i) { if (destination <= source) - new (&destination[i]) T(std::move(source[i])); + new (&destination[i]) T(AK::move(source[i])); else - new (&destination[count - i - 1]) T(std::move(source[count - i - 1])); + new (&destination[count - i - 1]) T(AK::move(source[count - i - 1])); } } diff --git a/AK/Types.h b/AK/Types.h index 32a8607d1c..db6146b81a 100644 --- a/AK/Types.h +++ b/AK/Types.h @@ -81,13 +81,13 @@ constexpr u64 TiB = KiB * KiB * KiB * KiB; constexpr u64 PiB = KiB * KiB * KiB * KiB * KiB; constexpr u64 EiB = KiB * KiB * KiB * KiB * KiB * KiB; -namespace std { // NOLINT(cert-dcl58-cpp) nullptr_t must be in ::std:: for some analysis tools +namespace AK_REPLACED_STD_NAMESPACE { // NOLINT(cert-dcl58-cpp) nullptr_t must be in ::std:: for some analysis tools using nullptr_t = decltype(nullptr); } namespace AK { -using nullptr_t = std::nullptr_t; +using nullptr_t = AK_REPLACED_STD_NAMESPACE::nullptr_t; static constexpr FlatPtr explode_byte(u8 b) { @@ -133,6 +133,7 @@ enum MemoryOrder { #if USING_AK_GLOBALLY using AK::align_down_to; using AK::align_up_to; +using AK::explode_byte; using AK::MemoryOrder; using AK::nullptr_t; using AK::TriState; diff --git a/AK/WeakPtr.h b/AK/WeakPtr.h index 730a85558d..bf4eabc863 100644 --- a/AK/WeakPtr.h +++ b/AK/WeakPtr.h @@ -59,7 +59,7 @@ public: return *this; } - WeakPtr& operator=(std::nullptr_t) + WeakPtr& operator=(nullptr_t) { clear(); return *this; diff --git a/Kernel/Library/LockRefPtr.h b/Kernel/Library/LockRefPtr.h index 4222e17e4f..4c7aeb70f3 100644 --- a/Kernel/Library/LockRefPtr.h +++ b/Kernel/Library/LockRefPtr.h @@ -113,7 +113,7 @@ struct LockRefPtrTraits { static constexpr FlatPtr default_null_value = 0; - using NullType = std::nullptr_t; + using NullType = nullptr_t; }; template @@ -284,7 +284,7 @@ public: return *this; } - LockRefPtr& operator=(std::nullptr_t) + LockRefPtr& operator=(nullptr_t) { clear(); return *this; @@ -353,8 +353,8 @@ public: ALWAYS_INLINE operator bool() { return !is_null(); } - bool operator==(std::nullptr_t) const { return is_null(); } - bool operator!=(std::nullptr_t) const { return !is_null(); } + bool operator==(nullptr_t) const { return is_null(); } + bool operator!=(nullptr_t) const { return !is_null(); } bool operator==(LockRefPtr const& other) const { return as_ptr() == other.as_ptr(); } bool operator!=(LockRefPtr const& other) const { return as_ptr() != other.as_ptr(); } diff --git a/Kernel/Library/LockWeakPtr.h b/Kernel/Library/LockWeakPtr.h index 184be112f3..f6bacbe6b7 100644 --- a/Kernel/Library/LockWeakPtr.h +++ b/Kernel/Library/LockWeakPtr.h @@ -49,7 +49,7 @@ public: return *this; } - LockWeakPtr& operator=(std::nullptr_t) + LockWeakPtr& operator=(nullptr_t) { clear(); return *this; diff --git a/Tests/AK/TestTypeTraits.cpp b/Tests/AK/TestTypeTraits.cpp index ad7753e7de..787452f5ff 100644 --- a/Tests/AK/TestTypeTraits.cpp +++ b/Tests/AK/TestTypeTraits.cpp @@ -46,22 +46,22 @@ enum class Enummer : u8 { TEST_CASE(FundamentalTypeClassification) { EXPECT_TRAIT_TRUE(IsVoid, void); - EXPECT_TRAIT_FALSE(IsVoid, int, Empty, std::nullptr_t); + EXPECT_TRAIT_FALSE(IsVoid, int, Empty, nullptr_t); - EXPECT_TRAIT_TRUE(IsNullPointer, std::nullptr_t); + EXPECT_TRAIT_TRUE(IsNullPointer, nullptr_t); EXPECT_TRAIT_FALSE(IsNullPointer, void, int, Empty, decltype(0)); EXPECT_TRAIT_TRUE(IsFloatingPoint, float, double, long double); - EXPECT_TRAIT_FALSE(IsFloatingPoint, int, Empty, std::nullptr_t, void); + EXPECT_TRAIT_FALSE(IsFloatingPoint, int, Empty, nullptr_t, void); EXPECT_TRAIT_TRUE(IsArithmetic, float, double, long double, bool, size_t); EXPECT_TRAIT_TRUE(IsArithmetic, char, signed char, unsigned char, char8_t, char16_t, char32_t); EXPECT_TRAIT_TRUE(IsArithmetic, short, int, long, long long); EXPECT_TRAIT_TRUE(IsArithmetic, unsigned short, unsigned int, unsigned long, unsigned long long); - EXPECT_TRAIT_FALSE(IsArithmetic, void, std::nullptr_t, Empty); + EXPECT_TRAIT_FALSE(IsArithmetic, void, nullptr_t, Empty); - EXPECT_TRAIT_TRUE(IsFundamental, void, std::nullptr_t); + EXPECT_TRAIT_TRUE(IsFundamental, void, nullptr_t); EXPECT_TRAIT_TRUE(IsFundamental, float, double, long double, bool, size_t); EXPECT_TRAIT_TRUE(IsFundamental, char, signed char, unsigned char, char8_t, char16_t, char32_t); EXPECT_TRAIT_TRUE(IsFundamental, short, int, long, long long); @@ -89,7 +89,7 @@ TEST_CASE(FundamentalTypeClassification) EXPECT_TRAIT_FALSE(IsEnum, Empty); EXPECT_TRAIT_FALSE(IsEnum, int); EXPECT_TRAIT_FALSE(IsEnum, void); - EXPECT_TRAIT_FALSE(IsEnum, std::nullptr_t); + EXPECT_TRAIT_FALSE(IsEnum, nullptr_t); } TEST_CASE(AddConst) diff --git a/Tests/LibAudio/TestFLACSpec.cpp b/Tests/LibAudio/TestFLACSpec.cpp index 3782641cc1..64518b8ac3 100644 --- a/Tests/LibAudio/TestFLACSpec.cpp +++ b/Tests/LibAudio/TestFLACSpec.cpp @@ -15,7 +15,7 @@ struct FlacTest : Test::TestCase { FlacTest(LexicalPath path) : Test::TestCase( DeprecatedString::formatted("flac_spec_test_{}", path.basename()), [this]() { run(); }, false) - , m_path(std::move(path)) + , m_path(move(path)) { } diff --git a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp index 50e99dfd73..66091823db 100644 --- a/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp +++ b/Userland/Applications/BrowserSettings/ContentFilterSettingsWidget.cpp @@ -121,7 +121,7 @@ ContentFilterSettingsWidget::ContentFilterSettingsWidget() if (GUI::InputBox::show(window(), text, "Enter domain name"sv, "Add domain to Content Filter"sv) == GUI::Dialog::ExecResult::OK && !text.is_empty()) { - m_domain_list_model->add_domain(std::move(text)); + m_domain_list_model->add_domain(move(text)); set_modified(true); } }; diff --git a/Userland/Applications/Presenter/Presentation.cpp b/Userland/Applications/Presenter/Presentation.cpp index b1d809f908..27fc6a529a 100644 --- a/Userland/Applications/Presenter/Presentation.cpp +++ b/Userland/Applications/Presenter/Presentation.cpp @@ -14,7 +14,7 @@ Presentation::Presentation(Gfx::IntSize normative_size, HashMap metadata) : m_normative_size(normative_size) - , m_metadata(std::move(metadata)) + , m_metadata(move(metadata)) { } diff --git a/Userland/DevTools/Profiler/Profile.h b/Userland/DevTools/Profiler/Profile.h index eb374002a0..ad66fb15c7 100644 --- a/Userland/DevTools/Profiler/Profile.h +++ b/Userland/DevTools/Profiler/Profile.h @@ -231,7 +231,7 @@ public: bool success; }; - Variant data { nullptr }; + Variant data { nullptr }; }; Vector const& events() const { return m_events; } diff --git a/Userland/Libraries/LibCore/System.h b/Userland/Libraries/LibCore/System.h index 986d2d57c8..e7c673a344 100644 --- a/Userland/Libraries/LibCore/System.h +++ b/Userland/Libraries/LibCore/System.h @@ -74,7 +74,7 @@ ALWAYS_INLINE ErrorOr unveil(char const (&path)[NPath], char const (&permi return unveil(StringView { path, NPath - 1 }, StringView { permissions, NPermissions - 1 }); } -ALWAYS_INLINE ErrorOr unveil(std::nullptr_t, std::nullptr_t) +ALWAYS_INLINE ErrorOr unveil(nullptr_t, nullptr_t) { return unveil(StringView {}, StringView {}); } diff --git a/Userland/Libraries/LibCrypto/ASN1/DER.cpp b/Userland/Libraries/LibCrypto/ASN1/DER.cpp index 4d398a6b20..8570387be7 100644 --- a/Userland/Libraries/LibCrypto/ASN1/DER.cpp +++ b/Userland/Libraries/LibCrypto/ASN1/DER.cpp @@ -126,7 +126,7 @@ Result Decoder::decode_octet_string(ReadonlyBytes bytes return StringView { bytes.data(), bytes.size() }; } -Result Decoder::decode_null(ReadonlyBytes data) +Result Decoder::decode_null(ReadonlyBytes data) { if (data.size() != 0) return DecodeError::InvalidInputFormat; diff --git a/Userland/Libraries/LibCrypto/ASN1/DER.h b/Userland/Libraries/LibCrypto/ASN1/DER.h index 6081c40473..e3c3f46778 100644 --- a/Userland/Libraries/LibCrypto/ASN1/DER.h +++ b/Userland/Libraries/LibCrypto/ASN1/DER.h @@ -217,7 +217,7 @@ private: static Result decode_boolean(ReadonlyBytes); static Result decode_arbitrary_sized_integer(ReadonlyBytes); static Result decode_octet_string(ReadonlyBytes); - static Result decode_null(ReadonlyBytes); + static Result decode_null(ReadonlyBytes); static Result, DecodeError> decode_object_identifier(ReadonlyBytes); static Result decode_printable_string(ReadonlyBytes); static Result decode_bit_string(ReadonlyBytes); diff --git a/Userland/Libraries/LibGUI/FileIconProvider.cpp b/Userland/Libraries/LibGUI/FileIconProvider.cpp index 94558454ba..87df5d0345 100644 --- a/Userland/Libraries/LibGUI/FileIconProvider.cpp +++ b/Userland/Libraries/LibGUI/FileIconProvider.cpp @@ -222,7 +222,7 @@ Icon FileIconProvider::icon_for_executable(DeprecatedString const& path) continue; } - icon.set_bitmap_for_size(icon_section.image_size, std::move(bitmap)); + icon.set_bitmap_for_size(icon_section.image_size, move(bitmap)); } if (had_error) { diff --git a/Userland/Libraries/LibJS/Bytecode/Op.h b/Userland/Libraries/LibJS/Bytecode/Op.h index 053406b51e..6bf3f05dac 100644 --- a/Userland/Libraries/LibJS/Bytecode/Op.h +++ b/Userland/Libraries/LibJS/Bytecode/Op.h @@ -948,7 +948,7 @@ public: { } - explicit Yield(std::nullptr_t) + explicit Yield(nullptr_t) : Instruction(Type::Yield) { } diff --git a/Userland/Libraries/LibJS/Heap/GCPtr.h b/Userland/Libraries/LibJS/Heap/GCPtr.h index f0c0623afa..c42519173e 100644 --- a/Userland/Libraries/LibJS/Heap/GCPtr.h +++ b/Userland/Libraries/LibJS/Heap/GCPtr.h @@ -129,7 +129,7 @@ public: { } - GCPtr(std::nullptr_t) + GCPtr(nullptr_t) : m_ptr(nullptr) { } diff --git a/Userland/Libraries/LibJS/SafeFunction.h b/Userland/Libraries/LibJS/SafeFunction.h index 879fd69b14..7a86dc95c9 100644 --- a/Userland/Libraries/LibJS/SafeFunction.h +++ b/Userland/Libraries/LibJS/SafeFunction.h @@ -24,7 +24,7 @@ class SafeFunction { public: SafeFunction() = default; - SafeFunction(std::nullptr_t) + SafeFunction(nullptr_t) { } @@ -102,7 +102,7 @@ public: return *this; } - SafeFunction& operator=(std::nullptr_t) + SafeFunction& operator=(nullptr_t) { clear(); return *this; diff --git a/Userland/Libraries/LibPDF/Value.cpp b/Userland/Libraries/LibPDF/Value.cpp index b95d619f0c..1f652fdfee 100644 --- a/Userland/Libraries/LibPDF/Value.cpp +++ b/Userland/Libraries/LibPDF/Value.cpp @@ -16,7 +16,7 @@ DeprecatedString Value::to_deprecated_string(int indent) const // Return type deduction means that we can't use implicit conversions. return ""; }, - [&](std::nullptr_t const&) -> DeprecatedString { + [&](nullptr_t const&) -> DeprecatedString { return "null"; }, [&](bool const& b) -> DeprecatedString { diff --git a/Userland/Libraries/LibPDF/Value.h b/Userland/Libraries/LibPDF/Value.h index 4144b09a15..6808032969 100644 --- a/Userland/Libraries/LibPDF/Value.h +++ b/Userland/Libraries/LibPDF/Value.h @@ -16,7 +16,7 @@ namespace PDF { -class Value : public Variant> { +class Value : public Variant> { public: using Variant::Variant; diff --git a/Userland/Libraries/LibSQL/SQLClient.cpp b/Userland/Libraries/LibSQL/SQLClient.cpp index df72ca1eb9..ae37d47498 100644 --- a/Userland/Libraries/LibSQL/SQLClient.cpp +++ b/Userland/Libraries/LibSQL/SQLClient.cpp @@ -139,7 +139,7 @@ ErrorOr> SQLClient::launch_server_and_create_client(Str auto socket = TRY(Core::Stream::LocalSocket::connect(move(socket_path))); TRY(socket->set_blocking(true)); - return adopt_nonnull_ref_or_enomem(new (nothrow) SQLClient(std::move(socket))); + return adopt_nonnull_ref_or_enomem(new (nothrow) SQLClient(move(socket))); } #endif