1*5ffd83dbSDimitry Andric //===-- State.cpp ---------------------------------------------------------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "lldb/Utility/State.h" 100b57cec5SDimitry Andric 110b57cec5SDimitry Andric using namespace lldb; 120b57cec5SDimitry Andric using namespace lldb_private; 130b57cec5SDimitry Andric StateAsCString(StateType state)140b57cec5SDimitry Andricconst char *lldb_private::StateAsCString(StateType state) { 150b57cec5SDimitry Andric switch (state) { 160b57cec5SDimitry Andric case eStateInvalid: 170b57cec5SDimitry Andric return "invalid"; 180b57cec5SDimitry Andric case eStateUnloaded: 190b57cec5SDimitry Andric return "unloaded"; 200b57cec5SDimitry Andric case eStateConnected: 210b57cec5SDimitry Andric return "connected"; 220b57cec5SDimitry Andric case eStateAttaching: 230b57cec5SDimitry Andric return "attaching"; 240b57cec5SDimitry Andric case eStateLaunching: 250b57cec5SDimitry Andric return "launching"; 260b57cec5SDimitry Andric case eStateStopped: 270b57cec5SDimitry Andric return "stopped"; 280b57cec5SDimitry Andric case eStateRunning: 290b57cec5SDimitry Andric return "running"; 300b57cec5SDimitry Andric case eStateStepping: 310b57cec5SDimitry Andric return "stepping"; 320b57cec5SDimitry Andric case eStateCrashed: 330b57cec5SDimitry Andric return "crashed"; 340b57cec5SDimitry Andric case eStateDetached: 350b57cec5SDimitry Andric return "detached"; 360b57cec5SDimitry Andric case eStateExited: 370b57cec5SDimitry Andric return "exited"; 380b57cec5SDimitry Andric case eStateSuspended: 390b57cec5SDimitry Andric return "suspended"; 400b57cec5SDimitry Andric } 410b57cec5SDimitry Andric return "unknown"; 420b57cec5SDimitry Andric } 430b57cec5SDimitry Andric GetPermissionsAsCString(uint32_t permissions)440b57cec5SDimitry Andricconst char *lldb_private::GetPermissionsAsCString(uint32_t permissions) { 450b57cec5SDimitry Andric switch (permissions) { 460b57cec5SDimitry Andric case 0: 470b57cec5SDimitry Andric return "---"; 480b57cec5SDimitry Andric case ePermissionsWritable: 490b57cec5SDimitry Andric return "-w-"; 500b57cec5SDimitry Andric case ePermissionsReadable: 510b57cec5SDimitry Andric return "r--"; 520b57cec5SDimitry Andric case ePermissionsExecutable: 530b57cec5SDimitry Andric return "--x"; 540b57cec5SDimitry Andric case ePermissionsReadable | ePermissionsWritable: 550b57cec5SDimitry Andric return "rw-"; 560b57cec5SDimitry Andric case ePermissionsReadable | ePermissionsExecutable: 570b57cec5SDimitry Andric return "r-x"; 580b57cec5SDimitry Andric case ePermissionsWritable | ePermissionsExecutable: 590b57cec5SDimitry Andric return "-wx"; 600b57cec5SDimitry Andric case ePermissionsReadable | ePermissionsWritable | ePermissionsExecutable: 610b57cec5SDimitry Andric return "rwx"; 620b57cec5SDimitry Andric default: 630b57cec5SDimitry Andric break; 640b57cec5SDimitry Andric } 650b57cec5SDimitry Andric return "???"; 660b57cec5SDimitry Andric } 670b57cec5SDimitry Andric StateIsRunningState(StateType state)680b57cec5SDimitry Andricbool lldb_private::StateIsRunningState(StateType state) { 690b57cec5SDimitry Andric switch (state) { 700b57cec5SDimitry Andric case eStateAttaching: 710b57cec5SDimitry Andric case eStateLaunching: 720b57cec5SDimitry Andric case eStateRunning: 730b57cec5SDimitry Andric case eStateStepping: 740b57cec5SDimitry Andric return true; 750b57cec5SDimitry Andric 760b57cec5SDimitry Andric case eStateConnected: 770b57cec5SDimitry Andric case eStateDetached: 780b57cec5SDimitry Andric case eStateInvalid: 790b57cec5SDimitry Andric case eStateUnloaded: 800b57cec5SDimitry Andric case eStateStopped: 810b57cec5SDimitry Andric case eStateCrashed: 820b57cec5SDimitry Andric case eStateExited: 830b57cec5SDimitry Andric case eStateSuspended: 840b57cec5SDimitry Andric break; 850b57cec5SDimitry Andric } 860b57cec5SDimitry Andric return false; 870b57cec5SDimitry Andric } 880b57cec5SDimitry Andric StateIsStoppedState(StateType state,bool must_exist)890b57cec5SDimitry Andricbool lldb_private::StateIsStoppedState(StateType state, bool must_exist) { 900b57cec5SDimitry Andric switch (state) { 910b57cec5SDimitry Andric case eStateInvalid: 920b57cec5SDimitry Andric case eStateConnected: 930b57cec5SDimitry Andric case eStateAttaching: 940b57cec5SDimitry Andric case eStateLaunching: 950b57cec5SDimitry Andric case eStateRunning: 960b57cec5SDimitry Andric case eStateStepping: 970b57cec5SDimitry Andric case eStateDetached: 980b57cec5SDimitry Andric break; 990b57cec5SDimitry Andric 1000b57cec5SDimitry Andric case eStateUnloaded: 1010b57cec5SDimitry Andric case eStateExited: 1020b57cec5SDimitry Andric return !must_exist; 1030b57cec5SDimitry Andric 1040b57cec5SDimitry Andric case eStateStopped: 1050b57cec5SDimitry Andric case eStateCrashed: 1060b57cec5SDimitry Andric case eStateSuspended: 1070b57cec5SDimitry Andric return true; 1080b57cec5SDimitry Andric } 1090b57cec5SDimitry Andric return false; 1100b57cec5SDimitry Andric } 111