1*2c1f46dcSZachary Turner //===-- ScriptInterpreterNone.cpp -------------------------------*- C++ -*-===//
2*2c1f46dcSZachary Turner //
3*2c1f46dcSZachary Turner //                     The LLVM Compiler Infrastructure
4*2c1f46dcSZachary Turner //
5*2c1f46dcSZachary Turner // This file is distributed under the University of Illinois Open Source
6*2c1f46dcSZachary Turner // License. See LICENSE.TXT for details.
7*2c1f46dcSZachary Turner //
8*2c1f46dcSZachary Turner //===----------------------------------------------------------------------===//
9*2c1f46dcSZachary Turner 
10*2c1f46dcSZachary Turner #include "ScriptInterpreterNone.h"
11*2c1f46dcSZachary Turner #include "lldb/Core/Debugger.h"
12*2c1f46dcSZachary Turner #include "lldb/Core/PluginManager.h"
13*2c1f46dcSZachary Turner #include "lldb/Core/Stream.h"
14*2c1f46dcSZachary Turner #include "lldb/Core/StreamFile.h"
15*2c1f46dcSZachary Turner #include "lldb/Core/StringList.h"
16*2c1f46dcSZachary Turner #include "lldb/Interpreter/CommandInterpreter.h"
17*2c1f46dcSZachary Turner 
18*2c1f46dcSZachary Turner #include <mutex>
19*2c1f46dcSZachary Turner 
20*2c1f46dcSZachary Turner using namespace lldb;
21*2c1f46dcSZachary Turner using namespace lldb_private;
22*2c1f46dcSZachary Turner 
23*2c1f46dcSZachary Turner ScriptInterpreterNone::ScriptInterpreterNone(CommandInterpreter &interpreter)
24*2c1f46dcSZachary Turner     : ScriptInterpreter(interpreter, eScriptLanguageNone)
25*2c1f46dcSZachary Turner {
26*2c1f46dcSZachary Turner }
27*2c1f46dcSZachary Turner 
28*2c1f46dcSZachary Turner ScriptInterpreterNone::~ScriptInterpreterNone()
29*2c1f46dcSZachary Turner {
30*2c1f46dcSZachary Turner }
31*2c1f46dcSZachary Turner 
32*2c1f46dcSZachary Turner bool
33*2c1f46dcSZachary Turner ScriptInterpreterNone::ExecuteOneLine(const char *command, CommandReturnObject *, const ExecuteScriptOptions &)
34*2c1f46dcSZachary Turner {
35*2c1f46dcSZachary Turner     m_interpreter.GetDebugger().GetErrorFile()->PutCString(
36*2c1f46dcSZachary Turner         "error: there is no embedded script interpreter in this mode.\n");
37*2c1f46dcSZachary Turner     return false;
38*2c1f46dcSZachary Turner }
39*2c1f46dcSZachary Turner 
40*2c1f46dcSZachary Turner void
41*2c1f46dcSZachary Turner ScriptInterpreterNone::ExecuteInterpreterLoop()
42*2c1f46dcSZachary Turner {
43*2c1f46dcSZachary Turner     m_interpreter.GetDebugger().GetErrorFile()->PutCString(
44*2c1f46dcSZachary Turner         "error: there is no embedded script interpreter in this mode.\n");
45*2c1f46dcSZachary Turner }
46*2c1f46dcSZachary Turner 
47*2c1f46dcSZachary Turner void
48*2c1f46dcSZachary Turner ScriptInterpreterNone::Initialize()
49*2c1f46dcSZachary Turner {
50*2c1f46dcSZachary Turner     static std::once_flag g_once_flag;
51*2c1f46dcSZachary Turner 
52*2c1f46dcSZachary Turner     std::call_once(g_once_flag, []()
53*2c1f46dcSZachary Turner                    {
54*2c1f46dcSZachary Turner                        PluginManager::RegisterPlugin(GetPluginNameStatic(), GetPluginDescriptionStatic(),
55*2c1f46dcSZachary Turner                                                      lldb::eScriptLanguageNone, CreateInstance);
56*2c1f46dcSZachary Turner                    });
57*2c1f46dcSZachary Turner }
58*2c1f46dcSZachary Turner 
59*2c1f46dcSZachary Turner void
60*2c1f46dcSZachary Turner ScriptInterpreterNone::Terminate()
61*2c1f46dcSZachary Turner {
62*2c1f46dcSZachary Turner }
63*2c1f46dcSZachary Turner 
64*2c1f46dcSZachary Turner lldb::ScriptInterpreterSP
65*2c1f46dcSZachary Turner ScriptInterpreterNone::CreateInstance(CommandInterpreter &interpreter)
66*2c1f46dcSZachary Turner {
67*2c1f46dcSZachary Turner     return std::make_shared<ScriptInterpreterNone>(interpreter);
68*2c1f46dcSZachary Turner }
69*2c1f46dcSZachary Turner 
70*2c1f46dcSZachary Turner lldb_private::ConstString
71*2c1f46dcSZachary Turner ScriptInterpreterNone::GetPluginNameStatic()
72*2c1f46dcSZachary Turner {
73*2c1f46dcSZachary Turner     static ConstString g_name("script-none");
74*2c1f46dcSZachary Turner     return g_name;
75*2c1f46dcSZachary Turner }
76*2c1f46dcSZachary Turner 
77*2c1f46dcSZachary Turner const char *
78*2c1f46dcSZachary Turner ScriptInterpreterNone::GetPluginDescriptionStatic()
79*2c1f46dcSZachary Turner {
80*2c1f46dcSZachary Turner     return "Null script interpreter";
81*2c1f46dcSZachary Turner }
82*2c1f46dcSZachary Turner 
83*2c1f46dcSZachary Turner lldb_private::ConstString
84*2c1f46dcSZachary Turner ScriptInterpreterNone::GetPluginName()
85*2c1f46dcSZachary Turner {
86*2c1f46dcSZachary Turner     return GetPluginNameStatic();
87*2c1f46dcSZachary Turner }
88*2c1f46dcSZachary Turner 
89*2c1f46dcSZachary Turner uint32_t
90*2c1f46dcSZachary Turner ScriptInterpreterNone::GetPluginVersion()
91*2c1f46dcSZachary Turner {
92*2c1f46dcSZachary Turner     return 1;
93*2c1f46dcSZachary Turner }
94