]> sigrok.org Git - libsigrok.git/blobdiff - bindings/python/sigrok/core/classes.py
python: Add conversion functions to/from GSList *
[libsigrok.git] / bindings / python / sigrok / core / classes.py
index a2b3d809de0c257eae9e6c88f1ffa84ebf62b02e..14781b8c031f0ec4d40a676abf74c88c4e89b7dd 100644 (file)
@@ -1,5 +1,5 @@
 ##
-## This file is part of the sigrok project.
+## This file is part of the libsigrok project.
 ##
 ## Copyright (C) 2013 Martin Ling <martin-sigrok@earth.li>
 ##
@@ -69,8 +69,10 @@ def python_to_gvariant(value):
         return g_variant_new_string(value)
     if isinstance(value, Fraction):
         array = new_gvariant_ptr_array(2)
-        gvariant_ptr_array_setitem(array, 0, value.numerator)
-        gvariant_ptr_array_setitem(array, 1, value.denominator)
+        gvariant_ptr_array_setitem(array, 0,
+            g_variant_new_uint64(value.numerator))
+        gvariant_ptr_array_setitem(array, 1,
+            g_variant_new_uint64(value.denominator))
         result = g_variant_new_tuple(array, 2)
         delete_gvariant_ptr_array(array)
         return result
@@ -123,14 +125,9 @@ class Driver(object):
         if not self._initialized:
             check(sr_driver_init(self.context.struct, self.struct))
             self._initialized = True
-        devices = []
         device_list = sr_driver_scan(self.struct, None)
-        device_list_item = device_list
-        while device_list_item:
-            ptr = device_list_item.data
-            device_ptr = gpointer_to_sr_dev_inst_ptr(ptr)
-            devices.append(Device(self, device_ptr))
-            device_list_item = device_list_item.next
+        devices = [Device(self, gpointer_to_sr_dev_inst_ptr(ptr))
+            for ptr in gslist_to_python(device_list)]
         g_slist_free(device_list)
         return devices