124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//===-- State.h -------------------------------------------------*- 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#ifndef liblldb_State_h_
1124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#define liblldb_State_h_
1224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C Includes
1424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// C++ Includes
1524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Other libraries and framework includes
1624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner// Project includes
1724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#include "lldb/lldb-private.h"
1824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
1924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnernamespace lldb_private {
2024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
2124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------
2224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// Converts a StateType to a C string.
2324943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///
2424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @param[in] state
2524943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///     The StateType object to convert.
2624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///
2724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner/// @return
2824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///     A NULL terminated C string that describes \a state. The
2924943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///     returned string comes from constant string buffers and does
3024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner///     not need to be freed.
3124943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner//------------------------------------------------------------------
3224943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerconst char *
3324943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerStateAsCString (lldb::StateType state);
3424943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
35202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------
36202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// Check if a state represents a state where the process or thread
37202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// is running.
38202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///
39202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @param[in] state
40202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     The StateType enumeration value
41202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///
42202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @return
43202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     \b true if the state represents a process or thread state
44202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     where the process or thread is running, \b false otherwise.
45202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------
4624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool
4724943d2ee8bfaa7cf5893e4709143924157a5c1eChris LattnerStateIsRunningState (lldb::StateType state);
4824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
49202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------
50202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// Check if a state represents a state where the process or thread
51202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// is stopped. Stopped can mean stopped when the process is still
52202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// around, or stopped when the process has exited or doesn't exist
53202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// yet. The \a must_exist argument tells us which of these cases is
54202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// desired.
55202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///
56202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @param[in] state
57202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     The StateType enumeration value
58202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///
59202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @param[in] must_exist
60202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     A boolean that indicates the thread must also be alive
61202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     so states like unloaded or exited won't return true.
62202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///
63202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton/// @return
64202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     \b true if the state represents a process or thread state
65202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     where the process or thread is stopped. If \a must_exist is
66202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     \b true, then the process can't be exited or unloaded,
67202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     otherwise exited and unloaded or other states where the
68202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton///     process no longer exists are considered to be stopped.
69202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton//------------------------------------------------------------------
7024943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattnerbool
71202060806d75f812b56a3cfa70d85fff536e5c2fGreg ClaytonStateIsStoppedState (lldb::StateType state, bool must_exist);
72202060806d75f812b56a3cfa70d85fff536e5c2fGreg Clayton
73613b8739a4d489b7f1c571288d5786768c024205Greg Claytonconst char *
74613b8739a4d489b7f1c571288d5786768c024205Greg ClaytonGetPermissionsAsCString (uint32_t permissions);
75613b8739a4d489b7f1c571288d5786768c024205Greg Clayton
7624943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner} // namespace lldb_private
7724943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner
7824943d2ee8bfaa7cf5893e4709143924157a5c1eChris Lattner#endif  // liblldb_State_h_
79