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 use_lldb_suite 13import lldb 14 15windows, linux, macosx, darwin, ios, darwin_all, freebsd, netbsd, bsd_all, android = range( 16 10) 17 18__name_lookup = { 19 windows: ["windows"], 20 linux: ["linux"], 21 macosx: ["macosx"], 22 darwin: ["darwin"], 23 ios: ["ios"], 24 darwin_all: ["macosx", "darwin", "ios"], 25 freebsd: ["freebsd"], 26 netbsd: ["netbsd"], 27 bsd_all: ["freebsd", "netbsd"], 28 android: ["android"] 29} 30 31 32def translate(values): 33 34 if isinstance(values, six.integer_types): 35 # This is a value from the platform enumeration, translate it. 36 return __name_lookup[values] 37 elif isinstance(values, six.string_types): 38 # This is a raw string, return it. 39 return [values] 40 elif hasattr(values, "__iter__"): 41 # This is an iterable, convert each item. 42 result = [translate(x) for x in values] 43 result = list(itertools.chain(*result)) 44 return result 45 return values 46