Add pretty printer to gdb for TypedValue

Reviewers: florijan, mislav.bradac, buda

Reviewed By: mislav.bradac

Subscribers: pullbot

Differential Revision: https://phabricator.memgraph.io/D619
This commit is contained in:
Teon Banek 2017-07-30 20:23:09 +02:00
parent 43015f164c
commit 2ec1080ac9
2 changed files with 46 additions and 0 deletions

View File

@ -1 +1,2 @@
source ./tools/gdb-plugins/operator_tree.py
source ./tools/gdb-plugins/pretty_printers.py

View File

@ -0,0 +1,45 @@
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('query::TypedValue', '^query::TypedValue$', TypedValuePrinter)
return pp
class TypedValuePrinter(gdb.printing.PrettyPrinter):
'''Pretty printer for 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 == 'query::TypedValue::Type::Null':
return '{%s}' % value_type
elif value_type == 'query::TypedValue::Type::Bool':
return _to_str('bool_v')
elif value_type == 'query::TypedValue::Type::Int':
return _to_str('int_v')
elif value_type == 'query::TypedValue::Type::Double':
return _to_str('double_v')
elif value_type == 'query::TypedValue::Type::String':
return _to_str('string_v')
elif value_type == 'query::TypedValue::Type::List':
return _to_str('list_v')
elif value_type == 'query::TypedValue::Type::Map':
return _to_str('map_v')
elif value_type == 'query::TypedValue::Type::Vertex':
return _to_str('vertex_v')
elif value_type == 'query::TypedValue::Type::Edge':
return _to_str('edge_v')
elif value_type == '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)