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(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 31def 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 45