forked from OSchip/llvm-project
Change the SBValue.linked_list_iter() to treat the value object as a homogeneous linked list data structure
where an empty linked list is represented as a value object with a NULL value, instead of a special value object which 'points' to NULL. Also modifies the test case to comply. rdar://problem/9933692 llvm-svn: 137289
This commit is contained in:
parent
3c24a17c7c
commit
9c1b703ac4
|
@ -95,7 +95,7 @@ linked_list_iter_def = '''
|
|||
Return True if val is invalid or it corresponds to a null pointer.
|
||||
Otherwise, return False.
|
||||
"""
|
||||
if not val or int(val.GetValue(), 0) == 0:
|
||||
if not val or val.GetValueAsUnsigned() == 0:
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
@ -127,8 +127,10 @@ linked_list_iter_def = '''
|
|||
for t in task_head.linked_list_iter('next'):
|
||||
print t
|
||||
"""
|
||||
if end_of_list_test(self):
|
||||
return
|
||||
item = self
|
||||
try:
|
||||
item = self.GetChildMemberWithName(next_item_name)
|
||||
while not end_of_list_test(item):
|
||||
yield item
|
||||
# Prepare for the next iteration.
|
||||
|
|
|
@ -21,14 +21,14 @@ public:
|
|||
|
||||
int main (int argc, char const *argv[])
|
||||
{
|
||||
Task *task_head = new Task(-1, NULL);
|
||||
Task *task_head = NULL;
|
||||
Task *task1 = new Task(1, NULL);
|
||||
Task *task2 = new Task(2, NULL);
|
||||
Task *task3 = new Task(3, NULL); // Orphaned.
|
||||
Task *task4 = new Task(4, NULL);
|
||||
Task *task5 = new Task(5, NULL);
|
||||
|
||||
task_head->next = task1;
|
||||
task_head = task1;
|
||||
task1->next = task2;
|
||||
task2->next = task4;
|
||||
task4->next = task5;
|
||||
|
@ -43,7 +43,7 @@ int main (int argc, char const *argv[])
|
|||
printf("We have a total number of %d tasks\n", total);
|
||||
|
||||
// This corresponds to an empty task list.
|
||||
Task *empty_task_head = new Task(-1, NULL);
|
||||
Task *empty_task_head = NULL;
|
||||
|
||||
return 0; // Break at this line
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue