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