Lines Matching defs:self

25     def __init__(self, valobj, dict):
26 self.valobj = valobj
28 def update(self):
30 self.payload = self.valobj.GetChildMemberWithName("_M_payload")
31 self.value = self.payload.GetChildMemberWithName("_M_payload")
32 self.has_value = (
33 self.payload.GetChildMemberWithName("_M_engaged").GetValueAsUnsigned(0)
37 self.has_value = False
40 def num_children(self):
41 return 1 if self.has_value else 0
43 def get_child_index(self, name):
46 def get_child_at_index(self, index):
48 possible_value = self.value.GetChildMemberWithName("_M_value")
51 return self.value.Clone("Value")
61 def __init__(self, valobj, dict):
62 self.valobj = valobj
63 self.count = None
65 def extract_type(self):
66 type = self.valobj.GetType()
73 def update(self):
76 self.count = None
78 self.head = self.valobj.GetChildMemberWithName("_M_h")
79 self.before_begin = self.head.GetChildMemberWithName("_M_before_begin")
80 self.next = self.before_begin.GetChildMemberWithName("_M_nxt")
81 self.data_type = self.extract_type()
82 self.skip_size = self.next.GetType().GetByteSize()
83 self.data_size = self.data_type.GetByteSize()
84 if (not self.data_type.IsValid()) or (not self.next.IsValid()):
85 self.count = 0
87 self.count = 0
90 def get_child_index(self, name):
96 def get_child_at_index(self, index):
101 if index >= self.num_children():
105 current = self.next
110 "[" + str(index) + "]", self.skip_size, self.data_type
117 def num_children(self):
118 if self.count is None:
119 self.count = self.num_children_impl()
120 return self.count
122 def num_children_impl(self):
125 count = self.head.GetChildMemberWithName(
135 def __init__(self, valobj, dict, has_prev):
142 self.valobj = valobj
143 self.count = None
144 self.has_prev = has_prev
145 self.list_capping_size = (
146 self.valobj.GetTarget().GetMaximumNumberOfChildrenToDisplay()
152 def next_node(self, node):
156 def is_valid(self, node):
158 valid = self.value(self.next_node(node)) != self.get_end_of_list_address()
160 logger >> "%s is valid" % str(self.valobj.GetName())
165 def value(self, node):
168 logger >> "synthetic value for {}: {}".format(str(self.valobj.GetName()), value)
173 def has_loop(self):
179 slow = self.next
180 fast1 = self.next
181 fast2 = self.next
182 while self.is_valid(slow):
183 slow_value = self.value(slow)
184 fast1 = self.next_node(fast2)
185 fast2 = self.next_node(fast1)
186 if self.value(fast1) == slow_value or self.value(fast2) == slow_value:
188 slow = self.next_node(slow)
191 def num_children(self):
193 if self.count is None:
195 count_child = self.node.GetChildMemberWithName("_M_data")
197 self.count = count_child.GetValueAsUnsigned(0)
198 if self.count is None:
199 self.count = self.num_children_impl()
200 return self.count
202 def num_children_impl(self):
207 next_val = self.next.GetValueAsUnsigned(0)
210 if self.has_loop():
212 if self.has_prev:
213 prev_val = self.prev.GetValueAsUnsigned(0)
216 if next_val == self.node_address:
221 current = self.next
224 != self.get_end_of_list_address()
230 if size >= self.list_capping_size:
238 def get_child_index(self, name):
245 def get_child_at_index(self, index):
250 if index >= self.num_children():
254 current = self.next
262 (2 if self.has_prev else 1) * current.GetType().GetByteSize(),
263 self.data_type,
268 def extract_type(self):
270 list_type = self.valobj.GetType().GetUnqualifiedType()
277 def update(self):
281 self.count = None
283 self.impl = self.valobj.GetChildMemberWithName("_M_impl")
284 self.data_type = self.extract_type()
285 if (not self.data_type.IsValid()) or (not self.impl.IsValid()):
286 self.count = 0
287 elif not self.updateNodes():
288 self.count = 0
290 self.data_size = self.data_type.GetByteSize()
292 self.count = 0
296 Method is used to extract the list pointers into the variables (e.g self.node, self.next, and optionally to self.prev)
301 def updateNodes(self):
304 def has_children(self):
312 def get_end_of_list_address(self):
317 def __init__(self, valobj, dict):
321 def updateNodes(self):
322 self.node = self.impl.GetChildMemberWithName("_M_head")
323 self.next = self.node.GetChildMemberWithName("_M_next")
324 if (not self.node.IsValid()) or (not self.next.IsValid()):
328 def get_end_of_list_address(self):
333 def __init__(self, valobj, dict):
337 def updateNodes(self):
338 self.node_address = self.valobj.AddressOf().GetValueAsUnsigned(0)
339 self.node = self.impl.GetChildMemberWithName("_M_node")
340 self.prev = self.node.GetChildMemberWithName("_M_prev")
341 self.next = self.node.GetChildMemberWithName("_M_next")
343 self.node_address == 0
344 or (not self.node.IsValid())
345 or (not self.next.IsValid())
346 or (not self.prev.IsValid())
351 def get_end_of_list_address(self):
352 return self.node_address
357 def __init__(self, valobj):
358 self.valobj = valobj
359 self.count = None
361 def num_children(self):
362 if self.count is None:
363 self.count = self.num_children_impl()
364 return self.count
366 def num_children_impl(self):
368 start_val = self.start.GetValueAsUnsigned(0)
369 finish_val = self.finish.GetValueAsUnsigned(0)
370 end_val = self.end.GetValueAsUnsigned(0)
393 if (num_children % self.data_size) != 0:
396 num_children = num_children // self.data_size
401 def get_child_at_index(self, index):
406 if index >= self.num_children():
409 offset = index * self.data_size
410 return self.start.CreateChildAtOffset(
411 "[" + str(index) + "]", offset, self.data_type
416 def update(self):
419 self.count = None
421 impl = self.valobj.GetChildMemberWithName("_M_impl")
422 self.start = impl.GetChildMemberWithName("_M_start")
423 self.finish = impl.GetChildMemberWithName("_M_finish")
424 self.end = impl.GetChildMemberWithName("_M_end_of_storage")
425 self.data_type = self.start.GetType().GetPointeeType()
426 self.data_size = self.data_type.GetByteSize()
430 self.start.IsValid()
431 and self.finish.IsValid()
432 and self.end.IsValid()
433 and self.data_type.IsValid()
435 self.count = None
437 self.count = 0
439 self.count = 0
443 def __init__(self, valobj, bool_type):
444 self.valobj = valobj
445 self.bool_type = bool_type
446 self.valid = False
448 def num_children(self):
449 if self.valid:
450 start = self.start_p.GetValueAsUnsigned(0)
451 finish = self.finish_p.GetValueAsUnsigned(0)
452 offset = self.offset.GetValueAsUnsigned(0)
457 def get_child_at_index(self, index):
458 if index >= self.num_children():
460 element_type = self.start_p.GetType().GetPointeeType()
464 element = self.start_p.CreateChildAtOffset(
468 return self.valobj.CreateBoolValue("[%d]" % index, bool(bit))
470 def update(self):
472 m_impl = self.valobj.GetChildMemberWithName("_M_impl")
473 self.m_start = m_impl.GetChildMemberWithName("_M_start")
474 self.m_finish = m_impl.GetChildMemberWithName("_M_finish")
475 self.start_p = self.m_start.GetChildMemberWithName("_M_p")
476 self.finish_p = self.m_finish.GetChildMemberWithName("_M_p")
477 self.offset = self.m_finish.GetChildMemberWithName("_M_offset")
479 self.offset.IsValid()
480 and self.start_p.IsValid()
481 and self.finish_p.IsValid()
483 self.valid = True
485 self.valid = False
487 self.valid = False
490 def __init__(self, valobj, dict):
494 self.impl = self.StdVBoolImplementation(valobj, first_template_arg_type)
496 self.impl = self.StdVectorImplementation(valobj)
501 def num_children(self):
502 return self.impl.num_children()
504 def get_child_index(self, name):
510 def get_child_at_index(self, index):
511 return self.impl.get_child_at_index(index)
513 def update(self):
514 return self.impl.update()
516 def has_children(self):
526 def __init__(self, valobj, dict):
528 self.valobj = valobj
529 self.count = None
530 self.kind = self.get_object_kind(valobj)
534 + self.kind
539 def get_object_kind(self, valobj):
553 def fixup_class_name(self, class_name):
577 def update(self):
581 self.count = None
586 self.garbage = False
587 self.Mt = self.valobj.GetChildMemberWithName("_M_t")
588 self.Mimpl = self.Mt.GetChildMemberWithName("_M_impl")
589 self.Mheader = self.Mimpl.GetChildMemberWithName("_M_header")
590 if not self.Mheader.IsValid():
591 self.count = 0
593 map_type = self.valobj.GetType()
601 self.data_type = allocator_type.GetTemplateArgumentType(0)
602 if not self.data_type:
606 rep_type = self.valobj.GetChildMemberWithName("_M_t").GetType()
607 self.data_type = (
612 self.Mroot = self.Mheader.GetChildMemberWithName("_M_parent")
613 self.data_size = self.data_type.GetByteSize()
614 self.skip_size = self.Mheader.GetType().GetByteSize()
616 self.count = 0
619 def num_children(self):
621 if self.count is None:
622 self.count = self.num_children_impl()
623 return self.count
625 def num_children_impl(self):
628 root_ptr_val = self.node_ptr_value(self.Mroot)
631 count = self.Mimpl.GetChildMemberWithName(
639 def get_child_index(self, name):
646 def get_child_at_index(self, index):
651 if index >= self.num_children():
653 if self.garbage:
658 current = self.left(self.Mheader)
660 current = self.increment_node(current)
664 "[" + str(index) + "]", self.skip_size, self.data_type
670 def node_ptr_value(self, node):
674 def right(self, node):
678 def left(self, node):
682 def parent(self, node):
687 def increment_node(self, node):
689 max_steps = self.num_children()
690 if self.node_ptr_value(self.right(node)) != 0:
691 x = self.right(node)
693 while self.node_ptr_value(self.left(x)) != 0:
694 x = self.left(x)
698 self.garbage = True
703 y = self.parent(x)
705 while self.node_ptr_value(x) == self.node_ptr_value(self.right(y)):
707 y = self.parent(y)
711 self.garbage = True
713 if self.node_ptr_value(self.right(x)) != self.node_ptr_value(y):
717 def has_children(self):
725 def __init__(self, valobj, d):
726 self.valobj = valobj
727 self.pointer_size = self.valobj.GetProcess().GetAddressByteSize()
728 self.count = None
729 self.block_size = -1
730 self.element_size = -1
731 self.find_block_size()
733 def find_block_size(self):
736 self.element_type = self.valobj.GetType().GetTemplateArgumentType(0)
737 if not self.element_type.IsValid():
739 self.element_size = self.element_type.GetByteSize()
747 if self.element_size < 512:
748 self.block_size = 512 // self.element_size
750 self.block_size = 1
752 def num_children(self):
753 if self.count is None:
755 return self.count
757 def has_children(self):
760 def get_child_index(self, name):
766 def get_child_at_index(self, index):
767 if index < 0 or self.count is None:
769 if index >= self.num_children():
775 if index < self.first_node_size:
776 # The following statement is valid because self.first_elem is the pointer
778 return self.first_elem.CreateChildAtOffset(
779 name, index * self.element_size, self.element_type
784 i, j = divmod(index - self.first_node_size, self.block_size)
787 node = self.start_node.CreateChildAtOffset(
789 (1 + i) * self.valobj.GetProcess().GetAddressByteSize(),
790 self.element_type.GetPointerType(),
793 name, j * self.element_size, self.element_type
799 def update(self):
801 self.count = 0
813 if self.block_size < 0 or self.element_size < 0:
818 impl = self.valobj.GetChildMemberWithName("_M_impl")
821 self.start = impl.GetChildMemberWithName("_M_start")
822 self.start_node = self.start.GetChildMemberWithName("_M_node")
823 first_node_address = self.start_node.GetValueAsUnsigned(0)
824 first_node_last_elem = self.start.GetChildMemberWithName(
827 self.first_elem = self.start.GetChildMemberWithName("_M_cur")
828 first_node_first_elem = self.first_elem.GetValueAsUnsigned(0)
855 self.first_node_size = (
857 ) // self.element_size
858 count += self.first_node_size
860 self.first_node_size = (
862 ) // self.element_size
863 count += self.first_node_size
872 ) // self.element_size
877 ) // self.valobj.GetProcess().GetAddressByteSize()
878 count += self.block_size * num_intermediate_nodes
879 self.count = count
918 def __init__(self, valobj, dict):
919 self.raw_obj = valobj.GetNonSyntheticValue()
920 self.is_valid = False
921 self.index = None
922 self.data_obj = None
924 def update(self):
926 self.index = self.raw_obj.GetChildMemberWithName(
929 self.is_valid = self.index != -1
930 self.data_obj = self.raw_obj.GetChildMemberWithName("_M_u")
932 self.is_valid = False
935 def has_children(self):
938 def num_children(self):
939 return 1 if self.is_valid else 0
941 def get_child_index(self, name):
944 def get_child_at_index(self, index):
945 if not self.is_valid:
948 node = self.data_obj
949 while cur < self.index: