12c1f46dcSZachary Turner //===-- ScriptInterpreterNone.cpp -------------------------------*- C++ -*-===//
22c1f46dcSZachary Turner //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
62c1f46dcSZachary Turner //
72c1f46dcSZachary Turner //===----------------------------------------------------------------------===//
82c1f46dcSZachary Turner 
92c1f46dcSZachary Turner #include "ScriptInterpreterNone.h"
102c1f46dcSZachary Turner #include "lldb/Core/Debugger.h"
112c1f46dcSZachary Turner #include "lldb/Core/PluginManager.h"
122c1f46dcSZachary Turner #include "lldb/Core/StreamFile.h"
13bf9a7730SZachary Turner #include "lldb/Utility/Stream.h"
14573ab909SZachary Turner #include "lldb/Utility/StringList.h"
152c1f46dcSZachary Turner 
16c5f28e2aSKamil Rytarowski #include "llvm/Support/Threading.h"
17c5f28e2aSKamil Rytarowski 
182c1f46dcSZachary Turner #include <mutex>
192c1f46dcSZachary Turner 
202c1f46dcSZachary Turner using namespace lldb;
212c1f46dcSZachary Turner using namespace lldb_private;
222c1f46dcSZachary Turner 
23*8d1fb843SJonas Devlieghere ScriptInterpreterNone::ScriptInterpreterNone(Debugger &debugger)
24*8d1fb843SJonas Devlieghere     : ScriptInterpreter(debugger, eScriptLanguageNone) {}
252c1f46dcSZachary Turner 
26b9c1b51eSKate Stone ScriptInterpreterNone::~ScriptInterpreterNone() {}
272c1f46dcSZachary Turner 
284d51a902SRaphael Isemann bool ScriptInterpreterNone::ExecuteOneLine(llvm::StringRef command,
29b9c1b51eSKate Stone                                            CommandReturnObject *,
30b9c1b51eSKate Stone                                            const ExecuteScriptOptions &) {
31*8d1fb843SJonas Devlieghere   m_debugger.GetErrorFile()->PutCString(
322c1f46dcSZachary Turner       "error: there is no embedded script interpreter in this mode.\n");
332c1f46dcSZachary Turner   return false;
342c1f46dcSZachary Turner }
352c1f46dcSZachary Turner 
36b9c1b51eSKate Stone void ScriptInterpreterNone::ExecuteInterpreterLoop() {
37*8d1fb843SJonas Devlieghere   m_debugger.GetErrorFile()->PutCString(
382c1f46dcSZachary Turner       "error: there is no embedded script interpreter in this mode.\n");
392c1f46dcSZachary Turner }
402c1f46dcSZachary Turner 
41b9c1b51eSKate Stone void ScriptInterpreterNone::Initialize() {
42c5f28e2aSKamil Rytarowski   static llvm::once_flag g_once_flag;
432c1f46dcSZachary Turner 
44c5f28e2aSKamil Rytarowski   llvm::call_once(g_once_flag, []() {
45b9c1b51eSKate Stone     PluginManager::RegisterPlugin(GetPluginNameStatic(),
46b9c1b51eSKate Stone                                   GetPluginDescriptionStatic(),
472c1f46dcSZachary Turner                                   lldb::eScriptLanguageNone, CreateInstance);
482c1f46dcSZachary Turner   });
492c1f46dcSZachary Turner }
502c1f46dcSZachary Turner 
51b9c1b51eSKate Stone void ScriptInterpreterNone::Terminate() {}
522c1f46dcSZachary Turner 
532c1f46dcSZachary Turner lldb::ScriptInterpreterSP
54*8d1fb843SJonas Devlieghere ScriptInterpreterNone::CreateInstance(Debugger &debugger) {
55*8d1fb843SJonas Devlieghere   return std::make_shared<ScriptInterpreterNone>(debugger);
562c1f46dcSZachary Turner }
572c1f46dcSZachary Turner 
58b9c1b51eSKate Stone lldb_private::ConstString ScriptInterpreterNone::GetPluginNameStatic() {
592c1f46dcSZachary Turner   static ConstString g_name("script-none");
602c1f46dcSZachary Turner   return g_name;
612c1f46dcSZachary Turner }
622c1f46dcSZachary Turner 
63b9c1b51eSKate Stone const char *ScriptInterpreterNone::GetPluginDescriptionStatic() {
642c1f46dcSZachary Turner   return "Null script interpreter";
652c1f46dcSZachary Turner }
662c1f46dcSZachary Turner 
67b9c1b51eSKate Stone lldb_private::ConstString ScriptInterpreterNone::GetPluginName() {
682c1f46dcSZachary Turner   return GetPluginNameStatic();
692c1f46dcSZachary Turner }
702c1f46dcSZachary Turner 
71b9c1b51eSKate Stone uint32_t ScriptInterpreterNone::GetPluginVersion() { return 1; }
72