""" This module represents an abstraction of an lldb target / host platform. """ from __future__ import absolute_import # System modules import itertools # Third-party modules import six # LLDB modules import use_lldb_suite import lldb windows, linux, macosx, darwin, ios, darwin_all, freebsd, netbsd, bsd_all, android = range( 10) __name_lookup = { windows: ["windows"], linux: ["linux"], macosx: ["macosx"], darwin: ["darwin"], ios: ["ios"], darwin_all: ["macosx", "darwin", "ios"], freebsd: ["freebsd"], netbsd: ["netbsd"], bsd_all: ["freebsd", "netbsd"], android: ["android"] } def translate(values): if isinstance(values, six.integer_types): # This is a value from the platform enumeration, translate it. return __name_lookup[values] elif isinstance(values, six.string_types): # This is a raw string, return it. return [values] elif hasattr(values, "__iter__"): # This is an iterable, convert each item. result = [translate(x) for x in values] result = list(itertools.chain(*result)) return result return values