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