1 //===-- State.cpp -----------------------------------------------*- C++ -*-===//
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