1 | //===-- State.cpp ---------------------------------------------------------===// |
---|---|
2 | // |
3 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
4 | // See https://llvm.org/LICENSE.txt for license information. |
5 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
6 | // |
7 | //===----------------------------------------------------------------------===// |
8 | |
9 | #include "lldb/Utility/State.h" |
10 | |
11 | using namespace lldb; |
12 | using namespace lldb_private; |
13 | |
14 | const char *lldb_private::StateAsCString(StateType state) { |
15 | switch (state) { |
16 | case eStateInvalid: |
17 | return "invalid"; |
18 | case eStateUnloaded: |
19 | return "unloaded"; |
20 | case eStateConnected: |
21 | return "connected"; |
22 | case eStateAttaching: |
23 | return "attaching"; |
24 | case eStateLaunching: |
25 | return "launching"; |
26 | case eStateStopped: |
27 | return "stopped"; |
28 | case eStateRunning: |
29 | return "running"; |
30 | case eStateStepping: |
31 | return "stepping"; |
32 | case eStateCrashed: |
33 | return "crashed"; |
34 | case eStateDetached: |
35 | return "detached"; |
36 | case eStateExited: |
37 | return "exited"; |
38 | case eStateSuspended: |
39 | return "suspended"; |
40 | } |
41 | return "unknown"; |
42 | } |
43 | |
44 | const char *lldb_private::GetPermissionsAsCString(uint32_t permissions) { |
45 | switch (permissions) { |
46 | case 0: |
47 | return "---"; |
48 | case ePermissionsWritable: |
49 | return "-w-"; |
50 | case ePermissionsReadable: |
51 | return "r--"; |
52 | case ePermissionsExecutable: |
53 | return "--x"; |
54 | case ePermissionsReadable | ePermissionsWritable: |
55 | return "rw-"; |
56 | case ePermissionsReadable | ePermissionsExecutable: |
57 | return "r-x"; |
58 | case ePermissionsWritable | ePermissionsExecutable: |
59 | return "-wx"; |
60 | case ePermissionsReadable | ePermissionsWritable | ePermissionsExecutable: |
61 | return "rwx"; |
62 | default: |
63 | break; |
64 | } |
65 | return "???"; |
66 | } |
67 | |
68 | bool lldb_private::StateIsRunningState(StateType state) { |
69 | switch (state) { |
70 | case eStateAttaching: |
71 | case eStateLaunching: |
72 | case eStateRunning: |
73 | case eStateStepping: |
74 | return true; |
75 | |
76 | case eStateConnected: |
77 | case eStateDetached: |
78 | case eStateInvalid: |
79 | case eStateUnloaded: |
80 | case eStateStopped: |
81 | case eStateCrashed: |
82 | case eStateExited: |
83 | case eStateSuspended: |
84 | break; |
85 | } |
86 | return false; |
87 | } |
88 | |
89 | bool lldb_private::StateIsStoppedState(StateType state, bool must_exist) { |
90 | switch (state) { |
91 | case eStateInvalid: |
92 | case eStateConnected: |
93 | case eStateAttaching: |
94 | case eStateLaunching: |
95 | case eStateRunning: |
96 | case eStateStepping: |
97 | case eStateDetached: |
98 | break; |
99 | |
100 | case eStateUnloaded: |
101 | case eStateExited: |
102 | return !must_exist; |
103 | |
104 | case eStateStopped: |
105 | case eStateCrashed: |
106 | case eStateSuspended: |
107 | return true; |
108 | } |
109 | return false; |
110 | } |
111 |