Zachary Turner | 5d3b3c7 | 2016-02-18 18:50:02 +0000 | [diff] [blame] | 1 | """ This module represents an abstraction of an lldb target / host platform. """ |
| 2 | |
| 3 | from __future__ import absolute_import |
| 4 | |
| 5 | # System modules |
| 6 | import itertools |
| 7 | |
| 8 | # Third-party modules |
| 9 | import six |
| 10 | |
| 11 | # LLDB modules |
| 12 | import use_lldb_suite |
| 13 | import lldb |
| 14 | |
| 15 | windows, linux, macosx, darwin, ios, darwin_all, freebsd, netbsd, bsd_all, android = range(10) |
| 16 | |
| 17 | __name_lookup = { |
| 18 | windows : ["windows"], |
| 19 | linux : ["linux"], |
| 20 | macosx : ["macosx"], |
| 21 | darwin : ["darwin"], |
| 22 | ios : ["ios"], |
| 23 | darwin_all : ["macosx", "darwin", "ios"], |
| 24 | freebsd : ["freebsd"], |
| 25 | netbsd : ["netbsd"], |
| 26 | bsd_all : ["freebsd", "netbsd"], |
| 27 | android : ["android"] |
| 28 | } |
| 29 | |
| 30 | |
| 31 | def translate(values): |
| 32 | |
| 33 | if isinstance(values, six.integer_types): |
| 34 | # This is a value from the platform enumeration, translate it. |
| 35 | return __name_lookup[values] |
| 36 | elif isinstance(values, six.string_types): |
| 37 | # This is a raw string, return it. |
| 38 | return [values] |
| 39 | elif hasattr(values, "__iter__"): |
| 40 | # This is an iterable, convert each item. |
| 41 | result = [translate(x) for x in values] |
| 42 | result = list(itertools.chain(*result)) |
| 43 | return result |
| 44 | return values |