diff options
Diffstat (limited to 'examples/summaries/sp_cp.py')
-rw-r--r-- | examples/summaries/sp_cp.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/summaries/sp_cp.py b/examples/summaries/sp_cp.py new file mode 100644 index 000000000000..9aa0a2f4fb93 --- /dev/null +++ b/examples/summaries/sp_cp.py @@ -0,0 +1,61 @@ +""" +Summary and synthetic providers for LLDB-specific shared pointers + +part of The LLVM Compiler Infrastructure +This file is distributed under the University of Illinois Open Source +License. See LICENSE.TXT for details. +""" + +class SharedPtr_SyntheticChildrenProvider: + def __init__(self,valobj,dict): + self.valobj = valobj + self.update() + def update(self): + pass + def num_children(self): + return 1 + def get_child_index(self,name): + if name == "ptr": + return 0 + if name == "count": + return 1 + return None + def get_child_at_index(self,index): + if index == 0: + return self.valobj.GetChildMemberWithName('_M_ptr') + if index == 1: + return self.valobj.GetChildMemberWithName('_M_refcount').GetChildMemberWithName('_M_pi').GetChildMemberWithName('_M_use_count') + return None + +def SharedPtr_SummaryProvider (valobj,dict): + return 'use = ' + str(valobj.GetChildMemberWithName("count").GetValueAsUnsigned()) + +class ValueObjectSP_SyntheticChildrenProvider: + def __init__(self,valobj,dict): + self.valobj = valobj + self.update() + def update(self): + pass + def num_children(self): + return 1 + def get_child_index(self,name): + if name == "ptr": + return 0 + if name == "count": + return 1 + return None + def get_child_at_index(self,index): + if index == 0: + return self.valobj.GetChildMemberWithName('ptr_') + if index == 1: + return self.valobj.GetChildMemberWithName('cntrl_').GetChildMemberWithName('shared_owners_') + return None + +def ValueObjectSP_SummaryProvider (valobj,dict): + return 'use = ' + str(1 + valobj.GetChildMemberWithName("count").GetValueAsUnsigned()) + +def __lldb_init_module(debugger, dict): + debugger.HandleCommand('type summary add -x ".*ValueObjectSP" --expand -F sp_cp.ValueObjectSP_SummaryProvider') + debugger.HandleCommand('type synthetic add -x ".*ValueObjectSP" -l sp_cp.ValueObjectSP_SyntheticChildrenProvider') + debugger.HandleCommand('type summary add -x ".*SP" --expand -F sp_cp.SharedPtr_SummaryProvider') + debugger.HandleCommand('type synthetic add -x ".*SP" -l sp_cp.SharedPtr_SyntheticChildrenProvider') |