1*67de8962SJonas Devlieghere //===-- ScriptInterpreterLua.cpp --------------------------------*- C++ -*-===//
2*67de8962SJonas Devlieghere //
3*67de8962SJonas Devlieghere // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*67de8962SJonas Devlieghere // See https://llvm.org/LICENSE.txt for license information.
5*67de8962SJonas Devlieghere // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*67de8962SJonas Devlieghere //
7*67de8962SJonas Devlieghere //===----------------------------------------------------------------------===//
8*67de8962SJonas Devlieghere 
9*67de8962SJonas Devlieghere #include "ScriptInterpreterLua.h"
10*67de8962SJonas Devlieghere #include "lldb/Core/Debugger.h"
11*67de8962SJonas Devlieghere #include "lldb/Core/PluginManager.h"
12*67de8962SJonas Devlieghere #include "lldb/Core/StreamFile.h"
13*67de8962SJonas Devlieghere #include "lldb/Utility/Stream.h"
14*67de8962SJonas Devlieghere #include "lldb/Utility/StringList.h"
15*67de8962SJonas Devlieghere 
16*67de8962SJonas Devlieghere #include "llvm/Support/Threading.h"
17*67de8962SJonas Devlieghere 
18*67de8962SJonas Devlieghere #include <mutex>
19*67de8962SJonas Devlieghere 
20*67de8962SJonas Devlieghere using namespace lldb;
21*67de8962SJonas Devlieghere using namespace lldb_private;
22*67de8962SJonas Devlieghere 
23*67de8962SJonas Devlieghere ScriptInterpreterLua::ScriptInterpreterLua(Debugger &debugger)
24*67de8962SJonas Devlieghere     : ScriptInterpreter(debugger, eScriptLanguageLua) {}
25*67de8962SJonas Devlieghere 
26*67de8962SJonas Devlieghere ScriptInterpreterLua::~ScriptInterpreterLua() {}
27*67de8962SJonas Devlieghere 
28*67de8962SJonas Devlieghere bool ScriptInterpreterLua::ExecuteOneLine(llvm::StringRef command,
29*67de8962SJonas Devlieghere                                           CommandReturnObject *,
30*67de8962SJonas Devlieghere                                           const ExecuteScriptOptions &) {
31*67de8962SJonas Devlieghere   m_debugger.GetErrorStream().PutCString(
32*67de8962SJonas Devlieghere       "error: the lua script interpreter is not yet implemented.\n");
33*67de8962SJonas Devlieghere   return false;
34*67de8962SJonas Devlieghere }
35*67de8962SJonas Devlieghere 
36*67de8962SJonas Devlieghere void ScriptInterpreterLua::ExecuteInterpreterLoop() {
37*67de8962SJonas Devlieghere   m_debugger.GetErrorStream().PutCString(
38*67de8962SJonas Devlieghere       "error: the lua script interpreter is not yet implemented.\n");
39*67de8962SJonas Devlieghere }
40*67de8962SJonas Devlieghere 
41*67de8962SJonas Devlieghere void ScriptInterpreterLua::Initialize() {
42*67de8962SJonas Devlieghere   static llvm::once_flag g_once_flag;
43*67de8962SJonas Devlieghere 
44*67de8962SJonas Devlieghere   llvm::call_once(g_once_flag, []() {
45*67de8962SJonas Devlieghere     PluginManager::RegisterPlugin(GetPluginNameStatic(),
46*67de8962SJonas Devlieghere                                   GetPluginDescriptionStatic(),
47*67de8962SJonas Devlieghere                                   lldb::eScriptLanguageLua, CreateInstance);
48*67de8962SJonas Devlieghere   });
49*67de8962SJonas Devlieghere }
50*67de8962SJonas Devlieghere 
51*67de8962SJonas Devlieghere void ScriptInterpreterLua::Terminate() {}
52*67de8962SJonas Devlieghere 
53*67de8962SJonas Devlieghere lldb::ScriptInterpreterSP
54*67de8962SJonas Devlieghere ScriptInterpreterLua::CreateInstance(Debugger &debugger) {
55*67de8962SJonas Devlieghere   return std::make_shared<ScriptInterpreterLua>(debugger);
56*67de8962SJonas Devlieghere }
57*67de8962SJonas Devlieghere 
58*67de8962SJonas Devlieghere lldb_private::ConstString ScriptInterpreterLua::GetPluginNameStatic() {
59*67de8962SJonas Devlieghere   static ConstString g_name("script-lua");
60*67de8962SJonas Devlieghere   return g_name;
61*67de8962SJonas Devlieghere }
62*67de8962SJonas Devlieghere 
63*67de8962SJonas Devlieghere const char *ScriptInterpreterLua::GetPluginDescriptionStatic() {
64*67de8962SJonas Devlieghere   return "Lua script interpreter";
65*67de8962SJonas Devlieghere }
66*67de8962SJonas Devlieghere 
67*67de8962SJonas Devlieghere lldb_private::ConstString ScriptInterpreterLua::GetPluginName() {
68*67de8962SJonas Devlieghere   return GetPluginNameStatic();
69*67de8962SJonas Devlieghere }
70*67de8962SJonas Devlieghere 
71*67de8962SJonas Devlieghere uint32_t ScriptInterpreterLua::GetPluginVersion() { return 1; }
72