浏览代码

AK: Let's call decrementing reference counts "unref" instead of "deref"

It always bothered me that we're using the overloaded "dereference"
term for this. Let's call it "unreference" instead. :^)
Andreas Kling 5 年之前
父节点
当前提交
3de5439579

+ 1 - 1
AK/JsonValue.cpp

@@ -176,7 +176,7 @@ void JsonValue::clear()
 {
     switch (m_type) {
     case Type::String:
-        m_value.as_string->deref();
+        m_value.as_string->unref();
         break;
     case Type::Object:
         delete m_value.as_object;

+ 3 - 3
AK/NonnullRefPtr.h

@@ -46,10 +46,10 @@ inline void ref_if_not_null(T* ptr)
 }
 
 template<typename T>
-inline void deref_if_not_null(T* ptr)
+inline void unref_if_not_null(T* ptr)
 {
     if (ptr)
-        ptr->deref();
+        ptr->unref();
 }
 
 template<typename T>
@@ -103,7 +103,7 @@ public:
     }
     ~NonnullRefPtr()
     {
-        deref_if_not_null(m_ptr);
+        unref_if_not_null(m_ptr);
         m_ptr = nullptr;
 #ifdef SANITIZE_PTRS
         if constexpr (sizeof(T*) == 8)

+ 1 - 1
AK/RefCounted.h

@@ -87,7 +87,7 @@ protected:
 template<typename T>
 class RefCounted : public RefCountedBase {
 public:
-    void deref()
+    void unref()
     {
         deref_base();
         if (m_ref_count == 0) {

+ 1 - 1
AK/RefPtr.h

@@ -198,7 +198,7 @@ public:
 
     void clear()
     {
-        deref_if_not_null(m_ptr);
+        unref_if_not_null(m_ptr);
         m_ptr = nullptr;
     }
 

+ 1 - 1
AK/Tests/TestNonnullRefPtr.cpp

@@ -40,7 +40,7 @@ TEST_CASE(basics)
     EXPECT_EQ(object->ref_count(), 1);
     object->ref();
     EXPECT_EQ(object->ref_count(), 2);
-    object->deref();
+    object->unref();
     EXPECT_EQ(object->ref_count(), 1);
 
     {

+ 1 - 1
AK/Tests/TestRefPtr.cpp

@@ -40,7 +40,7 @@ TEST_CASE(basics)
     EXPECT_EQ(object->ref_count(), 1);
     object->ref();
     EXPECT_EQ(object->ref_count(), 2);
-    object->deref();
+    object->unref();
     EXPECT_EQ(object->ref_count(), 1);
 
     {

+ 6 - 6
Applications/SystemMonitor/main.cpp

@@ -105,7 +105,12 @@ int main(int argc, char** argv)
 
     unveil(nullptr, nullptr);
 
+    auto window = GWindow::construct();
+    window->set_title("System Monitor");
+    window->set_rect(20, 200, 680, 400);
+
     auto keeper = GWidget::construct();
+    window->set_main_widget(keeper);
     keeper->set_layout(make<GBoxLayout>(Orientation::Vertical));
     keeper->set_fill_with_background_color(true);
     keeper->layout()->set_margins({ 4, 4, 4, 4 });
@@ -140,7 +145,7 @@ int main(int argc, char** argv)
         process_table_view->refresh();
         if (auto* memory_stats_widget = MemoryStatsWidget::the())
             memory_stats_widget->refresh();
-    });
+    }, window);
 
     auto kill_action = GAction::create("Kill process", { Mod_Ctrl, Key_K }, GraphicsBitmap::load_from_file("/res/icons/kill16.png"), [process_table_view](const GAction&) {
         pid_t pid = process_table_view->selected_pid();
@@ -164,11 +169,6 @@ int main(int argc, char** argv)
     toolbar->add_action(stop_action);
     toolbar->add_action(continue_action);
 
-    auto window = GWindow::construct();
-    window->set_title("System Monitor");
-    window->set_rect(20, 200, 680, 400);
-    window->set_main_widget(keeper);
-
     auto menubar = make<GMenuBar>();
     auto app_menu = GMenu::construct("System Monitor");
     app_menu->add_action(GCommonActions::make_quit_action([](auto&) {

+ 1 - 1
Documentation/SmartPointers.md

@@ -35,7 +35,7 @@ Shared ownership is implemented via reference counting.
 
 NonnullRefPtr<T> is a special variant of RefPtr with one additional property: it cannot be null. NonnullRefPtr is suitable as a return type from functions that are guaranteed to never return null, and as an argument type where the argument may not be null. In other words, if RefPtr is "\*", then NonnullRefPtr is "&".
 
-Objects can only be held by RefPtr if they meet certain criteria. Specifically, they need to implement the functions `ref()` and `deref()`.
+Objects can only be held by RefPtr if they meet certain criteria. Specifically, they need to implement the functions `ref()` and `unref()`.
 
 To make a class T reference counted, you can simply make it inherit from RefCounted<T>. This will add all the necessary pieces to T.
 

+ 1 - 1
Kernel/VM/PhysicalPage.h

@@ -46,7 +46,7 @@ public:
         ++m_retain_count;
     }
 
-    void deref()
+    void unref()
     {
         ASSERT(m_retain_count);
         if (!--m_retain_count) {

+ 3 - 3
Libraries/LibGUI/GVariant.cpp

@@ -61,13 +61,13 @@ void GVariant::clear()
 {
     switch (m_type) {
     case Type::String:
-        AK::deref_if_not_null(m_value.as_string);
+        AK::unref_if_not_null(m_value.as_string);
         break;
     case Type::Bitmap:
-        AK::deref_if_not_null(m_value.as_bitmap);
+        AK::unref_if_not_null(m_value.as_bitmap);
         break;
     case Type::Icon:
-        AK::deref_if_not_null(m_value.as_icon);
+        AK::unref_if_not_null(m_value.as_icon);
         break;
     default:
         break;

+ 3 - 3
Libraries/LibHTML/TreeNode.h

@@ -48,7 +48,7 @@ public:
         ++m_ref_count;
     }
 
-    void deref()
+    void unref()
     {
         ASSERT(m_ref_count);
         if (!--m_ref_count) {
@@ -60,7 +60,7 @@ public:
             for (auto* child = m_first_child; child; child = next_child) {
                 next_child = child->m_next_sibling;
                 child->m_parent = nullptr;
-                child->deref();
+                child->unref();
             }
             delete static_cast<T*>(this);
         }
@@ -221,7 +221,7 @@ inline NonnullRefPtr<T> TreeNode<T>::remove_child(NonnullRefPtr<T> node, bool ca
     if (call_removed_from)
         node->removed_from(static_cast<T&>(*this));
 
-    node->deref();
+    node->unref();
 
     return node;
 }

+ 2 - 2
Libraries/LibThread/BackgroundAction.h

@@ -81,11 +81,11 @@ private:
             if (m_on_complete) {
                 CEventLoop::main().post_event(*this, make<CDeferredInvocationEvent>([this](CObject&) {
                     m_on_complete(m_result.release_value());
-                    this->deref();
+                    this->unref();
                 }));
                 CEventLoop::main().wake();
             } else
-                this->deref();
+                this->unref();
         });
     }