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