003 File Manager
Current Path:
/usr/src/contrib/llvm-project/lldb/include/lldb/Core
usr
/
src
/
contrib
/
llvm-project
/
lldb
/
include
/
lldb
/
Core
/
📁
..
📄
Address.h
(19.2 KB)
📄
AddressRange.h
(8.4 KB)
📄
AddressResolver.h
(1.9 KB)
📄
AddressResolverFileLine.h
(1.93 KB)
📄
AddressResolverName.h
(2.12 KB)
📄
Architecture.h
(4.65 KB)
📄
Communication.h
(14.32 KB)
📄
Debugger.h
(13.51 KB)
📄
Disassembler.h
(18.46 KB)
📄
DumpDataExtractor.h
(3.58 KB)
📄
DumpRegisterValue.h
(1013 B)
📄
EmulateInstruction.h
(19.35 KB)
📄
FileLineResolver.h
(2.15 KB)
📄
FileSpecList.h
(5.88 KB)
📄
FormatEntity.h
(6.2 KB)
📄
Highlighter.h
(5.49 KB)
📄
IOHandler.h
(16.98 KB)
📄
IOHandlerCursesGUI.h
(928 B)
📄
IOStreamMacros.h
(1.87 KB)
📄
LoadedModuleInfoList.h
(2.86 KB)
📄
Mangled.h
(9.11 KB)
📄
MappedHash.h
(11.58 KB)
📄
Module.h
(42.01 KB)
📄
ModuleChild.h
(1.73 KB)
📄
ModuleList.h
(17.43 KB)
📄
ModuleSpec.h
(11.82 KB)
📄
Opcode.h
(6.75 KB)
📄
PluginInterface.h
(724 B)
📄
PluginManager.h
(17.12 KB)
📄
PropertiesBase.td
(1.3 KB)
📄
RichManglingContext.h
(3.78 KB)
📄
SearchFilter.h
(14.2 KB)
📄
Section.h
(9.83 KB)
📄
SourceManager.h
(5.59 KB)
📄
StreamAsynchronousIO.h
(973 B)
📄
StreamBuffer.h
(1.66 KB)
📄
StreamFile.h
(1.59 KB)
📄
StructuredDataImpl.h
(4.28 KB)
📄
ThreadSafeDenseMap.h
(1.59 KB)
📄
ThreadSafeDenseSet.h
(1.31 KB)
📄
ThreadSafeValue.h
(1.62 KB)
📄
UniqueCStringMap.h
(7.76 KB)
📄
UserSettingsController.h
(3.21 KB)
📄
Value.h
(6.99 KB)
📄
ValueObject.h
(36.66 KB)
📄
ValueObjectCast.h
(1.84 KB)
📄
ValueObjectChild.h
(2.82 KB)
📄
ValueObjectConstResult.h
(5.79 KB)
📄
ValueObjectConstResultCast.h
(2.26 KB)
📄
ValueObjectConstResultChild.h
(2.75 KB)
📄
ValueObjectConstResultImpl.h
(2.66 KB)
📄
ValueObjectDynamicValue.h
(3.72 KB)
📄
ValueObjectList.h
(1.69 KB)
📄
ValueObjectMemory.h
(2.59 KB)
📄
ValueObjectRegister.h
(4.09 KB)
📄
ValueObjectSyntheticFilter.h
(5.05 KB)
📄
ValueObjectVariable.h
(2.64 KB)
📄
dwarf.h
(3.19 KB)
Editing: RichManglingContext.h
//===-- RichManglingContext.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_CORE_RICHMANGLINGCONTEXT_H #define LLDB_CORE_RICHMANGLINGCONTEXT_H #include "lldb/lldb-forward.h" #include "lldb/lldb-private.h" #include "lldb/Utility/ConstString.h" #include "llvm/ADT/Any.h" #include "llvm/ADT/SmallString.h" #include "llvm/Demangle/Demangle.h" namespace lldb_private { /// Uniform wrapper for access to rich mangling information from different /// providers. See Mangled::DemangleWithRichManglingInfo() class RichManglingContext { public: RichManglingContext() : m_provider(None), m_ipd_buf_size(2048) { m_ipd_buf = static_cast<char *>(std::malloc(m_ipd_buf_size)); m_ipd_buf[0] = '\0'; } ~RichManglingContext() { std::free(m_ipd_buf); } /// Use the ItaniumPartialDemangler to obtain rich mangling information from /// the given mangled name. bool FromItaniumName(ConstString mangled); /// Use the legacy language parser implementation to obtain rich mangling /// information from the given demangled name. bool FromCxxMethodName(ConstString demangled); /// If this symbol describes a constructor or destructor. bool IsCtorOrDtor() const; /// If this symbol describes a function. bool IsFunction() const; /// Get the base name of a function. This doesn't include trailing template /// arguments, ie "a::b<int>" gives "b". The result will overwrite the /// internal buffer. It can be obtained via GetBufferRef(). void ParseFunctionBaseName(); /// Get the context name for a function. For "a::b::c", this function returns /// "a::b". The result will overwrite the internal buffer. It can be obtained /// via GetBufferRef(). void ParseFunctionDeclContextName(); /// Get the entire demangled name. The result will overwrite the internal /// buffer. It can be obtained via GetBufferRef(). void ParseFullName(); /// Obtain a StringRef to the internal buffer that holds the result of the /// most recent ParseXy() operation. The next ParseXy() call invalidates it. llvm::StringRef GetBufferRef() const { assert(m_provider != None && "Initialize a provider first"); return m_buffer; } private: enum InfoProvider { None, ItaniumPartialDemangler, PluginCxxLanguage }; /// Selects the rich mangling info provider. InfoProvider m_provider; /// Reference to the buffer used for results of ParseXy() operations. llvm::StringRef m_buffer; /// Members for ItaniumPartialDemangler llvm::ItaniumPartialDemangler m_ipd; char *m_ipd_buf; size_t m_ipd_buf_size; /// Members for PluginCxxLanguage /// Cannot forward declare inner class CPlusPlusLanguage::MethodName. The /// respective header is in Plugins and including it from here causes cyclic /// dependency. Instead keep a llvm::Any and cast it on-access in the cpp. llvm::Any m_cxx_method_parser; /// Clean up memory and set a new info provider for this instance. void ResetProvider(InfoProvider new_provider); /// Uniform handling of string buffers for ItaniumPartialDemangler. void processIPDStrResult(char *ipd_res, size_t res_len); /// Cast the given parser to the given type. Ideally we would have a type /// trait to deduce \a ParserT from a given InfoProvider, but unfortunately we /// can't access CPlusPlusLanguage::MethodName from within the header. template <class ParserT> static ParserT *get(llvm::Any parser) { assert(parser.hasValue()); assert(llvm::any_isa<ParserT *>(parser)); return llvm::any_cast<ParserT *>(parser); } }; } // namespace lldb_private #endif
Upload File
Create Folder