summaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2015-01-27 14:01:32 +0000
committerMaxime Coste <frrrwww@gmail.com>2015-01-27 23:31:23 +0000
commit6843740840db1c8d126df0f81fb62ac07601f6ba (patch)
treed19030dbba95fd6004308a777c2298bd2a3621e7 /gdb
parentcc699faa5484d584950a144635d699be41be0196 (diff)
Add pretty printer for ref_ptr<StringStorage>
Diffstat (limited to 'gdb')
-rw-r--r--gdb/kakoune.py13
1 files changed, 13 insertions, 0 deletions
diff --git a/gdb/kakoune.py b/gdb/kakoune.py
index c64a343a..d77a6f9e 100644
--- a/gdb/kakoune.py
+++ b/gdb/kakoune.py
@@ -74,6 +74,18 @@ class StringView:
def to_string(self):
return "\"%s\"" % (self.val['m_data'].string("utf-8", "ignore", self.val['m_length']['m_value']))
+class StringStoragePtr:
+ """ Print a ref_ptr<StringStorage>"""
+
+ def __init__(self, val):
+ self.val = val
+
+ def to_string(self):
+ ptr = self.val['m_ptr']
+ str_type = gdb.lookup_type("char").pointer()
+ content = (ptr + 1).cast(str_type).string("utf-8", "ignore", ptr.dereference()['length'])
+ return "\"%s\" (ref:%d)" % (content.replace("\n", "\\n"), ptr.dereference()['refcount'])
+
class Option:
""" Print a Option"""
@@ -120,6 +132,7 @@ def build_pretty_printer():
pp.add_printer('String', '^Kakoune::String$', String)
pp.add_printer('StringView', '^Kakoune::StringView$', StringView)
pp.add_printer('SharedString', '^Kakoune::SharedString$', StringView)
+ pp.add_printer('StringStoragePtr', '^Kakoune::ref_ptr<Kakoune::StringStorage>$', StringStoragePtr)
pp.add_printer('Option', '^Kakoune::Option$', Option)
pp.add_printer('LineCount', '^Kakoune::LineCount$', LineCount)
pp.add_printer('CharCount', '^Kakoune::CharCount$', CharCount)