111 lines · cpp
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-exception6//7//===----------------------------------------------------------------------===//8 9#include "lldb/Utility/State.h"10 11using namespace lldb;12using namespace lldb_private;13 14const 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 44const 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 68bool 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 89bool 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