xref: /freebsd-src/contrib/llvm-project/lldb/source/Plugins/Language/ObjCPlusPlus/ObjCPlusPlusLanguage.h (revision 5f757f3ff9144b609b3c433dfd370cc6bdc191ad)
10b57cec5SDimitry Andric //===-- ObjCPlusPlusLanguage.h ----------------------------------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
95ffd83dbSDimitry Andric #ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_OBJCPLUSPLUS_OBJCPLUSPLUSLANGUAGE_H
105ffd83dbSDimitry Andric #define LLDB_SOURCE_PLUGINS_LANGUAGE_OBJCPLUSPLUS_OBJCPLUSPLUSLANGUAGE_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "Plugins/Language/ClangCommon/ClangHighlighter.h"
130b57cec5SDimitry Andric #include "lldb/Target/Language.h"
140b57cec5SDimitry Andric #include "lldb/lldb-private.h"
150b57cec5SDimitry Andric 
160b57cec5SDimitry Andric namespace lldb_private {
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric class ObjCPlusPlusLanguage : public Language {
190b57cec5SDimitry Andric   ClangHighlighter m_highlighter;
200b57cec5SDimitry Andric 
210b57cec5SDimitry Andric public:
220b57cec5SDimitry Andric   ObjCPlusPlusLanguage() = default;
230b57cec5SDimitry Andric 
240b57cec5SDimitry Andric   ~ObjCPlusPlusLanguage() override = default;
250b57cec5SDimitry Andric 
GetLanguageType()260b57cec5SDimitry Andric   lldb::LanguageType GetLanguageType() const override {
270b57cec5SDimitry Andric     return lldb::eLanguageTypeObjC_plus_plus;
280b57cec5SDimitry Andric   }
290b57cec5SDimitry Andric 
GetUserEntryPointName()30*5f757f3fSDimitry Andric   llvm::StringRef GetUserEntryPointName() const override { return "main"; }
31*5f757f3fSDimitry Andric 
GetNilReferenceSummaryString()32e8d8bef9SDimitry Andric   llvm::StringRef GetNilReferenceSummaryString() override { return "nil"; }
33e8d8bef9SDimitry Andric 
340b57cec5SDimitry Andric   bool IsSourceFile(llvm::StringRef file_path) const override;
350b57cec5SDimitry Andric 
GetHighlighter()360b57cec5SDimitry Andric   const Highlighter *GetHighlighter() const override { return &m_highlighter; }
370b57cec5SDimitry Andric 
380b57cec5SDimitry Andric   // Static Functions
390b57cec5SDimitry Andric   static void Initialize();
400b57cec5SDimitry Andric 
410b57cec5SDimitry Andric   static void Terminate();
420b57cec5SDimitry Andric 
430b57cec5SDimitry Andric   static lldb_private::Language *CreateInstance(lldb::LanguageType language);
440b57cec5SDimitry Andric 
GetInstanceVariableName()4506c3fb27SDimitry Andric   llvm::StringRef GetInstanceVariableName() override { return "self"; }
4606c3fb27SDimitry Andric 
GetPluginNameStatic()47349cc55cSDimitry Andric   static llvm::StringRef GetPluginNameStatic() { return "objcplusplus"; }
480b57cec5SDimitry Andric 
490b57cec5SDimitry Andric   // PluginInterface protocol
GetPluginName()50349cc55cSDimitry Andric   llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
510b57cec5SDimitry Andric };
520b57cec5SDimitry Andric 
530b57cec5SDimitry Andric } // namespace lldb_private
540b57cec5SDimitry Andric 
555ffd83dbSDimitry Andric #endif // LLDB_SOURCE_PLUGINS_LANGUAGE_OBJCPLUSPLUS_OBJCPLUSPLUSLANGUAGE_H
56