From bd1bdbe91bfe4e127d7a344bc42f1042c8245baa Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Fri, 21 May 2021 02:19:46 -0700 Subject: [PATCH] Meta: Add GDB pretty printer for AK::SinglyLinkedList --- Meta/serenity_gdb.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Meta/serenity_gdb.py b/Meta/serenity_gdb.py index ce4e6e6ac25..0aff2ad17b8 100644 --- a/Meta/serenity_gdb.py +++ b/Meta/serenity_gdb.py @@ -159,6 +159,24 @@ class AKHashMapPrettyPrinter: return elements +class AKSinglyLinkedList: + def __init__(self, val): + self.val = val + + def to_string(self): + return self.val.type.name + + def children(self): + elements = [] + + node = self.val["m_head"] + while node != 0: + elements.append(node["value"]) + node = node["next"] + + return [(f"[{i}]", elements[i]) for i in range(len(elements))] + + class AKInlineLinkedList: def __init__(self, val): self.val = val @@ -218,6 +236,8 @@ class SerenityPrettyPrinterLocator(gdb.printing.PrettyPrinter): return AKOwnPtr(val) elif klass == 'AK::NonnullRefPtr': return AKRefPtr(val) + elif klass == 'AK::SinglyLinkedList': + return AKSinglyLinkedList(val) elif klass == 'AK::String': return AKString(val) elif klass == 'AK::StringView':