Bisect search on sorted linux drivers list
(drivers, key, keyfun, low=0, hi=None)
| 18 | return tuple(map(int, ver.split('.'))) |
| 19 | |
| 20 | def find_driver(drivers, key, keyfun, low=0, hi=None): |
| 21 | """ Bisect search on sorted linux drivers list """ |
| 22 | if hi is None: |
| 23 | hi = len(drivers) |
| 24 | L = hi - low |
| 25 | if L == 0: |
| 26 | return None |
| 27 | elif L == 1: |
| 28 | return drivers[low] if keyfun(drivers[low]) == key else None |
| 29 | else: |
| 30 | middle_key = keyfun(drivers[low + L // 2]) |
| 31 | if middle_key < key: |
| 32 | return find_driver(drivers, key, keyfun, low + L // 2, hi) |
| 33 | elif middle_key > key: |
| 34 | return find_driver(drivers, key, keyfun, low, low + L // 2) |
| 35 | else: |
| 36 | return drivers[low + L // 2] |
| 37 | |
| 38 | def linux_driver_key(driver): |
| 39 | return version_key_fun(driver['version']) |
no outgoing calls
no test coverage detected