]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - examples/summaries/sp_cp.py
Vendor import of lldb trunk r256945:
[FreeBSD/FreeBSD.git] / examples / summaries / sp_cp.py
1 """
2 Summary and synthetic providers for LLDB-specific shared pointers
3
4 part of The LLVM Compiler Infrastructure
5 This file is distributed under the University of Illinois Open Source
6 License. See LICENSE.TXT for details.
7 """
8
9 class SharedPtr_SyntheticChildrenProvider:
10         def __init__(self,valobj,dict):
11                 self.valobj = valobj
12                 self.update()
13         def update(self):
14                 pass
15         def num_children(self): 
16                 return 1
17         def get_child_index(self,name): 
18                 if name == "ptr":
19                         return 0
20                 if name == "count":
21                         return 1
22                 return None
23         def get_child_at_index(self,index): 
24                 if index == 0:
25                         return self.valobj.GetChildMemberWithName('_M_ptr')
26                 if index == 1:
27                         return self.valobj.GetChildMemberWithName('_M_refcount').GetChildMemberWithName('_M_pi').GetChildMemberWithName('_M_use_count')
28                 return None
29
30 def SharedPtr_SummaryProvider (valobj,dict):
31         return 'use = ' + str(valobj.GetChildMemberWithName("count").GetValueAsUnsigned())
32
33 class ValueObjectSP_SyntheticChildrenProvider:
34         def __init__(self,valobj,dict):
35                 self.valobj = valobj
36                 self.update()
37         def update(self):
38                 pass
39         def num_children(self): 
40                 return 1
41         def get_child_index(self,name): 
42                 if name == "ptr":
43                         return 0
44                 if name == "count":
45                         return 1
46                 return None
47         def get_child_at_index(self,index): 
48                 if index == 0:
49                         return self.valobj.GetChildMemberWithName('ptr_')
50                 if index == 1:
51                         return self.valobj.GetChildMemberWithName('cntrl_').GetChildMemberWithName('shared_owners_')
52                 return None
53
54 def ValueObjectSP_SummaryProvider (valobj,dict):
55         return 'use = ' + str(1 + valobj.GetChildMemberWithName("count").GetValueAsUnsigned())
56
57 def __lldb_init_module(debugger, dict):
58         debugger.HandleCommand('type summary add -x ".*ValueObjectSP" --expand -F sp_cp.ValueObjectSP_SummaryProvider')
59         debugger.HandleCommand('type synthetic add -x ".*ValueObjectSP" -l sp_cp.ValueObjectSP_SyntheticChildrenProvider')
60         debugger.HandleCommand('type summary add -x ".*SP" --expand -F sp_cp.SharedPtr_SummaryProvider')
61         debugger.HandleCommand('type synthetic add -x ".*SP" -l sp_cp.SharedPtr_SyntheticChildrenProvider')