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: StructuredDataImpl.h
//===-- StructuredDataImpl.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_STRUCTUREDDATAIMPL_H #define LLDB_CORE_STRUCTUREDDATAIMPL_H #include "lldb/Target/StructuredDataPlugin.h" #include "lldb/Utility/Event.h" #include "lldb/Utility/Status.h" #include "lldb/Utility/Stream.h" #include "lldb/Utility/StructuredData.h" #include "lldb/lldb-enumerations.h" #include "lldb/lldb-forward.h" #include "llvm/ADT/StringRef.h" #pragma mark-- #pragma mark StructuredDataImpl namespace lldb_private { class StructuredDataImpl { public: StructuredDataImpl() : m_plugin_wp(), m_data_sp() {} StructuredDataImpl(const StructuredDataImpl &rhs) = default; StructuredDataImpl(const lldb::EventSP &event_sp) : m_plugin_wp( EventDataStructuredData::GetPluginFromEvent(event_sp.get())), m_data_sp(EventDataStructuredData::GetObjectFromEvent(event_sp.get())) { } ~StructuredDataImpl() = default; StructuredDataImpl &operator=(const StructuredDataImpl &rhs) = default; bool IsValid() const { return m_data_sp.get() != nullptr; } void Clear() { m_plugin_wp.reset(); m_data_sp.reset(); } Status GetAsJSON(Stream &stream) const { Status error; if (!m_data_sp) { error.SetErrorString("No structured data."); return error; } llvm::json::OStream s(stream.AsRawOstream()); m_data_sp->Serialize(s); return error; } Status GetDescription(Stream &stream) const { Status error; if (!m_data_sp) { error.SetErrorString("Cannot pretty print structured data: " "no data to print."); return error; } // Grab the plugin. auto plugin_sp = lldb::StructuredDataPluginSP(m_plugin_wp); if (!plugin_sp) { error.SetErrorString("Cannot pretty print structured data: " "plugin doesn't exist."); return error; } // Get the data's description. return plugin_sp->GetDescription(m_data_sp, stream); } StructuredData::ObjectSP GetObjectSP() { return m_data_sp; } void SetObjectSP(const StructuredData::ObjectSP &obj) { m_data_sp = obj; } lldb::StructuredDataType GetType() const { return (m_data_sp ? m_data_sp->GetType() : lldb::eStructuredDataTypeInvalid); } size_t GetSize() const { if (!m_data_sp) return 0; if (m_data_sp->GetType() == lldb::eStructuredDataTypeDictionary) { auto dict = m_data_sp->GetAsDictionary(); return (dict->GetSize()); } else if (m_data_sp->GetType() == lldb::eStructuredDataTypeArray) { auto array = m_data_sp->GetAsArray(); return (array->GetSize()); } else return 0; } StructuredData::ObjectSP GetValueForKey(const char *key) const { if (m_data_sp) { auto dict = m_data_sp->GetAsDictionary(); if (dict) return dict->GetValueForKey(llvm::StringRef(key)); } return StructuredData::ObjectSP(); } StructuredData::ObjectSP GetItemAtIndex(size_t idx) const { if (m_data_sp) { auto array = m_data_sp->GetAsArray(); if (array) return array->GetItemAtIndex(idx); } return StructuredData::ObjectSP(); } uint64_t GetIntegerValue(uint64_t fail_value = 0) const { return (m_data_sp ? m_data_sp->GetIntegerValue(fail_value) : fail_value); } double GetFloatValue(double fail_value = 0.0) const { return (m_data_sp ? m_data_sp->GetFloatValue(fail_value) : fail_value); } bool GetBooleanValue(bool fail_value = false) const { return (m_data_sp ? m_data_sp->GetBooleanValue(fail_value) : fail_value); } size_t GetStringValue(char *dst, size_t dst_len) const { if (!m_data_sp) return 0; llvm::StringRef result = m_data_sp->GetStringValue(); if (result.empty()) return 0; if (!dst || !dst_len) { char s[1]; return (::snprintf(s, 1, "%s", result.data())); } return (::snprintf(dst, dst_len, "%s", result.data())); } private: lldb::StructuredDataPluginWP m_plugin_wp; StructuredData::ObjectSP m_data_sp; }; } // namespace lldb_private #endif
Upload File
Create Folder