1import lldb 2 3 4class fooSynthProvider: 5 # For testing purposes, we'll keep track of the maximum value of 6 # max_num_children we've been called with. 7 MAX_NUM_CHILDREN_MAX = 0 8 9 @classmethod 10 def reset_max_num_children_max(cls): 11 old_value = fooSynthProvider.MAX_NUM_CHILDREN_MAX 12 fooSynthProvider.MAX_NUM_CHILDREN_MAX = 0 13 return old_value 14 15 def __init__(self, valobj, dict): 16 self.valobj = valobj 17 self.int_type = valobj.GetType().GetBasicType(lldb.eBasicTypeInt) 18 19 def num_children(self, max_num_children): 20 fooSynthProvider.MAX_NUM_CHILDREN_MAX = max( 21 fooSynthProvider.MAX_NUM_CHILDREN_MAX, max_num_children 22 ) 23 return 3 24 25 def get_child_at_index(self, index): 26 if index == 0: 27 child = self.valobj.GetChildMemberWithName("a") 28 if index == 1: 29 child = self.valobj.CreateChildAtOffset("fake_a", 1, self.int_type) 30 if index == 2: 31 child = self.valobj.GetChildMemberWithName("r") 32 return child 33 34 def get_child_index(self, name): 35 if name == "a": 36 return 0 37 if name == "fake_a": 38 return 1 39 return 2 40