blob: 561e881ac3b4bb7a10a17600ddd828c9dd8fa5d0 [file] [log] [blame]
Chris Lattner30fdc8d2010-06-08 16:52:24 +00001//===-- ScriptInterpreter.cpp -----------------------------------*- C++ -*-===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
Daniel Malea93a64302012-12-05 00:20:57 +000010#include "lldb/lldb-python.h"
11
Chris Lattner30fdc8d2010-06-08 16:52:24 +000012#include "lldb/Interpreter/ScriptInterpreter.h"
13
14#include <string>
15#include <stdlib.h>
16#include <stdio.h>
17
18#include "lldb/Core/Error.h"
19#include "lldb/Core/Stream.h"
20#include "lldb/Core/StringList.h"
21#include "lldb/Interpreter/CommandReturnObject.h"
Caroline Tice2f88aad2011-01-14 00:29:16 +000022#include "lldb/Interpreter/ScriptInterpreterPython.h"
Jason Molendaa34a0c62010-06-09 21:28:42 +000023#include "lldb/Utility/PseudoTerminal.h"
Chris Lattner30fdc8d2010-06-08 16:52:24 +000024
25using namespace lldb;
26using namespace lldb_private;
27
Caroline Tice2f88aad2011-01-14 00:29:16 +000028ScriptInterpreter::ScriptInterpreter (CommandInterpreter &interpreter, lldb::ScriptLanguage script_lang) :
Greg Claytona7015092010-09-18 01:14:36 +000029 m_interpreter (interpreter),
Greg Clayton9ea3fcd2012-01-27 00:13:27 +000030 m_script_lang (script_lang)
Chris Lattner30fdc8d2010-06-08 16:52:24 +000031{
Chris Lattner30fdc8d2010-06-08 16:52:24 +000032}
33
34ScriptInterpreter::~ScriptInterpreter ()
35{
Chris Lattner30fdc8d2010-06-08 16:52:24 +000036}
37
Caroline Tice2f88aad2011-01-14 00:29:16 +000038CommandInterpreter &
39ScriptInterpreter::GetCommandInterpreter ()
40{
41 return m_interpreter;
42}
43
Chris Lattner30fdc8d2010-06-08 16:52:24 +000044void
45ScriptInterpreter::CollectDataForBreakpointCommandCallback
46(
Chris Lattner30fdc8d2010-06-08 16:52:24 +000047 BreakpointOptions *bp_options,
48 CommandReturnObject &result
49)
50{
51 result.SetStatus (eReturnStatusFailed);
52 result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
53}
54
Johnny Chene9a56272012-08-09 23:09:42 +000055void
56ScriptInterpreter::CollectDataForWatchpointCommandCallback
57(
58 WatchpointOptions *bp_options,
59 CommandReturnObject &result
60)
61{
62 result.SetStatus (eReturnStatusFailed);
63 result.AppendError ("ScriptInterpreter::GetScriptCommands(StringList &) is not implemented.");
64}
65
Caroline Tice3df9a8d2010-09-04 00:03:46 +000066std::string
67ScriptInterpreter::LanguageToString (lldb::ScriptLanguage language)
68{
69 std::string return_value;
Chris Lattner30fdc8d2010-06-08 16:52:24 +000070
Caroline Tice3df9a8d2010-09-04 00:03:46 +000071 switch (language)
72 {
73 case eScriptLanguageNone:
74 return_value = "None";
75 break;
76 case eScriptLanguagePython:
77 return_value = "Python";
78 break;
Caroline Tice3df9a8d2010-09-04 00:03:46 +000079 }
80
81 return return_value;
82}
Caroline Tice2f88aad2011-01-14 00:29:16 +000083
Greg Clayton7b0992d2013-04-18 22:45:39 +000084std::unique_ptr<ScriptInterpreterLocker>
Enrico Granata360cc312013-03-27 22:38:11 +000085ScriptInterpreter::AcquireInterpreterLock ()
86{
Greg Clayton7b0992d2013-04-18 22:45:39 +000087 return std::unique_ptr<ScriptInterpreterLocker>(new ScriptInterpreterLocker());
Enrico Granata360cc312013-03-27 22:38:11 +000088}
89
Caroline Tice2f88aad2011-01-14 00:29:16 +000090void
Greg Clayton8afa5432013-10-17 00:27:14 +000091ScriptInterpreter::InitializeInterpreter (SWIGInitCallback python_swig_init_callback,
92 SWIGBreakpointCallbackFunction swig_breakpoint_callback,
93 SWIGWatchpointCallbackFunction swig_watchpoint_callback,
94 SWIGPythonTypeScriptCallbackFunction swig_typescript_callback,
95 SWIGPythonCreateSyntheticProvider swig_synthetic_script,
96 SWIGPythonCalculateNumChildren swig_calc_children,
97 SWIGPythonGetChildAtIndex swig_get_child_index,
98 SWIGPythonGetIndexOfChildWithName swig_get_index_child,
99 SWIGPythonCastPyObjectToSBValue swig_cast_to_sbvalue ,
100 SWIGPythonGetValueObjectSPFromSBValue swig_get_valobj_sp_from_sbvalue,
101 SWIGPythonUpdateSynthProviderInstance swig_update_provider,
102 SWIGPythonMightHaveChildrenSynthProviderInstance swig_mighthavechildren_provider,
103 SWIGPythonCallCommand swig_call_command,
104 SWIGPythonCallModuleInit swig_call_module_init,
105 SWIGPythonCreateOSPlugin swig_create_os_plugin,
106 SWIGPythonScriptKeyword_Process swig_run_script_keyword_process,
107 SWIGPythonScriptKeyword_Thread swig_run_script_keyword_thread,
108 SWIGPythonScriptKeyword_Target swig_run_script_keyword_target,
109 SWIGPythonScriptKeyword_Frame swig_run_script_keyword_frame,
110 SWIGPython_GetDynamicSetting swig_plugin_get)
Caroline Tice2f88aad2011-01-14 00:29:16 +0000111{
Greg Claytondce502e2011-11-04 03:34:56 +0000112#ifndef LLDB_DISABLE_PYTHON
Greg Clayton8afa5432013-10-17 00:27:14 +0000113 ScriptInterpreterPython::InitializeInterpreter (python_swig_init_callback,
114 swig_breakpoint_callback,
115 swig_watchpoint_callback,
116 swig_typescript_callback,
117 swig_synthetic_script,
118 swig_calc_children,
119 swig_get_child_index,
120 swig_get_index_child,
121 swig_cast_to_sbvalue ,
122 swig_get_valobj_sp_from_sbvalue,
123 swig_update_provider,
124 swig_mighthavechildren_provider,
125 swig_call_command,
126 swig_call_module_init,
127 swig_create_os_plugin,
128 swig_run_script_keyword_process,
129 swig_run_script_keyword_thread,
130 swig_run_script_keyword_target,
131 swig_run_script_keyword_frame,
132 swig_plugin_get);
Greg Claytondce502e2011-11-04 03:34:56 +0000133#endif // #ifndef LLDB_DISABLE_PYTHON
Caroline Tice2f88aad2011-01-14 00:29:16 +0000134}