memgraph/tools/gdb-plugins/pretty_printers.py
Teon Banek 2ec1080ac9 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
2017-08-16 11:32:25 +02:00

46 lines
1.8 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('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)