1 //===-- ClangREPL.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-exception 6 // 7 //===----------------------------------------------------------------------===// 8 9 #ifndef LLDB_SOURCE_PLUGINS_REPL_CLANG_CLANGREPL_H 10 #define LLDB_SOURCE_PLUGINS_REPL_CLANG_CLANGREPL_H 11 12 #include "lldb/Expression/REPL.h" 13 14 namespace lldb_private { 15 /// Implements a Clang-based REPL for C languages on top of LLDB's REPL 16 /// framework. 17 class ClangREPL : public REPL { 18 public: 19 ClangREPL(lldb::LanguageType language, Target &target); 20 21 ~ClangREPL() override; 22 23 static void Initialize(); 24 25 static void Terminate(); 26 27 static lldb::REPLSP CreateInstance(Status &error, lldb::LanguageType language, 28 Debugger *debugger, Target *target, 29 const char *repl_options); 30 31 static llvm::StringRef GetPluginNameStatic() { return "ClangREPL"; } 32 33 protected: 34 Status DoInitialization() override; 35 36 ConstString GetSourceFileBasename() override; 37 38 const char *GetAutoIndentCharacters() override; 39 40 bool SourceIsComplete(const std::string &source) override; 41 42 lldb::offset_t GetDesiredIndentation(const StringList &lines, 43 int cursor_position, 44 int tab_size) override; 45 46 lldb::LanguageType GetLanguage() override; 47 48 bool PrintOneVariable(Debugger &debugger, lldb::StreamFileSP &output_sp, 49 lldb::ValueObjectSP &valobj_sp, 50 ExpressionVariable *var = nullptr) override; 51 52 void CompleteCode(const std::string ¤t_code, 53 CompletionRequest &request) override; 54 55 private: 56 /// The specific C language of this REPL. 57 lldb::LanguageType m_language; 58 /// A regex matching the implicitly created LLDB result variables. 59 lldb_private::RegularExpression m_implicit_expr_result_regex; 60 }; 61 } // namespace lldb_private 62 63 #endif // LLDB_SOURCE_PLUGINS_REPL_CLANG_CLANGREPL_H 64