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