blob: 3eceb829a978a83b3b5f670337cca7c749b3fcf6 [file] [log] [blame]
//===-- ScriptInterpreterPython.h -------------------------------*- C++ -*-===//
//
// The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
#ifndef liblldb_ScriptInterpreterPython_h_
#define liblldb_ScriptInterpreterPython_h_
#include "lldb/Interpreter/ScriptInterpreter.h"
#include "lldb/Core/InputReader.h"
#include <Python.h>
namespace lldb_private {
class ScriptInterpreterPython : public ScriptInterpreter
{
public:
ScriptInterpreterPython ();
~ScriptInterpreterPython ();
void
ExecuteOneLine (const std::string &line, FILE *out, FILE *err);
void
ExecuteInterpreterLoop (FILE *out, FILE *err);
bool
ExecuteOneLineWithReturn (const char *in_string,
ScriptInterpreter::ReturnType return_type,
void *ret_value);
bool
ExecuteMultipleLines (const char *in_string);
bool
ExportFunctionDefinitionToInterpreter (StringList &function_def);
bool
GenerateBreakpointCommandCallbackData (StringList &input, StringList &output);
static size_t
GenerateBreakpointOptionsCommandCallback (void *baton,
InputReader *reader,
lldb::InputReaderAction notification,
const char *bytes,
size_t bytes_len);
static bool
BreakpointCallbackFunction (void *baton,
StoppointCallbackContext *context,
lldb::user_id_t break_id,
lldb::user_id_t break_loc_id);
void
CollectDataForBreakpointCommandCallback (BreakpointOptions *bp_options,
CommandReturnObject &result);
StringList
ReadCommandInputFromUser (FILE *in_file);
private:
static size_t
InputReaderCallback (void *baton,
InputReader *reader,
lldb::InputReaderAction notification,
const char *bytes,
size_t bytes_len);
PyObject *m_compiled_module;
struct termios m_termios;
bool m_termios_valid;
};
} // namespace lldb_private
#endif // #ifndef liblldb_ScriptInterpreterPython_h_