State.cpp revision 343181
1189251Ssam//===-- State.cpp -----------------------------------------------*- C++ -*-===//
2189251Ssam//
3189251Ssam//                     The LLVM Compiler Infrastructure
4189251Ssam//
5189251Ssam// This file is distributed under the University of Illinois Open Source
6189251Ssam// License. See LICENSE.TXT for details.
7189251Ssam//
8189251Ssam//===----------------------------------------------------------------------===//
9189251Ssam
10189251Ssam#include "lldb/Utility/State.h"
11189251Ssam
12189251Ssamusing namespace lldb;
13189251Ssamusing namespace lldb_private;
14189251Ssam
15189251Ssamconst char *lldb_private::StateAsCString(StateType state) {
16189251Ssam  switch (state) {
17189251Ssam  case eStateInvalid:
18189251Ssam    return "invalid";
19189251Ssam  case eStateUnloaded:
20189251Ssam    return "unloaded";
21189251Ssam  case eStateConnected:
22189251Ssam    return "connected";
23189251Ssam  case eStateAttaching:
24189251Ssam    return "attaching";
25189251Ssam  case eStateLaunching:
26189251Ssam    return "launching";
27189251Ssam  case eStateStopped:
28189251Ssam    return "stopped";
29189251Ssam  case eStateRunning:
30189251Ssam    return "running";
31189251Ssam  case eStateStepping:
32189251Ssam    return "stepping";
33189251Ssam  case eStateCrashed:
34189251Ssam    return "crashed";
35189251Ssam  case eStateDetached:
36189251Ssam    return "detached";
37189251Ssam  case eStateExited:
38189251Ssam    return "exited";
39189251Ssam  case eStateSuspended:
40189251Ssam    return "suspended";
41189251Ssam  }
42189251Ssam  return "unknown";
43189251Ssam}
44189251Ssam
45189251Ssamconst char *lldb_private::GetPermissionsAsCString(uint32_t permissions) {
46189251Ssam  switch (permissions) {
47189251Ssam  case 0:
48189251Ssam    return "---";
49189251Ssam  case ePermissionsWritable:
50189251Ssam    return "-w-";
51189251Ssam  case ePermissionsReadable:
52189251Ssam    return "r--";
53189251Ssam  case ePermissionsExecutable:
54189251Ssam    return "--x";
55189251Ssam  case ePermissionsReadable | ePermissionsWritable:
56189251Ssam    return "rw-";
57189251Ssam  case ePermissionsReadable | ePermissionsExecutable:
58189251Ssam    return "r-x";
59189251Ssam  case ePermissionsWritable | ePermissionsExecutable:
60189251Ssam    return "-wx";
61189251Ssam  case ePermissionsReadable | ePermissionsWritable | ePermissionsExecutable:
62189251Ssam    return "rwx";
63189251Ssam  default:
64189251Ssam    break;
65189251Ssam  }
66189251Ssam  return "???";
67189251Ssam}
68189251Ssam
69189251Ssambool lldb_private::StateIsRunningState(StateType state) {
70189251Ssam  switch (state) {
71189251Ssam  case eStateAttaching:
72189251Ssam  case eStateLaunching:
73189251Ssam  case eStateRunning:
74189251Ssam  case eStateStepping:
75189251Ssam    return true;
76189251Ssam
77189251Ssam  case eStateConnected:
78189251Ssam  case eStateDetached:
79189251Ssam  case eStateInvalid:
80189251Ssam  case eStateUnloaded:
81189251Ssam  case eStateStopped:
82189251Ssam  case eStateCrashed:
83189251Ssam  case eStateExited:
84189251Ssam  case eStateSuspended:
85189251Ssam    break;
86189251Ssam  }
87189251Ssam  return false;
88189251Ssam}
89189251Ssam
90189251Ssambool lldb_private::StateIsStoppedState(StateType state, bool must_exist) {
91189251Ssam  switch (state) {
92189251Ssam  case eStateInvalid:
93189251Ssam  case eStateConnected:
94189251Ssam  case eStateAttaching:
95189251Ssam  case eStateLaunching:
96189251Ssam  case eStateRunning:
97189251Ssam  case eStateStepping:
98189251Ssam  case eStateDetached:
99189251Ssam    break;
100189251Ssam
101189251Ssam  case eStateUnloaded:
102189251Ssam  case eStateExited:
103189251Ssam    return !must_exist;
104189251Ssam
105189251Ssam  case eStateStopped:
106189251Ssam  case eStateCrashed:
107189251Ssam  case eStateSuspended:
108189251Ssam    return true;
109189251Ssam  }
110189251Ssam  return false;
111189251Ssam}
112189251Ssam