This PR converts the syntax highlighters to plugins. Previously, the highlighters were part of the Language plugin, using a library shared by the C-like languages. The Highlighters already had a plugin-like design, with a clang and default highlighter. This PR takes them out of the language plugin and into their own highlighter plugin. They are still accessed thought he HighlightManager. This change is motivated by #170250. It will allow us to have both a clang and tree-sitter based highlighter, as well as make it possible to have a highlighter for a language that doesn't have an upstream language plugin, like Swift or Rust.
54 lines
1.6 KiB
C++
54 lines
1.6 KiB
C++
//===-- ObjCPlusPlusLanguage.h ----------------------------------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef LLDB_SOURCE_PLUGINS_LANGUAGE_OBJCPLUSPLUS_OBJCPLUSPLUSLANGUAGE_H
|
|
#define LLDB_SOURCE_PLUGINS_LANGUAGE_OBJCPLUSPLUS_OBJCPLUSPLUSLANGUAGE_H
|
|
|
|
#include "lldb/Target/Language.h"
|
|
#include "lldb/lldb-private.h"
|
|
|
|
namespace lldb_private {
|
|
|
|
class ObjCPlusPlusLanguage : public Language {
|
|
public:
|
|
ObjCPlusPlusLanguage() = default;
|
|
|
|
~ObjCPlusPlusLanguage() override = default;
|
|
|
|
lldb::LanguageType GetLanguageType() const override {
|
|
return lldb::eLanguageTypeObjC_plus_plus;
|
|
}
|
|
|
|
llvm::StringRef GetUserEntryPointName() const override { return "main"; }
|
|
|
|
llvm::StringRef GetNilReferenceSummaryString() override { return "nil"; }
|
|
|
|
bool IsSourceFile(llvm::StringRef file_path) const override;
|
|
|
|
// Static Functions
|
|
static void Initialize();
|
|
|
|
static void Terminate();
|
|
|
|
static lldb_private::Language *CreateInstance(lldb::LanguageType language);
|
|
|
|
llvm::StringRef GetInstanceVariableName() override { return "self"; }
|
|
|
|
virtual std::optional<bool>
|
|
GetBooleanFromString(llvm::StringRef str) const override;
|
|
|
|
static llvm::StringRef GetPluginNameStatic() { return "objcplusplus"; }
|
|
|
|
// PluginInterface protocol
|
|
llvm::StringRef GetPluginName() override { return GetPluginNameStatic(); }
|
|
};
|
|
|
|
} // namespace lldb_private
|
|
|
|
#endif // LLDB_SOURCE_PLUGINS_LANGUAGE_OBJCPLUSPLUS_OBJCPLUSPLUSLANGUAGE_H
|