003 File Manager
Current Path:
/usr/src/contrib/llvm-project/lldb/source/Plugins/Language/CPlusPlus
usr
/
src
/
contrib
/
llvm-project
/
lldb
/
source
/
Plugins
/
Language
/
CPlusPlus
/
📁
..
📄
BlockPointer.cpp
(7.04 KB)
📄
BlockPointer.h
(963 B)
📄
CPlusPlusLanguage.cpp
(45.02 KB)
📄
CPlusPlusLanguage.h
(4.25 KB)
📄
CPlusPlusNameParser.cpp
(19.55 KB)
📄
CPlusPlusNameParser.h
(5.18 KB)
📄
CxxStringTypes.cpp
(8.31 KB)
📄
CxxStringTypes.h
(1.86 KB)
📄
LibCxx.cpp
(26.28 KB)
📄
LibCxx.h
(6.14 KB)
📄
LibCxxAtomic.cpp
(4.36 KB)
📄
LibCxxAtomic.h
(1.15 KB)
📄
LibCxxBitset.cpp
(4.08 KB)
📄
LibCxxInitializerList.cpp
(3.8 KB)
📄
LibCxxList.cpp
(12.13 KB)
📄
LibCxxMap.cpp
(13.8 KB)
📄
LibCxxOptional.cpp
(2.54 KB)
📄
LibCxxQueue.cpp
(2.08 KB)
📄
LibCxxTuple.cpp
(2.88 KB)
📄
LibCxxUnorderedMap.cpp
(7.59 KB)
📄
LibCxxVariant.cpp
(6.64 KB)
📄
LibCxxVariant.h
(1.1 KB)
📄
LibCxxVector.cpp
(8.98 KB)
📄
LibStdcpp.cpp
(12.73 KB)
📄
LibStdcpp.h
(2.22 KB)
📄
LibStdcppTuple.cpp
(3.49 KB)
📄
LibStdcppUniquePointer.cpp
(4.97 KB)
📄
MSVCUndecoratedNameParser.cpp
(2.64 KB)
📄
MSVCUndecoratedNameParser.h
(1.59 KB)
Editing: CPlusPlusLanguage.h
//===-- CPlusPlusLanguage.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_CPLUSPLUS_CPLUSPLUSLANGUAGE_H #define LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_CPLUSPLUSLANGUAGE_H #include <set> #include <vector> #include "llvm/ADT/StringRef.h" #include "Plugins/Language/ClangCommon/ClangHighlighter.h" #include "lldb/Target/Language.h" #include "lldb/Utility/ConstString.h" #include "lldb/lldb-private.h" namespace lldb_private { class CPlusPlusLanguage : public Language { ClangHighlighter m_highlighter; public: class MethodName { public: MethodName() : m_full(), m_basename(), m_context(), m_arguments(), m_qualifiers(), m_parsed(false), m_parse_error(false) {} MethodName(ConstString s) : m_full(s), m_basename(), m_context(), m_arguments(), m_qualifiers(), m_parsed(false), m_parse_error(false) {} void Clear(); bool IsValid() { if (!m_parsed) Parse(); if (m_parse_error) return false; return (bool)m_full; } ConstString GetFullName() const { return m_full; } std::string GetScopeQualifiedName(); llvm::StringRef GetBasename(); llvm::StringRef GetContext(); llvm::StringRef GetArguments(); llvm::StringRef GetQualifiers(); protected: void Parse(); bool TrySimplifiedParse(); ConstString m_full; // Full name: // "lldb::SBTarget::GetBreakpointAtIndex(unsigned int) // const" llvm::StringRef m_basename; // Basename: "GetBreakpointAtIndex" llvm::StringRef m_context; // Decl context: "lldb::SBTarget" llvm::StringRef m_arguments; // Arguments: "(unsigned int)" llvm::StringRef m_qualifiers; // Qualifiers: "const" bool m_parsed; bool m_parse_error; }; CPlusPlusLanguage() = default; ~CPlusPlusLanguage() override = default; lldb::LanguageType GetLanguageType() const override { return lldb::eLanguageTypeC_plus_plus; } std::unique_ptr<TypeScavenger> GetTypeScavenger() override; lldb::TypeCategoryImplSP GetFormatters() override; HardcodedFormatters::HardcodedSummaryFinder GetHardcodedSummaries() override; HardcodedFormatters::HardcodedSyntheticFinder GetHardcodedSynthetics() override; bool IsSourceFile(llvm::StringRef file_path) const override; const Highlighter *GetHighlighter() const override { return &m_highlighter; } // Static Functions static void Initialize(); static void Terminate(); static lldb_private::Language *CreateInstance(lldb::LanguageType language); static lldb_private::ConstString GetPluginNameStatic(); static bool IsCPPMangledName(llvm::StringRef name); // Extract C++ context and identifier from a string using heuristic matching // (as opposed to // CPlusPlusLanguage::MethodName which has to have a fully qualified C++ name // with parens and arguments. // If the name is a lone C identifier (e.g. C) or a qualified C identifier // (e.g. A::B::C) it will return true, // and identifier will be the identifier (C and C respectively) and the // context will be "" and "A::B" respectively. // If the name fails the heuristic matching for a qualified or unqualified // C/C++ identifier, then it will return false // and identifier and context will be unchanged. static bool ExtractContextAndIdentifier(const char *name, llvm::StringRef &context, llvm::StringRef &identifier); // Given a mangled function name, calculates some alternative manglings since // the compiler mangling may not line up with the symbol we are expecting static uint32_t FindAlternateFunctionManglings(const ConstString mangled, std::set<ConstString> &candidates); // PluginInterface protocol ConstString GetPluginName() override; uint32_t GetPluginVersion() override; }; } // namespace lldb_private #endif // LLDB_SOURCE_PLUGINS_LANGUAGE_CPLUSPLUS_CPLUSPLUSLANGUAGE_H
Upload File
Create Folder