diff options
author | Zachary Turner <zturner@google.com> | 2015-11-13 01:24:52 +0000 |
---|---|---|
committer | Zachary Turner <zturner@google.com> | 2015-11-13 01:24:52 +0000 |
commit | 3946247caf2c4e6c4d24439b62611d5c15771467 (patch) | |
tree | a18fc92091ef4bb5d4afe89306cb846db6ed88c7 /lldb/source/Plugins/ScriptInterpreter/Python/PythonExceptionState.h | |
parent | c946d46283b2578055c47de9b7ef7d182cd9a2ac (diff) | |
download | llvm-3946247caf2c4e6c4d24439b62611d5c15771467.zip llvm-3946247caf2c4e6c4d24439b62611d5c15771467.tar.gz llvm-3946247caf2c4e6c4d24439b62611d5c15771467.tar.bz2 |
Introduce a `PythonExceptionState` class.
This is a helper class which supports a number of
features including exception to string formatting with
backtrace handling and auto-restore of exception state
upon scope exit.
Additionally, unit tests are included to verify the
feature set of the class.
llvm-svn: 252994
Diffstat (limited to 'lldb/source/Plugins/ScriptInterpreter/Python/PythonExceptionState.h')
-rw-r--r-- | lldb/source/Plugins/ScriptInterpreter/Python/PythonExceptionState.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lldb/source/Plugins/ScriptInterpreter/Python/PythonExceptionState.h b/lldb/source/Plugins/ScriptInterpreter/Python/PythonExceptionState.h new file mode 100644 index 0000000..854276b --- /dev/null +++ b/lldb/source/Plugins/ScriptInterpreter/Python/PythonExceptionState.h @@ -0,0 +1,63 @@ +//===-- PythonExceptionState.h ----------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_PYTHONEXCEPTIONSTATE_H +#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_PYTHONEXCEPTIONSTATE_H + +#include "PythonDataObjects.h" + +namespace lldb_private +{ + +class PythonExceptionState +{ + public: + explicit PythonExceptionState(bool restore_on_exit); + ~PythonExceptionState(); + + void + Acquire(bool restore_on_exit); + + void + Restore(); + + void + Discard(); + + static bool + HasErrorOccurred(); + + bool + IsError() const; + + PythonObject + GetType() const; + + PythonObject + GetValue() const; + + PythonObject + GetTraceback() const; + + std::string + Format() const; + + private: + std::string + ReadBacktrace() const; + + bool m_restore_on_exit; + + PythonObject m_type; + PythonObject m_value; + PythonObject m_traceback; +}; +} + +#endif |