blob: 84c027d88ff4c3a6785c7516ad528ecc1fc05bb7 [file] [log] [blame]
Zachary Turner5d3b3c72016-02-18 18:50:02 +00001""" 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
Kate Stoneb9c1b512016-09-06 20:57:50 +000015windows, linux, macosx, darwin, ios, darwin_all, freebsd, netbsd, bsd_all, android = range(
16 10)
Zachary Turner5d3b3c72016-02-18 18:50:02 +000017
18__name_lookup = {
Kate Stoneb9c1b512016-09-06 20:57:50 +000019 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"]
Zachary Turner5d3b3c72016-02-18 18:50:02 +000029}
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