aboutsummaryrefslogtreecommitdiff
path: root/libs/kstd/gdb/smart_pointers.py
diff options
context:
space:
mode:
Diffstat (limited to 'libs/kstd/gdb/smart_pointers.py')
-rw-r--r--libs/kstd/gdb/smart_pointers.py43
1 files changed, 22 insertions, 21 deletions
diff --git a/libs/kstd/gdb/smart_pointers.py b/libs/kstd/gdb/smart_pointers.py
index 6e4a4f9..3e5da02 100644
--- a/libs/kstd/gdb/smart_pointers.py
+++ b/libs/kstd/gdb/smart_pointers.py
@@ -1,50 +1,51 @@
import gdb
+from teachos import TeachOSBasePrinter
-class KstdUniquePtrPrinter:
-
+class KstdUniquePtrPrinter(TeachOSBasePrinter):
def __init__(self, val):
- self.val = val
- self.type = val.type.template_argument(0)
+ super().__init__(val)
+ self.__type = val.type.template_argument(0)
def to_string(self):
- pointer = self.val["pointer"]
+ pointer = self.value["pointer"]
if int(pointer) == 0:
- return f"kstd::unique_ptr<{self.type}> (empty)"
- return f"kstd::unique_ptr<{self.type}>"
+ return f"kstd::unique_ptr<{self.__type}> (empty)"
+ return f"kstd::unique_ptr<{self.__type}>"
def children(self):
- pointer = self.val["pointer"]
+ pointer = self.value["pointer"]
if int(pointer) != 0:
- yield ("get()", pointer)
- yield ("*get()", pointer.dereference())
+ yield ("[object]", pointer.dereference())
+ yield from super().children()
-class KstdSharedPtrPrinter:
+class KstdSharedPtrPrinter(TeachOSBasePrinter):
def __init__(self, val):
- self.val = val
- self.type = val.type.template_argument(0)
+ super().__init__(val)
+ self.__type = val.type.template_argument(0)
def to_string(self):
- pointer = self.val["pointer"]
- control_block = self.val["control"]
+ pointer = self.value["pointer"]
+ control_block = self.value["control"]
if int(pointer) == 0 or int(control_block) == 0:
- return f"kstd::shared_ptr<{self.type}> (empty)"
+ return f"kstd::shared_ptr<{self.__type}> (empty)"
strong_refs = int(control_block["shared_count"]["_M_i"])
weak_refs = int(control_block["weak_count"]["_M_i"])
- return f"kstd::shared_ptr<{self.type}> (use_count={strong_refs}, weak_count={weak_refs})"
+ return f"kstd::shared_ptr<{self.__type}> (use_count={strong_refs}, weak_count={weak_refs})"
def children(self):
- pointer = self.val["pointer"]
- control_block = self.val["control"]
+ pointer = self.value["pointer"]
+ control_block = self.value["control"]
if int(pointer) != 0:
- yield ("get()", pointer)
- yield ("*get()", pointer.dereference())
+ yield ("[object]", pointer.dereference())
if int(control_block) != 0:
yield ("[control_block]", control_block.dereference())
+
+ yield from super().children()