brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.3 KiB · 7bfbac0 Raw
119 lines · c
1//===-- ScriptInterpreterLua.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 liblldb_ScriptInterpreterLua_h_10#define liblldb_ScriptInterpreterLua_h_11 12#include <vector>13 14#include "lldb/Breakpoint/WatchpointOptions.h"15#include "lldb/Core/StructuredDataImpl.h"16#include "lldb/Interpreter/ScriptInterpreter.h"17#include "lldb/Utility/Status.h"18#include "lldb/lldb-enumerations.h"19 20namespace lldb_private {21class Lua;22class ScriptInterpreterLua : public ScriptInterpreter {23public:24  class CommandDataLua : public BreakpointOptions::CommandData {25  public:26    CommandDataLua() : BreakpointOptions::CommandData() {27      interpreter = lldb::eScriptLanguageLua;28    }29    CommandDataLua(StructuredData::ObjectSP extra_args_sp)30        : BreakpointOptions::CommandData(), m_extra_args_sp(extra_args_sp) {31      interpreter = lldb::eScriptLanguageLua;32    }33    StructuredData::ObjectSP m_extra_args_sp;34  };35 36  ScriptInterpreterLua(Debugger &debugger);37 38  ~ScriptInterpreterLua() override;39 40  bool ExecuteOneLine(41      llvm::StringRef command, CommandReturnObject *result,42      const ExecuteScriptOptions &options = ExecuteScriptOptions()) override;43 44  void ExecuteInterpreterLoop() override;45 46  bool LoadScriptingModule(const char *filename,47                           const LoadScriptOptions &options,48                           lldb_private::Status &error,49                           StructuredData::ObjectSP *module_sp = nullptr,50                           FileSpec extra_search_dir = {},51                           lldb::TargetSP loaded_into_target_sp = {}) override;52 53  StructuredData::DictionarySP GetInterpreterInfo() override;54 55  // Static Functions56  static void Initialize();57 58  static void Terminate();59 60  static lldb::ScriptInterpreterSP CreateInstance(Debugger &debugger);61 62  static llvm::StringRef GetPluginNameStatic() { return "script-lua"; }63 64  static llvm::StringRef GetPluginDescriptionStatic();65 66  static bool BreakpointCallbackFunction(void *baton,67                                         StoppointCallbackContext *context,68                                         lldb::user_id_t break_id,69                                         lldb::user_id_t break_loc_id);70 71  static bool WatchpointCallbackFunction(void *baton,72                                         StoppointCallbackContext *context,73                                         lldb::user_id_t watch_id);74 75  // PluginInterface protocol76  llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }77 78  Lua &GetLua();79 80  llvm::Error EnterSession(lldb::user_id_t debugger_id);81  llvm::Error LeaveSession();82 83  void CollectDataForBreakpointCommandCallback(84      std::vector<std::reference_wrapper<BreakpointOptions>> &bp_options_vec,85      CommandReturnObject &result) override;86 87  void88  CollectDataForWatchpointCommandCallback(WatchpointOptions *wp_options,89                                          CommandReturnObject &result) override;90 91  Status SetBreakpointCommandCallback(BreakpointOptions &bp_options,92                                      const char *command_body_text,93                                      bool is_callback) override;94 95  void SetWatchpointCommandCallback(WatchpointOptions *wp_options,96                                    const char *command_body_text,97                                    bool is_callback) override;98 99  Status SetBreakpointCommandCallbackFunction(100      BreakpointOptions &bp_options, const char *function_name,101      StructuredData::ObjectSP extra_args_sp) override;102 103private:104  std::unique_ptr<Lua> m_lua;105  bool m_session_is_active = false;106 107  Status RegisterBreakpointCallback(BreakpointOptions &bp_options,108                                    const char *command_body_text,109                                    StructuredData::ObjectSP extra_args_sp);110 111  Status RegisterWatchpointCallback(WatchpointOptions *wp_options,112                                    const char *command_body_text,113                                    StructuredData::ObjectSP extra_args_sp);114};115 116} // namespace lldb_private117 118#endif // liblldb_ScriptInterpreterLua_h_119