aboutsummaryrefslogtreecommitdiff
path: root/examples/summaries/sp_cp.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/summaries/sp_cp.py')
-rw-r--r--examples/summaries/sp_cp.py61
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')