We can do better with the SBValue.linked_list_iter() API by supplying a default
end of list test function as __eol_test__.

The simple example can be reduced to:

    for t in task_head.linked_list_iter('next'):
        print t

Modify the test program to exercise the API for both cases: supplying or not
supplying an end of list test function.


git-svn-id: https://llvm.org/svn/llvm-project/llvdb/trunk@136144 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/scripts/Python/modify-python-lldb.py b/scripts/Python/modify-python-lldb.py
index 3a784a6..3cd3126 100644
--- a/scripts/Python/modify-python-lldb.py
+++ b/scripts/Python/modify-python-lldb.py
@@ -89,10 +89,21 @@
 # which takes an SBValue and returns True if EOL is reached and False if not.
 #
 linked_list_iter_def = '''
+    def __eol_test__(val):
+        """Default function for end of list test takes an SBValue object.
+
+        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:
+            return True
+        else:
+            return False
+
     # ==================================================
     # Iterator for lldb.SBValue treated as a linked list
     # ==================================================
-    def linked_list_iter(self, next_item_name, end_of_list_test):
+    def linked_list_iter(self, next_item_name, end_of_list_test=__eol_test__):
         """Generator adaptor to support iteration for SBValue as a linked list.
 
         linked_list_iter() is a special purpose iterator to treat the SBValue as
@@ -101,18 +112,11 @@
         end-of-list test function which takes an SBValue for an item and returns
         True if EOL is reached and False if not.
 
+        The end_of_list_test arg, if omitted, defaults to the __eol_test__
+        function above.
+
         For example,
 
-        def eol(val):
-            \'\'\'Test function to determine end of list.\'\'\'
-            # End of list is reached if either the value object is invalid
-            # or it corresponds to a null pointer.
-            if not val or int(val.GetValue(), 16) == 0:
-                return True
-
-            # Otherwise, return False.
-            return False
-
         # Get Frame #0.
         ...
 
@@ -120,7 +124,7 @@
         task_head = frame0.FindVariable('task_head')
         ...
 
-        for t in task_head.linked_list_iter('next', eol):
+        for t in task_head.linked_list_iter('next'):
             print t
         """
         try: