Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 1 | //===-- 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 | |
| 10 | #include "lldb/Interpreter/ScriptInterpreter.h" |
| 11 | |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 12 | #include <stdio.h> |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 13 | #include <stdlib.h> |
| 14 | #include <string> |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 15 | |
Zachary Turner | 24ae629 | 2017-02-16 19:38:21 +0000 | [diff] [blame] | 16 | #include "lldb/Host/PseudoTerminal.h" |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 17 | #include "lldb/Interpreter/CommandReturnObject.h" |
Zachary Turner | bf9a773 | 2017-02-02 21:39:50 +0000 | [diff] [blame] | 18 | #include "lldb/Utility/Error.h" |
Zachary Turner | bf9a773 | 2017-02-02 21:39:50 +0000 | [diff] [blame] | 19 | #include "lldb/Utility/Stream.h" |
Zachary Turner | 573ab90 | 2017-03-21 18:25:04 +0000 | [diff] [blame^] | 20 | #include "lldb/Utility/StringList.h" |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 21 | |
| 22 | using namespace lldb; |
| 23 | using namespace lldb_private; |
| 24 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 25 | ScriptInterpreter::ScriptInterpreter(CommandInterpreter &interpreter, |
| 26 | lldb::ScriptLanguage script_lang) |
| 27 | : m_interpreter(interpreter), m_script_lang(script_lang) {} |
| 28 | |
| 29 | ScriptInterpreter::~ScriptInterpreter() {} |
| 30 | |
| 31 | CommandInterpreter &ScriptInterpreter::GetCommandInterpreter() { |
| 32 | return m_interpreter; |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 33 | } |
| 34 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 35 | void ScriptInterpreter::CollectDataForBreakpointCommandCallback( |
Jim Ingham | b5796cb | 2014-08-29 17:34:17 +0000 | [diff] [blame] | 36 | std::vector<BreakpointOptions *> &bp_options_vec, |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 37 | CommandReturnObject &result) { |
| 38 | result.SetStatus(eReturnStatusFailed); |
| 39 | result.AppendError( |
| 40 | "ScriptInterpreter::GetScriptCommands(StringList &) is not implemented."); |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 41 | } |
| 42 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 43 | void ScriptInterpreter::CollectDataForWatchpointCommandCallback( |
| 44 | WatchpointOptions *bp_options, CommandReturnObject &result) { |
| 45 | result.SetStatus(eReturnStatusFailed); |
| 46 | result.AppendError( |
| 47 | "ScriptInterpreter::GetScriptCommands(StringList &) is not implemented."); |
Johnny Chen | e9a5627 | 2012-08-09 23:09:42 +0000 | [diff] [blame] | 48 | } |
| 49 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 50 | std::string ScriptInterpreter::LanguageToString(lldb::ScriptLanguage language) { |
| 51 | std::string return_value; |
Chris Lattner | 30fdc8d | 2010-06-08 16:52:24 +0000 | [diff] [blame] | 52 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 53 | switch (language) { |
| 54 | case eScriptLanguageNone: |
| 55 | return_value = "None"; |
| 56 | break; |
| 57 | case eScriptLanguagePython: |
| 58 | return_value = "Python"; |
| 59 | break; |
Jim Ingham | f7e0725 | 2016-09-26 19:47:37 +0000 | [diff] [blame] | 60 | case eScriptLanguageUnknown: |
| 61 | return_value = "Unknown"; |
| 62 | break; |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 63 | } |
Caroline Tice | 3df9a8d | 2010-09-04 00:03:46 +0000 | [diff] [blame] | 64 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 65 | return return_value; |
Caroline Tice | 3df9a8d | 2010-09-04 00:03:46 +0000 | [diff] [blame] | 66 | } |
Caroline Tice | 2f88aad | 2011-01-14 00:29:16 +0000 | [diff] [blame] | 67 | |
Jim Ingham | f7e0725 | 2016-09-26 19:47:37 +0000 | [diff] [blame] | 68 | lldb::ScriptLanguage |
| 69 | ScriptInterpreter::StringToLanguage(const llvm::StringRef &language) { |
| 70 | if (language.equals_lower(LanguageToString(eScriptLanguageNone))) |
| 71 | return eScriptLanguageNone; |
| 72 | else if (language.equals_lower(LanguageToString(eScriptLanguagePython))) |
| 73 | return eScriptLanguagePython; |
| 74 | else |
| 75 | return eScriptLanguageUnknown; |
| 76 | } |
| 77 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 78 | Error ScriptInterpreter::SetBreakpointCommandCallback( |
| 79 | std::vector<BreakpointOptions *> &bp_options_vec, |
| 80 | const char *callback_text) { |
| 81 | Error return_error; |
| 82 | for (BreakpointOptions *bp_options : bp_options_vec) { |
| 83 | return_error = SetBreakpointCommandCallback(bp_options, callback_text); |
| 84 | if (return_error.Success()) |
| 85 | break; |
| 86 | } |
| 87 | return return_error; |
Jim Ingham | b5796cb | 2014-08-29 17:34:17 +0000 | [diff] [blame] | 88 | } |
| 89 | |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 90 | void ScriptInterpreter::SetBreakpointCommandCallbackFunction( |
| 91 | std::vector<BreakpointOptions *> &bp_options_vec, |
| 92 | const char *function_name) { |
| 93 | for (BreakpointOptions *bp_options : bp_options_vec) { |
| 94 | SetBreakpointCommandCallbackFunction(bp_options, function_name); |
| 95 | } |
Jim Ingham | b5796cb | 2014-08-29 17:34:17 +0000 | [diff] [blame] | 96 | } |
| 97 | |
Greg Clayton | 7b0992d | 2013-04-18 22:45:39 +0000 | [diff] [blame] | 98 | std::unique_ptr<ScriptInterpreterLocker> |
Kate Stone | b9c1b51 | 2016-09-06 20:57:50 +0000 | [diff] [blame] | 99 | ScriptInterpreter::AcquireInterpreterLock() { |
| 100 | return std::unique_ptr<ScriptInterpreterLocker>( |
| 101 | new ScriptInterpreterLocker()); |
Enrico Granata | 360cc31 | 2013-03-27 22:38:11 +0000 | [diff] [blame] | 102 | } |