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# LLDB modules 9import lldb 10 11windows, linux, macosx, darwin, ios, tvos, watchos, bridgeos, darwin_all, \ 12 darwin_embedded, darwin_simulator, freebsd, netbsd, bsd_all, android \ 13 = range(15) 14 15__darwin_embedded = ["ios", "tvos", "watchos", "bridgeos"] 16__darwin_simulators = ["iphonesimulator", "watchsimulator", "appletvsimulator"] 17 18__name_lookup = { 19 windows: ["windows"], 20 linux: ["linux"], 21 macosx: ["macosx"], 22 darwin: ["darwin"], 23 ios: ["ios", "iphonesimulator"], 24 tvos: ["tvos", "appletvsimulator"], 25 watchos: ["watchos", "watchsimulator"], 26 bridgeos: ["bridgeos"], 27 darwin_all: ["macosx", "darwin"] + __darwin_embedded + __darwin_simulators, 28 darwin_embedded: __darwin_embedded + __darwin_simulators, 29 darwin_simulator: __darwin_simulators, 30 freebsd: ["freebsd"], 31 netbsd: ["netbsd"], 32 bsd_all: ["freebsd", "netbsd"], 33 android: ["android"] 34} 35 36 37def translate(values): 38 39 if isinstance(values, int): 40 # This is a value from the platform enumeration, translate it. 41 return __name_lookup[values] 42 elif isinstance(values, str): 43 # This is a raw string, return it. 44 return [values] 45 elif hasattr(values, "__iter__"): 46 # This is an iterable, convert each item. 47 result = [translate(x) for x in values] 48 result = list(itertools.chain(*result)) 49 return result 50 return values 51