Files
memgraph/tools/gdb-plugins/pretty_printers.py

52 lines
1.9 KiB
Python

import gdb
import gdb.printing
def build_memgraph_pretty_printers():
"""Instantiate and return all memgraph pretty printer classes."""
pp = gdb.printing.RegexpCollectionPrettyPrinter("memgraph")
pp.add_printer(
"memgraph::query::TypedValue",
"^memgraph::query::TypedValue$",
TypedValuePrinter,
)
return pp
class TypedValuePrinter(gdb.printing.PrettyPrinter):
"""Pretty printer for memgraph::query::TypedValue"""
def __init__(self, val):
super(TypedValuePrinter, self).__init__("TypedValue")
self.val = val
def to_string(self):
def _to_str(val):
return "{%s %s}" % (value_type, self.val[val])
value_type = str(self.val["type_"])
if value_type == "memgraph::query::TypedValue::Type::Null":
return "{%s}" % value_type
elif value_type == "memgraph::query::TypedValue::Type::Bool":
return _to_str("bool_v")
elif value_type == "memgraph::query::TypedValue::Type::Int":
return _to_str("int_v")
elif value_type == "memgraph::query::TypedValue::Type::Double":
return _to_str("double_v")
elif value_type == "memgraph::query::TypedValue::Type::String":
return _to_str("string_v")
elif value_type == "memgraph::query::TypedValue::Type::List":
return _to_str("list_v")
elif value_type == "memgraph::query::TypedValue::Type::Map":
return _to_str("map_v")
elif value_type == "memgraph::query::TypedValue::Type::Vertex":
return _to_str("vertex_v")
elif value_type == "memgraph::query::TypedValue::Type::Edge":
return _to_str("edge_v")
elif value_type == "memgraph::query::TypedValue::Type::Path":
return _to_str("path_v")
return "{%s}" % value_type
gdb.printing.register_pretty_printer(None, build_memgraph_pretty_printers(), replace=True)