62 lines · python
1""" This module represents an abstraction of an lldb target / host platform. """2 3# System modules4import itertools5 6# LLDB modules7import lldb8 9(10 windows,11 linux,12 macosx,13 darwin,14 ios,15 tvos,16 watchos,17 bridgeos,18 darwin_all,19 darwin_embedded,20 darwin_simulator,21 freebsd,22 netbsd,23 bsd_all,24 android,25) = range(15)26 27__darwin_embedded = ["ios", "tvos", "watchos", "bridgeos"]28__darwin_simulators = ["iphonesimulator", "watchsimulator", "appletvsimulator"]29 30__name_lookup = {31 windows: ["windows"],32 linux: ["linux"],33 macosx: ["macosx"],34 darwin: ["darwin"],35 ios: ["ios", "iphonesimulator"],36 tvos: ["tvos", "appletvsimulator"],37 watchos: ["watchos", "watchsimulator"],38 bridgeos: ["bridgeos"],39 darwin_all: ["macosx", "darwin"] + __darwin_embedded + __darwin_simulators,40 darwin_embedded: __darwin_embedded + __darwin_simulators,41 darwin_simulator: __darwin_simulators,42 freebsd: ["freebsd"],43 netbsd: ["netbsd"],44 bsd_all: ["freebsd", "netbsd"],45 android: ["android"],46}47 48 49def translate(values):50 if isinstance(values, int):51 # This is a value from the platform enumeration, translate it.52 return __name_lookup[values]53 elif isinstance(values, str):54 # This is a raw string, return it.55 return [values]56 elif hasattr(values, "__iter__"):57 # This is an iterable, convert each item.58 result = [translate(x) for x in values]59 result = list(itertools.chain(*result))60 return result61 return values62