summaryrefslogtreecommitdiffstats
path: root/lldb/examples/summaries/synth.py
diff options
context:
space:
mode:
Diffstat (limited to 'lldb/examples/summaries/synth.py')
-rw-r--r--lldb/examples/summaries/synth.py117
1 files changed, 63 insertions, 54 deletions
diff --git a/lldb/examples/summaries/synth.py b/lldb/examples/summaries/synth.py
index af5230997d8..23f02d9b50f 100644
--- a/lldb/examples/summaries/synth.py
+++ b/lldb/examples/summaries/synth.py
@@ -1,57 +1,66 @@
import lldb
+
class PythonObjectSyntheticChildProvider(object):
- def __init__(self, value, internal_dict):
- self.value = value
- self.values = self.make_children()
- self.built_values = {}
- self.bo = self.value.target.byte_order
- self.ps = self.value.target.addr_size
-
- def make_children(self):
- pass
-
- def num_children(self):
- return len(self.values)
-
- def get_child_index(self, name):
- i = 0
- for N, value in self.values:
- if N == name: return i
- i += 1
- return None
-
- def update(self):
- pass
-
- def has_children(self):
- return len(self.values) > 0
-
- def gen_child(self, name, value):
- data = None; type = None
- if isinstance(value, int):
- data = lldb.SBData.CreateDataFromUInt32Array(self.bo, self.ps, [value])
- type = self.value.target.GetBasicType(lldb.eBasicTypeInt)
- elif isinstance(value, long):
- data = lldb.SBData.CreateDataFromUInt64Array(self.bo, self.ps, [value])
- type = self.value.target.GetBasicType(lldb.eBasicTypeLong)
- elif isinstance(value, float):
- data = lldb.SBData.CreateDataFromDoubleArray(self.bo, self.ps, [value])
- type = self.value.target.GetBasicType(lldb.eBasicTypeDouble)
- elif isinstance(value, str):
- data = lldb.SBData.CreateDataFromCString(self.bo, self.ps, value)
- type = self.value.target.GetBasicType(lldb.eBasicTypeChar).GetArrayType(len(value))
- if (data is not None) and (type is not None):
- return self.value.CreateValueFromData(name, data, type)
- return None
-
- def get_child_at_index(self, index):
- if index in self.built_values:
- return self.built_values[index]
-
- bv = None
-
- name, value = self.values[index]
- bv = self.gen_child(name, value)
- self.built_values[index] = bv
- return bv
+
+ def __init__(self, value, internal_dict):
+ self.value = value
+ self.values = self.make_children()
+ self.built_values = {}
+ self.bo = self.value.target.byte_order
+ self.ps = self.value.target.addr_size
+
+ def make_children(self):
+ pass
+
+ def num_children(self):
+ return len(self.values)
+
+ def get_child_index(self, name):
+ i = 0
+ for N, value in self.values:
+ if N == name:
+ return i
+ i += 1
+ return None
+
+ def update(self):
+ pass
+
+ def has_children(self):
+ return len(self.values) > 0
+
+ def gen_child(self, name, value):
+ data = None
+ type = None
+ if isinstance(value, int):
+ data = lldb.SBData.CreateDataFromUInt32Array(
+ self.bo, self.ps, [value])
+ type = self.value.target.GetBasicType(lldb.eBasicTypeInt)
+ elif isinstance(value, long):
+ data = lldb.SBData.CreateDataFromUInt64Array(
+ self.bo, self.ps, [value])
+ type = self.value.target.GetBasicType(lldb.eBasicTypeLong)
+ elif isinstance(value, float):
+ data = lldb.SBData.CreateDataFromDoubleArray(
+ self.bo, self.ps, [value])
+ type = self.value.target.GetBasicType(lldb.eBasicTypeDouble)
+ elif isinstance(value, str):
+ data = lldb.SBData.CreateDataFromCString(self.bo, self.ps, value)
+ type = self.value.target.GetBasicType(
+ lldb.eBasicTypeChar).GetArrayType(
+ len(value))
+ if (data is not None) and (type is not None):
+ return self.value.CreateValueFromData(name, data, type)
+ return None
+
+ def get_child_at_index(self, index):
+ if index in self.built_values:
+ return self.built_values[index]
+
+ bv = None
+
+ name, value = self.values[index]
+ bv = self.gen_child(name, value)
+ self.built_values[index] = bv
+ return bv
OpenPOWER on IntegriCloud