124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- State.cpp -----------------------------------------------*- C++ -*-===// 224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// The LLVM Compiler Infrastructure 424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// This file is distributed under the University of Illinois Open Source 624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// License. See LICENSE.TXT for details. 724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// 824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===----------------------------------------------------------------------===// 924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes 1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes 1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes 1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes 1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/Core/State.h" 15a408326b499c3ffdfed2378738598c4ad0cf745fEli Friedman#include <stdio.h> 1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb; 1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerusing namespace lldb_private; 1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char * 2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::StateAsCString (StateType state) 2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner switch (state) 2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 25c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateInvalid: return "invalid"; 26c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateUnloaded: return "unloaded"; 27e71e258286a1713dbb2d366d8b81ff2f28e0216fGreg Clayton case eStateConnected: return "connected"; 28c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateAttaching: return "attaching"; 29c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateLaunching: return "launching"; 30c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateStopped: return "stopped"; 31c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateRunning: return "running"; 32c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateStepping: return "stepping"; 33c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateCrashed: return "crashed"; 34c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateDetached: return "detached"; 35c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateExited: return "exited"; 36c1d3775eb2494c6e88ebee44c7d49beefcb3bb6aGreg Clayton case eStateSuspended: return "suspended"; 3724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 3824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner static char unknown_state_string[64]; 3924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner snprintf(unknown_state_string, sizeof (unknown_state_string), "StateType = %i", state); 4024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return unknown_state_string; 4124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 4224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 4357b3c6b12812b0a7a79f896855c787bd4d893ecbGreg Claytonconst char * 44613b8739a4d489b7f1c571288d5786768c024205Greg Claytonlldb_private::GetPermissionsAsCString (uint32_t permissions) 45613b8739a4d489b7f1c571288d5786768c024205Greg Clayton{ 46613b8739a4d489b7f1c571288d5786768c024205Greg Clayton switch (permissions) 47613b8739a4d489b7f1c571288d5786768c024205Greg Clayton { 48613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case 0: return "---"; 49613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsWritable: return "-w-"; 50613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsReadable: return "r--"; 51613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsExecutable: return "--x"; 52613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsReadable | 53613b8739a4d489b7f1c571288d5786768c024205Greg Clayton ePermissionsWritable: return "rw-"; 54613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsReadable | 55613b8739a4d489b7f1c571288d5786768c024205Greg Clayton ePermissionsExecutable: return "r-x"; 56613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsWritable | 57613b8739a4d489b7f1c571288d5786768c024205Greg Clayton ePermissionsExecutable: return "-wx"; 58613b8739a4d489b7f1c571288d5786768c024205Greg Clayton case ePermissionsReadable | 59613b8739a4d489b7f1c571288d5786768c024205Greg Clayton ePermissionsWritable | 60613b8739a4d489b7f1c571288d5786768c024205Greg Clayton ePermissionsExecutable: return "rwx"; 61613b8739a4d489b7f1c571288d5786768c024205Greg Clayton default: 62613b8739a4d489b7f1c571288d5786768c024205Greg Clayton break; 63613b8739a4d489b7f1c571288d5786768c024205Greg Clayton } 64613b8739a4d489b7f1c571288d5786768c024205Greg Clayton return "???"; 65613b8739a4d489b7f1c571288d5786768c024205Greg Clayton} 66613b8739a4d489b7f1c571288d5786768c024205Greg Clayton 6724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 6824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerlldb_private::StateIsRunningState (StateType state) 6924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner switch (state) 7124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 7224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateAttaching: 7324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateLaunching: 7424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateRunning: 7524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateStepping: 7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return true; 7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 78e71e258286a1713dbb2d366d8b81ff2f28e0216fGreg Clayton case eStateConnected: 7924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateDetached: 8024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateInvalid: 8124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateUnloaded: 8224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateStopped: 8324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateCrashed: 8424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateExited: 8524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateSuspended: 8624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner break; 8724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 8824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 8924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 9024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 9124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool 92202060806d75f812b56a3cfa70d85fff536e5c2fGreg Claytonlldb_private::StateIsStoppedState (StateType state, bool must_exist) 9324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner{ 9424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner switch (state) 9524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner { 9624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateInvalid: 97e71e258286a1713dbb2d366d8b81ff2f28e0216fGreg Clayton case eStateConnected: 9824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateAttaching: 9924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateLaunching: 10024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateRunning: 10124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateStepping: 10224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateDetached: 10324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner break; 10424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner 10524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateUnloaded: 106202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton case eStateExited: 107202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton return !must_exist; 108202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton 10924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateStopped: 11024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateCrashed: 11124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner case eStateSuspended: 11224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return true; 11324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner } 11424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner return false; 11524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} 116