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