40 lines · python
1import lldb2 3 4class fooSynthProvider:5 # For testing purposes, we'll keep track of the maximum value of6 # max_num_children we've been called with.7 MAX_NUM_CHILDREN_MAX = 08 9 @classmethod10 def reset_max_num_children_max(cls):11 old_value = fooSynthProvider.MAX_NUM_CHILDREN_MAX12 fooSynthProvider.MAX_NUM_CHILDREN_MAX = 013 return old_value14 15 def __init__(self, valobj, dict):16 self.valobj = valobj17 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_children22 )23 return 324 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 child33 34 def get_child_index(self, name):35 if name == "a":36 return 037 if name == "fake_a":38 return 139 return 240