//===-- CommandObjectPythonFunction.cpp --------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #include "CommandObjectPythonFunction.h" // C Includes // C++ Includes // Other libraries and framework includes // Project includes #include "lldb/API/SBStream.h" #include "lldb/Core/Debugger.h" #include "lldb/Interpreter/Args.h" #include "lldb/Interpreter/Options.h" #include "lldb/Interpreter/CommandInterpreter.h" #include "lldb/Interpreter/CommandReturnObject.h" #include "lldb/Interpreter/ScriptInterpreter.h" #include "lldb/Interpreter/ScriptInterpreterPython.h" using namespace lldb; using namespace lldb_private; //------------------------------------------------------------------------- // CommandObjectApropos //------------------------------------------------------------------------- CommandObjectPythonFunction::CommandObjectPythonFunction (CommandInterpreter &interpreter, std::string name, std::string funct) : CommandObject (interpreter, name.c_str(), (std::string("Run Python function ") + funct).c_str(), NULL), m_function_name(funct) { CommandArgumentEntry arg; CommandArgumentData search_word_arg; // Define the first (and only) variant of this arg. search_word_arg.arg_type = eArgTypeSearchWord; search_word_arg.arg_repetition = eArgRepeatPlain; // There is only one variant this argument could be; put it into the argument entry. arg.push_back (search_word_arg); // Push the data for the first argument into the m_arguments vector. m_arguments.push_back (arg); } CommandObjectPythonFunction::~CommandObjectPythonFunction() { } bool CommandObjectPythonFunction::ExecuteRawCommandString (const char *raw_command_line, CommandReturnObject &result) { ScriptInterpreter* scripter = m_interpreter.GetScriptInterpreter(); Error error; lldb::SBStream stream; if (scripter->RunScriptBasedCommand(m_function_name.c_str(), raw_command_line, stream, error) == false) { result.AppendError(error.AsCString()); result.SetStatus(eReturnStatusFailed); } else result.SetStatus(eReturnStatusSuccessFinishNoResult); result.GetOutputStream() << stream.GetData(); return result.Succeeded(); }