OLD | NEW |
---|---|
1 # Copyright (C) 2012 Apple. All rights reserved. | 1 # Copyright (C) 2012 Apple. All rights reserved. |
2 # | 2 # |
3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
4 # modification, are permitted provided that the following conditions | 4 # modification, are permitted provided that the following conditions |
5 # are met: | 5 # are met: |
6 # 1. Redistributions of source code must retain the above copyright | 6 # 1. Redistributions of source code must retain the above copyright |
7 # notice, this list of conditions and the following disclaimer. | 7 # notice, this list of conditions and the following disclaimer. |
8 # 2. Redistributions in binary form must reproduce the above copyright | 8 # 2. Redistributions in binary form must reproduce the above copyright |
9 # notice, this list of conditions and the following disclaimer in the | 9 # notice, this list of conditions and the following disclaimer in the |
10 # documentation and/or other materials provided with the distribution. | 10 # documentation and/or other materials provided with the distribution. |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
49 provider = WTFStringProvider(valobj, dict) | 49 provider = WTFStringProvider(valobj, dict) |
50 return "{ length = %d, contents = '%s' }" % (provider.get_length(), provider .to_string()) | 50 return "{ length = %d, contents = '%s' }" % (provider.get_length(), provider .to_string()) |
51 | 51 |
52 | 52 |
53 def WTFStringImpl_SummaryProvider(valobj, dict): | 53 def WTFStringImpl_SummaryProvider(valobj, dict): |
54 provider = WTFStringImplProvider(valobj, dict) | 54 provider = WTFStringImplProvider(valobj, dict) |
55 return "{ length = %d, is8bit = %d, contents = '%s' }" % (provider.get_lengt h(), provider.is_8bit(), provider.to_string()) | 55 return "{ length = %d, is8bit = %d, contents = '%s' }" % (provider.get_lengt h(), provider.is_8bit(), provider.to_string()) |
56 | 56 |
57 | 57 |
58 def WTFAtomicString_SummaryProvider(valobj, dict): | 58 def WTFAtomicString_SummaryProvider(valobj, dict): |
59 return WTFString_SummaryProvider(valobj.GetChildMemberWithName('m_string'), dict) | 59 return WTFString_SummaryProvider(valobj.GetChildMemberWithName('string_'), d ict) |
60 | 60 |
61 | 61 |
62 def WTFVector_SummaryProvider(valobj, dict): | 62 def WTFVector_SummaryProvider(valobj, dict): |
63 provider = WTFVectorProvider(valobj, dict) | 63 provider = WTFVectorProvider(valobj, dict) |
64 return "{ size = %d, capacity = %d }" % (provider.size, provider.capacity) | 64 return "{ size = %d, capacity = %d }" % (provider.size, provider.capacity) |
65 | 65 |
66 | 66 |
67 def WTFHashTable_SummaryProvider(valobj, dict): | 67 def WTFHashTable_SummaryProvider(valobj, dict): |
68 provider = WTFHashTableProvider(valobj, dict) | 68 provider = WTFHashTableProvider(valobj, dict) |
69 return "{ tableSize = %d, keyCount = %d }" % (provider.tableSize(), provider .keyCount()) | 69 return "{ tableSize = %d, keyCount = %d }" % (provider.tableSize(), provider .keyCount()) |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
128 out_string = out_string + unichr(char_value) | 128 out_string = out_string + unichr(char_value) |
129 | 129 |
130 return out_string.encode('utf-8') | 130 return out_string.encode('utf-8') |
131 | 131 |
132 | 132 |
133 class WTFStringImplProvider: | 133 class WTFStringImplProvider: |
134 def __init__(self, valobj, dict): | 134 def __init__(self, valobj, dict): |
135 self.valobj = valobj | 135 self.valobj = valobj |
136 | 136 |
137 def get_length(self): | 137 def get_length(self): |
138 return self.valobj.GetChildMemberWithName('m_length').GetValueAsUnsigned (0) | 138 return self.valobj.GetChildMemberWithName('length_').GetValueAsUnsigned( 0) |
139 | 139 |
140 def get_data8(self): | 140 def get_data8(self): |
141 # FIXME: This should be the equivalent of reinterpret_cast<LChar*>(self. valobj + 1) | |
jochen (gone - plz use gerrit)
2017/04/10 11:47:33
thakis, any idea how to do this?
| |
141 return self.valobj.GetChildAtIndex(2).GetChildMemberWithName('m_data8') | 142 return self.valobj.GetChildAtIndex(2).GetChildMemberWithName('m_data8') |
142 | 143 |
143 def get_data16(self): | 144 def get_data16(self): |
145 # FIXME: This should be the equivalent of reinterpret_cast<UChar*>(self. valobj + 1) | |
144 return self.valobj.GetChildAtIndex(2).GetChildMemberWithName('m_data16') | 146 return self.valobj.GetChildAtIndex(2).GetChildMemberWithName('m_data16') |
145 | 147 |
146 def to_string(self): | 148 def to_string(self): |
147 error = lldb.SBError() | 149 error = lldb.SBError() |
148 if self.is_8bit(): | 150 if self.is_8bit(): |
149 return lstring_to_string(self.get_data8(), error, self.get_length()) | 151 return lstring_to_string(self.get_data8(), error, self.get_length()) |
150 return ustring_to_string(self.get_data16(), error, self.get_length()) | 152 return ustring_to_string(self.get_data16(), error, self.get_length()) |
151 | 153 |
152 def is_8bit(self): | 154 def is_8bit(self): |
153 # FIXME: find a way to access WTF::StringImpl::s_hashFlag8BitBuffer | 155 return self.valobj.GetChildMemberWithName('is8_bit_') |
154 return bool(self.valobj.GetChildMemberWithName('m_hashAndFlags').GetValu eAsUnsigned(0) \ | |
155 & 1 << 6) | |
156 | 156 |
157 | 157 |
158 class WTFStringProvider: | 158 class WTFStringProvider: |
159 def __init__(self, valobj, dict): | 159 def __init__(self, valobj, dict): |
160 self.valobj = valobj | 160 self.valobj = valobj |
161 | 161 |
162 def stringimpl(self): | 162 def stringimpl(self): |
163 impl_ptr = self.valobj.GetChildMemberWithName('m_impl').GetChildMemberWi thName('m_ptr') | 163 impl_ptr = self.valobj.GetChildMemberWithName('impl_').GetChildMemberWit hName('ptr_') |
164 return WTFStringImplProvider(impl_ptr, dict) | 164 return WTFStringImplProvider(impl_ptr, dict) |
165 | 165 |
166 def get_length(self): | 166 def get_length(self): |
167 impl = self.stringimpl() | 167 impl = self.stringimpl() |
168 if not impl: | 168 if not impl: |
169 return 0 | 169 return 0 |
170 return impl.get_length() | 170 return impl.get_length() |
171 | 171 |
172 def to_string(self): | 172 def to_string(self): |
173 impl = self.stringimpl() | 173 impl = self.stringimpl() |
174 if not impl: | 174 if not impl: |
175 return u"" | 175 return u"" |
176 return impl.to_string() | 176 return impl.to_string() |
177 | 177 |
178 | 178 |
179 class WebCoreLayoutUnitProvider: | 179 class WebCoreLayoutUnitProvider: |
180 "Print a WebCore::LayoutUnit" | 180 "Print a WebCore::LayoutUnit" |
181 def __init__(self, valobj, dict): | 181 def __init__(self, valobj, dict): |
182 self.valobj = valobj | 182 self.valobj = valobj |
183 | 183 |
184 def to_string(self): | 184 def to_string(self): |
185 return "%gpx" % (self.valobj.GetChildMemberWithName('m_value').GetValueA sUnsigned(0) / 64.0) | 185 return "%gpx" % (self.valobj.GetChildMemberWithName('value_').GetValueAs Unsigned(0) / 64.0) |
186 | 186 |
187 | 187 |
188 class WebCoreLayoutSizeProvider: | 188 class WebCoreLayoutSizeProvider: |
189 "Print a WebCore::LayoutSize" | 189 "Print a WebCore::LayoutSize" |
190 def __init__(self, valobj, dict): | 190 def __init__(self, valobj, dict): |
191 self.valobj = valobj | 191 self.valobj = valobj |
192 | 192 |
193 def get_width(self): | 193 def get_width(self): |
194 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('m_w idth'), dict).to_string() | 194 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('wid th_'), dict).to_string() |
195 | 195 |
196 def get_height(self): | 196 def get_height(self): |
197 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('m_h eight'), dict).to_string() | 197 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('hei ght_'), dict).to_string() |
198 | 198 |
199 | 199 |
200 class WebCoreLayoutPointProvider: | 200 class WebCoreLayoutPointProvider: |
201 "Print a WebCore::LayoutPoint" | 201 "Print a WebCore::LayoutPoint" |
202 def __init__(self, valobj, dict): | 202 def __init__(self, valobj, dict): |
203 self.valobj = valobj | 203 self.valobj = valobj |
204 | 204 |
205 def get_x(self): | 205 def get_x(self): |
206 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('m_x '), dict).to_string() | 206 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('x_' ), dict).to_string() |
207 | 207 |
208 def get_y(self): | 208 def get_y(self): |
209 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('m_y '), dict).to_string() | 209 return WebCoreLayoutUnitProvider(self.valobj.GetChildMemberWithName('y_' ), dict).to_string() |
210 | 210 |
211 | 211 |
212 class WTFVectorProvider: | 212 class WTFVectorProvider: |
213 def __init__(self, valobj, internal_dict): | 213 def __init__(self, valobj, internal_dict): |
214 self.valobj = valobj | 214 self.valobj = valobj |
215 self.update() | 215 self.update() |
216 | 216 |
217 def num_children(self): | 217 def num_children(self): |
218 return self.size + 3 | 218 return self.size + 3 |
219 | 219 |
220 def get_child_index(self, name): | 220 def get_child_index(self, name): |
221 if name == "m_size": | 221 if name == "size_": |
222 return self.size | 222 return self.size |
223 elif name == "m_capacity": | 223 elif name == "capacity_": |
224 return self.size + 1 | 224 return self.size + 1 |
225 elif name == "m_buffer": | 225 elif name == "buffer_": |
226 return self.size + 2 | 226 return self.size + 2 |
227 else: | 227 else: |
228 return int(name.lstrip('[').rstrip(']')) | 228 return int(name.lstrip('[').rstrip(']')) |
229 | 229 |
230 def get_child_at_index(self, index): | 230 def get_child_at_index(self, index): |
231 if index == self.size: | 231 if index == self.size: |
232 return self.valobj.GetChildMemberWithName("m_size") | 232 return self.valobj.GetChildMemberWithName("size_") |
233 elif index == self.size + 1: | 233 elif index == self.size + 1: |
234 return self.valobj.GetChildMemberWithName("m_capacity") | 234 return self.valobj.GetChildMemberWithName("capacity_") |
235 elif index == self.size + 2: | 235 elif index == self.size + 2: |
236 return self.buffer | 236 return self.buffer |
237 elif index < self.size: | 237 elif index < self.size: |
238 offset = index * self.data_size | 238 offset = index * self.data_size |
239 child = self.buffer.CreateChildAtOffset('[' + str(index) + ']', offs et, self.data_type) | 239 child = self.buffer.CreateChildAtOffset('[' + str(index) + ']', offs et, self.data_type) |
240 return child | 240 return child |
241 else: | 241 else: |
242 return None | 242 return None |
243 | 243 |
244 def update(self): | 244 def update(self): |
245 self.buffer = self.valobj.GetChildMemberWithName('m_buffer') | 245 self.buffer = self.valobj.GetChildMemberWithName('buffer_') |
246 self.size = self.valobj.GetChildMemberWithName('m_size').GetValueAsUnsig ned(0) | 246 self.size = self.valobj.GetChildMemberWithName('size_').GetValueAsUnsign ed(0) |
247 self.capacity = self.buffer.GetChildMemberWithName('m_capacity').GetValu eAsUnsigned(0) | 247 self.capacity = self.buffer.GetChildMemberWithName('capacity_').GetValue AsUnsigned(0) |
248 self.data_type = self.buffer.GetType().GetPointeeType() | 248 self.data_type = self.buffer.GetType().GetPointeeType() |
249 self.data_size = self.data_type.GetByteSize() | 249 self.data_size = self.data_type.GetByteSize() |
250 | 250 |
251 def has_children(self): | 251 def has_children(self): |
252 return True | 252 return True |
253 | 253 |
254 | 254 |
255 class WTFHashTableProvider: | 255 class WTFHashTableProvider: |
256 def __init__(self, valobj, internal_dict): | 256 def __init__(self, valobj, internal_dict): |
257 self.valobj = valobj | 257 self.valobj = valobj |
258 self.update() | 258 self.update() |
259 | 259 |
260 def num_children(self): | 260 def num_children(self): |
261 return self.tableSize() + 5 | 261 return self.tableSize() + 5 |
262 | 262 |
263 def get_child_index(self, name): | 263 def get_child_index(self, name): |
264 if name == "m_table": | 264 if name == "table_": |
265 return self.tableSize() | 265 return self.tableSize() |
266 elif name == "m_tableSize": | 266 elif name == "table_size_": |
267 return self.tableSize() + 1 | 267 return self.tableSize() + 1 |
268 elif name == "m_tableSizeMask": | 268 elif name == "table_size_mask_": |
269 return self.tableSize() + 2 | 269 return self.tableSize() + 2 |
270 elif name == "m_keyCount": | 270 elif name == "key_count_": |
271 return self.tableSize() + 3 | 271 return self.tableSize() + 3 |
272 elif name == "m_deletedCount": | 272 elif name == "deleted_count_": |
273 return self.tableSize() + 4 | 273 return self.tableSize() + 4 |
274 else: | 274 else: |
275 return int(name.lstrip('[').rstrip(']')) | 275 return int(name.lstrip('[').rstrip(']')) |
276 | 276 |
277 def get_child_at_index(self, index): | 277 def get_child_at_index(self, index): |
278 if index == self.tableSize(): | 278 if index == self.tableSize(): |
279 return self.valobj.GetChildMemberWithName('m_table') | 279 return self.valobj.GetChildMemberWithName('table_') |
280 elif index == self.tableSize() + 1: | 280 elif index == self.tableSize() + 1: |
281 return self.valobj.GetChildMemberWithName('m_tableSize') | 281 return self.valobj.GetChildMemberWithName('table_size_') |
282 elif index == self.tableSize() + 2: | 282 elif index == self.tableSize() + 2: |
283 return self.valobj.GetChildMemberWithName('m_tableSizeMask') | 283 return self.valobj.GetChildMemberWithName('table_size_mask_') |
284 elif index == self.tableSize() + 3: | 284 elif index == self.tableSize() + 3: |
285 return self.valobj.GetChildMemberWithName('m_keyCount') | 285 return self.valobj.GetChildMemberWithName('key_count_') |
286 elif index == self.tableSize() + 4: | 286 elif index == self.tableSize() + 4: |
287 return self.valobj.GetChildMemberWithName('m_deletedCount') | 287 return self.valobj.GetChildMemberWithName('deleted_count_') |
288 elif index < self.tableSize(): | 288 elif index < self.tableSize(): |
289 table = self.valobj.GetChildMemberWithName('m_table') | 289 table = self.valobj.GetChildMemberWithName('table_') |
290 return table.CreateChildAtOffset('[' + str(index) + ']', index * sel f.data_size, self.data_type) | 290 return table.CreateChildAtOffset('[' + str(index) + ']', index * sel f.data_size, self.data_type) |
291 else: | 291 else: |
292 return None | 292 return None |
293 | 293 |
294 def tableSize(self): | 294 def tableSize(self): |
295 return self.valobj.GetChildMemberWithName('m_tableSize').GetValueAsUnsig ned(0) | 295 return self.valobj.GetChildMemberWithName('table_size_').GetValueAsUnsig ned(0) |
296 | 296 |
297 def keyCount(self): | 297 def keyCount(self): |
298 return self.valobj.GetChildMemberWithName('m_keyCount').GetValueAsUnsign ed(0) | 298 return self.valobj.GetChildMemberWithName('key_count_').GetValueAsUnsign ed(0) |
299 | 299 |
300 def update(self): | 300 def update(self): |
301 self.data_type = self.valobj.GetType().GetTemplateArgumentType(0) | 301 self.data_type = self.valobj.GetType().GetTemplateArgumentType(0) |
302 self.data_size = self.data_type.GetByteSize() | 302 self.data_size = self.data_type.GetByteSize() |
303 | 303 |
304 def has_children(self): | 304 def has_children(self): |
305 return True | 305 return True |
OLD | NEW |