brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.2 KiB · 2e8301a Raw
64 lines · c
1//===-- ScriptInterpreterPython.h -------------------------------*- C++ -*-===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#ifndef LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTINTERPRETERPYTHON_H10#define LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTINTERPRETERPYTHON_H11 12#include "lldb/Host/Config.h"13 14#if LLDB_ENABLE_PYTHON15 16#include "lldb/Breakpoint/BreakpointOptions.h"17#include "lldb/Core/IOHandler.h"18#include "lldb/Core/StructuredDataImpl.h"19#include "lldb/Interpreter/ScriptInterpreter.h"20#include "lldb/lldb-private.h"21 22#include <memory>23#include <string>24#include <vector>25 26namespace lldb_private {27/// Abstract interface for the Python script interpreter.28class ScriptInterpreterPython : public ScriptInterpreter,29                                public IOHandlerDelegateMultiline {30public:31  class CommandDataPython : public BreakpointOptions::CommandData {32  public:33    CommandDataPython() : BreakpointOptions::CommandData() {34      interpreter = lldb::eScriptLanguagePython;35    }36    CommandDataPython(StructuredData::ObjectSP extra_args_sp)37        : BreakpointOptions::CommandData(),38          m_extra_args(std::move(extra_args_sp)) {39      interpreter = lldb::eScriptLanguagePython;40    }41    StructuredDataImpl m_extra_args;42  };43 44  ScriptInterpreterPython(Debugger &debugger)45      : ScriptInterpreter(debugger, lldb::eScriptLanguagePython),46        IOHandlerDelegateMultiline("DONE") {}47 48  StructuredData::DictionarySP GetInterpreterInfo() override;49  static void Initialize();50  static void Terminate();51  static llvm::StringRef GetPluginNameStatic() { return "script-python"; }52  static llvm::StringRef GetPluginDescriptionStatic();53  static FileSpec GetPythonDir();54  static void SharedLibraryDirectoryHelper(FileSpec &this_file);55 56protected:57  static void ComputePythonDirForApple(llvm::SmallVectorImpl<char> &path);58  static void ComputePythonDir(llvm::SmallVectorImpl<char> &path);59};60} // namespace lldb_private61 62#endif // LLDB_ENABLE_PYTHON63#endif // LLDB_PLUGINS_SCRIPTINTERPRETER_PYTHON_SCRIPTINTERPRETERPYTHON_H64