""" 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