Nuke CXXFormatterFunctions.cpp - split the contents of it across different files, so that things are better organized along the C++/ObjC line
This is preparatory work for moving these formatters into language categories llvm-svn: 246827
This commit is contained in:
parent
f9cdea9d74
commit
419d79189f
|
@ -0,0 +1,34 @@
|
|||
//===-- CF.h ---------------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_CF_h_
|
||||
#define liblldb_CF_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
bool
|
||||
CFBagSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFBinaryHeapSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFBitVectorSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFAbsoluteTimeSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_CF_h_
|
|
@ -1,375 +0,0 @@
|
|||
//===-- CXXFormatterFunctions.h------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_CXXFormatterFunctions_h_
|
||||
#define liblldb_CXXFormatterFunctions_h_
|
||||
|
||||
#include <stdint.h>
|
||||
#include <time.h>
|
||||
|
||||
#include "lldb/lldb-forward.h"
|
||||
|
||||
#include "lldb/Core/ConstString.h"
|
||||
#include "lldb/DataFormatters/FormatClasses.h"
|
||||
#include "lldb/DataFormatters/TypeSynthetic.h"
|
||||
#include "lldb/DataFormatters/VectorType.h"
|
||||
#include "lldb/Target/ExecutionContext.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
||||
#include "clang/AST/ASTContext.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
StackFrame*
|
||||
GetViableFrame (ExecutionContext exe_ctx);
|
||||
|
||||
bool
|
||||
ExtractValueFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
uint64_t &value);
|
||||
|
||||
bool
|
||||
ExtractSummaryFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
Stream &stream);
|
||||
|
||||
lldb::ValueObjectSP
|
||||
CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
uint64_t index);
|
||||
|
||||
lldb::ValueObjectSP
|
||||
CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
const char* key);
|
||||
|
||||
size_t
|
||||
ExtractIndexFromString (const char* item_name);
|
||||
|
||||
time_t
|
||||
GetOSXEpoch ();
|
||||
|
||||
bool
|
||||
FunctionPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // C++ function pointer
|
||||
|
||||
bool
|
||||
Char16StringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char16_t* and unichar*
|
||||
|
||||
bool
|
||||
Char32StringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char32_t*
|
||||
|
||||
bool
|
||||
WCharStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // wchar_t*
|
||||
|
||||
bool
|
||||
Char16SummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char16_t and unichar
|
||||
|
||||
bool
|
||||
Char32SummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char32_t
|
||||
|
||||
bool
|
||||
WCharSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // wchar_t
|
||||
|
||||
bool
|
||||
LibcxxStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // libc++ std::string
|
||||
|
||||
bool
|
||||
LibcxxWStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // libc++ std::wstring
|
||||
|
||||
bool
|
||||
LibcxxSmartPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // libc++ std::shared_ptr<> and std::weak_ptr<>
|
||||
|
||||
bool
|
||||
ObjCClassSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
SyntheticChildrenFrontEnd* ObjCClassSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
template<bool name_entries>
|
||||
bool
|
||||
NSDictionarySummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSIndexSetSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSArraySummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
template<bool cf_style>
|
||||
bool
|
||||
NSSetSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
template<bool needs_at>
|
||||
bool
|
||||
NSDataSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSNumberSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSNotificationSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSTimeZoneSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSMachPortSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFBagSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFBinaryHeapSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFBitVectorSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSDateSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
CFAbsoluteTimeSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSBundleSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSTaggedString_SummaryProvider (ObjCLanguageRuntime::ClassDescriptorSP descriptor, Stream& stream);
|
||||
|
||||
bool
|
||||
NSAttributedStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSMutableAttributedStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSURLSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
ObjCBOOLSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
template <bool is_sel_ptr>
|
||||
bool
|
||||
ObjCSELSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
extern template bool
|
||||
NSDictionarySummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
NSDictionarySummaryProvider<false> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
NSDataSummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
NSDataSummaryProvider<false> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
ObjCSELSummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&);
|
||||
|
||||
extern template bool
|
||||
ObjCSELSummaryProvider<false> (ValueObject&, Stream&, const TypeSummaryOptions&);
|
||||
|
||||
bool
|
||||
CMTimeSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSDictionarySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSSetSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSIndexPathSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
class LibcxxVectorBoolSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibcxxVectorBoolSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~LibcxxVectorBoolSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
CompilerType m_bool_type;
|
||||
ExecutionContextRef m_exe_ctx_ref;
|
||||
uint64_t m_count;
|
||||
lldb::addr_t m_base_data_address;
|
||||
std::map<size_t,lldb::ValueObjectSP> m_children;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxVectorBoolSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
bool
|
||||
LibcxxContainerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
class LibstdcppMapIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName (const ConstString &name) override;
|
||||
|
||||
~LibstdcppMapIteratorSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ExecutionContextRef m_exe_ctx_ref;
|
||||
lldb::addr_t m_pair_address;
|
||||
CompilerType m_pair_type;
|
||||
EvaluateExpressionOptions m_options;
|
||||
lldb::ValueObjectSP m_pair_sp;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibstdcppMapIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
class LibCxxMapIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibCxxMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~LibCxxMapIteratorSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ValueObject *m_pair_ptr;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibCxxMapIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
class VectorIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
VectorIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp,
|
||||
ConstString item_name);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~VectorIteratorSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ExecutionContextRef m_exe_ctx_ref;
|
||||
ConstString m_item_name;
|
||||
lldb::ValueObjectSP m_item_sp;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibCxxVectorIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibStdcppVectorIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
class LibcxxSharedPtrSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibcxxSharedPtrSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~LibcxxSharedPtrSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ValueObject* m_cntrl;
|
||||
lldb::ValueObjectSP m_count_sp;
|
||||
lldb::ValueObjectSP m_weak_count_sp;
|
||||
uint8_t m_ptr_size;
|
||||
lldb::ByteOrder m_byte_order;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxSharedPtrSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdVectorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdListSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdMapSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdUnorderedMapSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxInitializerListSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* VectorTypeSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_CXXFormatterFunctions_h_
|
|
@ -0,0 +1,25 @@
|
|||
//===-- CXXFunctionPointer.h ------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_CXXFunctionPointer_h_
|
||||
#define liblldb_CXXFunctionPointer_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
bool
|
||||
CXXFunctionPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_CXXFunctionPointer_h_
|
|
@ -0,0 +1,115 @@
|
|||
//===-- Cocoa.h ---------------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_Cocoa_h_
|
||||
#define liblldb_Cocoa_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
template<bool name_entries>
|
||||
bool
|
||||
NSDictionarySummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSIndexSetSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSArraySummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
template<bool cf_style>
|
||||
bool
|
||||
NSSetSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
template<bool needs_at>
|
||||
bool
|
||||
NSDataSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSNumberSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSNotificationSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSTimeZoneSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSMachPortSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSDateSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSBundleSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSTaggedString_SummaryProvider (ObjCLanguageRuntime::ClassDescriptorSP descriptor, Stream& stream);
|
||||
|
||||
bool
|
||||
NSAttributedStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSMutableAttributedStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
bool
|
||||
NSURLSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
extern template bool
|
||||
NSDictionarySummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
NSDictionarySummaryProvider<false> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
NSDataSummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
extern template bool
|
||||
NSDataSummaryProvider<false> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
SyntheticChildrenFrontEnd* NSArraySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSDictionarySyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSSetSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* NSIndexPathSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
bool
|
||||
ObjCClassSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
SyntheticChildrenFrontEnd* ObjCClassSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
bool
|
||||
ObjCBOOLSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
template <bool is_sel_ptr>
|
||||
bool
|
||||
ObjCSELSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
extern template bool
|
||||
ObjCSELSummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&);
|
||||
|
||||
extern template bool
|
||||
ObjCSELSummaryProvider<false> (ValueObject&, Stream&, const TypeSummaryOptions&);
|
||||
|
||||
bool
|
||||
RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_Cocoa_h_
|
|
@ -0,0 +1,26 @@
|
|||
//===-- CoreMedia.h -----------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_CoreMedia_h_
|
||||
#define liblldb_CoreMedia_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
|
||||
bool
|
||||
CMTimeSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_CF_h_
|
|
@ -0,0 +1,41 @@
|
|||
//===-- CxxStringTypes.h ----------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_CxxStringTypes_h_
|
||||
#define liblldb_CxxStringTypes_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
bool
|
||||
Char16StringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char16_t* and unichar*
|
||||
|
||||
bool
|
||||
Char32StringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char32_t*
|
||||
|
||||
bool
|
||||
WCharStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // wchar_t*
|
||||
|
||||
bool
|
||||
Char16SummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char16_t and unichar
|
||||
|
||||
bool
|
||||
Char32SummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // char32_t
|
||||
|
||||
bool
|
||||
WCharSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // wchar_t
|
||||
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_CxxStringTypes_h_
|
|
@ -69,7 +69,39 @@ namespace lldb_private {
|
|||
ScriptedSyntheticChildren::Flags flags,
|
||||
bool regex = false);
|
||||
#endif
|
||||
|
||||
|
||||
StackFrame*
|
||||
GetViableFrame (ExecutionContext exe_ctx);
|
||||
|
||||
bool
|
||||
ExtractValueFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
uint64_t &value);
|
||||
|
||||
bool
|
||||
ExtractSummaryFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
Stream &stream);
|
||||
|
||||
lldb::ValueObjectSP
|
||||
CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
uint64_t index);
|
||||
|
||||
lldb::ValueObjectSP
|
||||
CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
const char* key);
|
||||
|
||||
size_t
|
||||
ExtractIndexFromString (const char* item_name);
|
||||
|
||||
time_t
|
||||
GetOSXEpoch ();
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
|
|
|
@ -0,0 +1,141 @@
|
|||
//===-- LibCxx.h ---------------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_LibCxx_h_
|
||||
#define liblldb_LibCxx_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/DataFormatters/TypeSynthetic.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
|
||||
bool
|
||||
LibcxxStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // libc++ std::string
|
||||
|
||||
bool
|
||||
LibcxxWStringSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // libc++ std::wstring
|
||||
|
||||
bool
|
||||
LibcxxSmartPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options); // libc++ std::shared_ptr<> and std::weak_ptr<>
|
||||
|
||||
class LibcxxVectorBoolSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibcxxVectorBoolSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~LibcxxVectorBoolSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
CompilerType m_bool_type;
|
||||
ExecutionContextRef m_exe_ctx_ref;
|
||||
uint64_t m_count;
|
||||
lldb::addr_t m_base_data_address;
|
||||
std::map<size_t,lldb::ValueObjectSP> m_children;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxVectorBoolSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
bool
|
||||
LibcxxContainerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options);
|
||||
|
||||
class LibCxxMapIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibCxxMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~LibCxxMapIteratorSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ValueObject *m_pair_ptr;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibCxxMapIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibCxxVectorIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
class LibcxxSharedPtrSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibcxxSharedPtrSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~LibcxxSharedPtrSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ValueObject* m_cntrl;
|
||||
lldb::ValueObjectSP m_count_sp;
|
||||
lldb::ValueObjectSP m_weak_count_sp;
|
||||
uint8_t m_ptr_size;
|
||||
lldb::ByteOrder m_byte_order;
|
||||
};
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxSharedPtrSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdVectorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdListSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdMapSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxStdUnorderedMapSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibcxxInitializerListSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_LibCxx_h_
|
|
@ -0,0 +1,27 @@
|
|||
//===-- LibStdCpp.h ---------------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_LibStdCpp_h_
|
||||
#define liblldb_LibStdCpp_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/DataFormatters/TypeSynthetic.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
SyntheticChildrenFrontEnd* LibstdcppMapIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
|
||||
SyntheticChildrenFrontEnd* LibStdcppVectorIteratorSyntheticFrontEndCreator (CXXSyntheticChildren*, lldb::ValueObjectSP);
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_LibStdCpp_h_
|
|
@ -0,0 +1,52 @@
|
|||
//===-- VectorIterator.h ----------------------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef liblldb_VectorIterator_h_
|
||||
#define liblldb_VectorIterator_h_
|
||||
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
|
||||
namespace lldb_private {
|
||||
namespace formatters
|
||||
{
|
||||
class VectorIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
VectorIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp,
|
||||
ConstString item_name);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName(const ConstString &name) override;
|
||||
|
||||
~VectorIteratorSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ExecutionContextRef m_exe_ctx_ref;
|
||||
ConstString m_item_name;
|
||||
lldb::ValueObjectSP m_item_sp;
|
||||
};
|
||||
|
||||
} // namespace formatters
|
||||
} // namespace lldb_private
|
||||
|
||||
#endif // liblldb_CF_h_
|
|
@ -736,6 +736,7 @@
|
|||
942AFF0719F84C02007B43B4 /* LibCxxInitializerList.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 942AFF0619F84C02007B43B4 /* LibCxxInitializerList.cpp */; };
|
||||
94380B8219940B0A00BFE4A8 /* StringLexer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94380B8119940B0A00BFE4A8 /* StringLexer.cpp */; };
|
||||
9439FB1A19EF140C006FD6A4 /* NSIndexPath.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9439FB1919EF140C006FD6A4 /* NSIndexPath.cpp */; };
|
||||
943B91011B991846007BA499 /* CXXFunctionPointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 943B91001B991846007BA499 /* CXXFunctionPointer.cpp */; settings = {ASSET_TAGS = (); }; };
|
||||
943BDEFE1AA7B2F800789CE8 /* LLDBAssert.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 943BDEFD1AA7B2F800789CE8 /* LLDBAssert.cpp */; };
|
||||
943F31A61B97D9970047A590 /* CxxStringTypes.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 943F31A51B97D9970047A590 /* CxxStringTypes.cpp */; settings = {ASSET_TAGS = (); }; };
|
||||
944372DC171F6B4300E57C32 /* RegisterContextDummy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 944372DA171F6B4300E57C32 /* RegisterContextDummy.cpp */; };
|
||||
|
@ -765,7 +766,6 @@
|
|||
94B6E76213D88365005F417F /* ValueObjectSyntheticFilter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94B6E76113D88362005F417F /* ValueObjectSyntheticFilter.cpp */; };
|
||||
94BA8B6D176F8C9B005A91B5 /* Range.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94BA8B6C176F8C9B005A91B5 /* Range.cpp */; };
|
||||
94BA8B70176F97CE005A91B5 /* CommandHistory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94BA8B6F176F97CE005A91B5 /* CommandHistory.cpp */; };
|
||||
94CB255B16B069770059775D /* CXXFormatterFunctions.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255716B069770059775D /* CXXFormatterFunctions.cpp */; };
|
||||
94CB255C16B069770059775D /* DataVisualization.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255816B069770059775D /* DataVisualization.cpp */; };
|
||||
94CB255D16B069770059775D /* FormatClasses.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255916B069770059775D /* FormatClasses.cpp */; };
|
||||
94CB255E16B069770059775D /* FormatManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 94CB255A16B069770059775D /* FormatManager.cpp */; };
|
||||
|
@ -2425,6 +2425,15 @@
|
|||
94380B8019940B0300BFE4A8 /* StringLexer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = StringLexer.h; path = include/lldb/Utility/StringLexer.h; sourceTree = "<group>"; };
|
||||
94380B8119940B0A00BFE4A8 /* StringLexer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringLexer.cpp; path = source/Utility/StringLexer.cpp; sourceTree = "<group>"; };
|
||||
9439FB1919EF140C006FD6A4 /* NSIndexPath.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = NSIndexPath.cpp; path = source/DataFormatters/NSIndexPath.cpp; sourceTree = "<group>"; };
|
||||
943B90F81B990A27007BA499 /* CF.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CF.h; path = include/lldb/DataFormatters/CF.h; sourceTree = "<group>"; };
|
||||
943B90F91B990A27007BA499 /* Cocoa.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Cocoa.h; path = include/lldb/DataFormatters/Cocoa.h; sourceTree = "<group>"; };
|
||||
943B90FA1B990A27007BA499 /* LibCxx.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibCxx.h; path = include/lldb/DataFormatters/LibCxx.h; sourceTree = "<group>"; };
|
||||
943B90FB1B9913E4007BA499 /* LibStdcpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibStdcpp.h; path = include/lldb/DataFormatters/LibStdcpp.h; sourceTree = "<group>"; };
|
||||
943B90FC1B991586007BA499 /* VectorIterator.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = VectorIterator.h; path = include/lldb/DataFormatters/VectorIterator.h; sourceTree = "<group>"; };
|
||||
943B90FD1B991680007BA499 /* CxxStringTypes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CxxStringTypes.h; path = include/lldb/DataFormatters/CxxStringTypes.h; sourceTree = "<group>"; };
|
||||
943B90FE1B9916F3007BA499 /* CoreMedia.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CoreMedia.h; path = include/lldb/DataFormatters/CoreMedia.h; sourceTree = "<group>"; };
|
||||
943B90FF1B99183B007BA499 /* CXXFunctionPointer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CXXFunctionPointer.h; path = include/lldb/DataFormatters/CXXFunctionPointer.h; sourceTree = "<group>"; };
|
||||
943B91001B991846007BA499 /* CXXFunctionPointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CXXFunctionPointer.cpp; path = source/DataFormatters/CXXFunctionPointer.cpp; sourceTree = "<group>"; };
|
||||
943BDEFC1AA7B2DE00789CE8 /* LLDBAssert.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LLDBAssert.h; path = include/lldb/Utility/LLDBAssert.h; sourceTree = "<group>"; };
|
||||
943BDEFD1AA7B2F800789CE8 /* LLDBAssert.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LLDBAssert.cpp; path = source/Utility/LLDBAssert.cpp; sourceTree = "<group>"; };
|
||||
943F31A51B97D9970047A590 /* CxxStringTypes.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CxxStringTypes.cpp; path = source/DataFormatters/CxxStringTypes.cpp; sourceTree = "<group>"; };
|
||||
|
@ -2487,11 +2496,9 @@
|
|||
94BA8B6E176F8CA0005A91B5 /* Range.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = Range.h; path = include/lldb/Utility/Range.h; sourceTree = "<group>"; };
|
||||
94BA8B6F176F97CE005A91B5 /* CommandHistory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CommandHistory.cpp; path = source/Interpreter/CommandHistory.cpp; sourceTree = "<group>"; };
|
||||
94BA8B71176F97D4005A91B5 /* CommandHistory.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CommandHistory.h; path = include/lldb/Interpreter/CommandHistory.h; sourceTree = "<group>"; };
|
||||
94CB255716B069770059775D /* CXXFormatterFunctions.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CXXFormatterFunctions.cpp; path = source/DataFormatters/CXXFormatterFunctions.cpp; sourceTree = "<group>"; };
|
||||
94CB255816B069770059775D /* DataVisualization.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = DataVisualization.cpp; path = source/DataFormatters/DataVisualization.cpp; sourceTree = "<group>"; };
|
||||
94CB255916B069770059775D /* FormatClasses.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatClasses.cpp; path = source/DataFormatters/FormatClasses.cpp; sourceTree = "<group>"; };
|
||||
94CB255A16B069770059775D /* FormatManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = FormatManager.cpp; path = source/DataFormatters/FormatManager.cpp; sourceTree = "<group>"; };
|
||||
94CB255F16B069800059775D /* CXXFormatterFunctions.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = CXXFormatterFunctions.h; path = include/lldb/DataFormatters/CXXFormatterFunctions.h; sourceTree = "<group>"; };
|
||||
94CB256016B069800059775D /* DataVisualization.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = DataVisualization.h; path = include/lldb/DataFormatters/DataVisualization.h; sourceTree = "<group>"; };
|
||||
94CB256116B069800059775D /* FormatClasses.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatClasses.h; path = include/lldb/DataFormatters/FormatClasses.h; sourceTree = "<group>"; };
|
||||
94CB256216B069800059775D /* FormatManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = FormatManager.h; path = include/lldb/DataFormatters/FormatManager.h; sourceTree = "<group>"; };
|
||||
|
@ -5313,11 +5320,15 @@
|
|||
94CB255616B0683B0059775D /* DataFormatters */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
943B90F81B990A27007BA499 /* CF.h */,
|
||||
94CD704B16F8DDEA00CF1E42 /* CF.cpp */,
|
||||
943B90F91B990A27007BA499 /* Cocoa.h */,
|
||||
94CD704C16F8DDEA00CF1E42 /* Cocoa.cpp */,
|
||||
943B90FE1B9916F3007BA499 /* CoreMedia.h */,
|
||||
9492E2A41A8AC11000295BBD /* CoreMedia.cpp */,
|
||||
94CB255F16B069800059775D /* CXXFormatterFunctions.h */,
|
||||
94CB255716B069770059775D /* CXXFormatterFunctions.cpp */,
|
||||
943B90FF1B99183B007BA499 /* CXXFunctionPointer.h */,
|
||||
943B91001B991846007BA499 /* CXXFunctionPointer.cpp */,
|
||||
943B90FD1B991680007BA499 /* CxxStringTypes.h */,
|
||||
943F31A51B97D9970047A590 /* CxxStringTypes.cpp */,
|
||||
94CB256016B069800059775D /* DataVisualization.h */,
|
||||
94CB255816B069770059775D /* DataVisualization.cpp */,
|
||||
|
@ -5332,12 +5343,14 @@
|
|||
94D0858B1B9675B8000D24BD /* FormattersHelpers.cpp */,
|
||||
942612F51B94FFE900EF842E /* LanguageCategory.h */,
|
||||
942612F61B95000000EF842E /* LanguageCategory.cpp */,
|
||||
943B90FA1B990A27007BA499 /* LibCxx.h */,
|
||||
94D0B10A16D5535900EA9C70 /* LibCxx.cpp */,
|
||||
942AFF0619F84C02007B43B4 /* LibCxxInitializerList.cpp */,
|
||||
94CD704F16F8DF1C00CF1E42 /* LibCxxList.cpp */,
|
||||
94CD705116F8F5BC00CF1E42 /* LibCxxMap.cpp */,
|
||||
94EA27CD17DE91750070F505 /* LibCxxUnorderedMap.cpp */,
|
||||
942AFF0419F84ABF007B43B4 /* LibCxxVector.cpp */,
|
||||
943B90FB1B9913E4007BA499 /* LibStdcpp.h */,
|
||||
94D0B10B16D5535900EA9C70 /* LibStdcpp.cpp */,
|
||||
94D6A0A716CEB55F00833B6E /* NSArray.cpp */,
|
||||
94D6A0A816CEB55F00833B6E /* NSDictionary.cpp */,
|
||||
|
@ -5359,6 +5372,7 @@
|
|||
94CD131919BA33B400DB7BED /* TypeValidator.cpp */,
|
||||
945215DD17F639E600521C0B /* ValueObjectPrinter.h */,
|
||||
945215DE17F639EE00521C0B /* ValueObjectPrinter.cpp */,
|
||||
943B90FC1B991586007BA499 /* VectorIterator.h */,
|
||||
9418EBCB1AA9108B0058B02E /* VectorType.h */,
|
||||
9418EBCC1AA910910058B02E /* VectorType.cpp */,
|
||||
);
|
||||
|
@ -6606,6 +6620,7 @@
|
|||
260CC65215D0440D002BF2E0 /* OptionValueString.cpp in Sources */,
|
||||
6D55B2911A8A806200A70529 /* GDBRemoteCommunicationServerLLGS.cpp in Sources */,
|
||||
260CC65315D0440D002BF2E0 /* OptionValueUInt64.cpp in Sources */,
|
||||
943B91011B991846007BA499 /* CXXFunctionPointer.cpp in Sources */,
|
||||
260CC65415D0440D002BF2E0 /* OptionValueUUID.cpp in Sources */,
|
||||
94BA8B6D176F8C9B005A91B5 /* Range.cpp in Sources */,
|
||||
26DAED6315D327C200E15819 /* OptionValuePathMappings.cpp in Sources */,
|
||||
|
@ -6627,7 +6642,6 @@
|
|||
94094C6B163B6F840083A547 /* ValueObjectCast.cpp in Sources */,
|
||||
AF9107EF168570D200DBCD3C /* RegisterContextDarwin_arm64.cpp in Sources */,
|
||||
AF1FA88A1A60A69500272AFC /* RegisterNumber.cpp in Sources */,
|
||||
94CB255B16B069770059775D /* CXXFormatterFunctions.cpp in Sources */,
|
||||
94CB255C16B069770059775D /* DataVisualization.cpp in Sources */,
|
||||
94CD705016F8DF1C00CF1E42 /* LibCxxList.cpp in Sources */,
|
||||
94CB255D16B069770059775D /* FormatClasses.cpp in Sources */,
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/CF.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
|
|
|
@ -2,7 +2,7 @@ add_lldb_library(lldbDataFormatters
|
|||
CF.cpp
|
||||
Cocoa.cpp
|
||||
CoreMedia.cpp
|
||||
CXXFormatterFunctions.cpp
|
||||
CXXFunctionPointer.cpp
|
||||
CxxStringTypes.cpp
|
||||
DataVisualization.cpp
|
||||
FormatCache.cpp
|
||||
|
|
|
@ -1,266 +0,0 @@
|
|||
//===-- CXXFormatterFunctions.cpp---------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
|
||||
#include "llvm/Support/ConvertUTF.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/SectionLoadList.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
#include "lldb/Target/Thread.h"
|
||||
|
||||
#include "lldb/Utility/ProcessStructReader.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#if __ANDROID_NDK__
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#include "lldb/Host/Time.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
using namespace lldb_private::formatters;
|
||||
|
||||
StackFrame*
|
||||
lldb_private::formatters::GetViableFrame (ExecutionContext exe_ctx)
|
||||
{
|
||||
StackFrame* frame = exe_ctx.GetFramePtr();
|
||||
if (frame)
|
||||
return frame;
|
||||
|
||||
Process* process = exe_ctx.GetProcessPtr();
|
||||
if (!process)
|
||||
return nullptr;
|
||||
|
||||
ThreadSP thread_sp(process->GetThreadList().GetSelectedThread());
|
||||
if (thread_sp)
|
||||
return thread_sp->GetSelectedFrame().get();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::ExtractValueFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
uint64_t &value)
|
||||
{
|
||||
if (!target_type || !*target_type)
|
||||
return false;
|
||||
if (!selector || !*selector)
|
||||
return false;
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[(id)0x%" PRIx64 " %s]",target_type,valobj.GetPointerValue(),selector);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return false;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
result_sp,
|
||||
options);
|
||||
if (!result_sp)
|
||||
return false;
|
||||
value = result_sp->GetValueAsUnsigned(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::ExtractSummaryFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
Stream &stream)
|
||||
{
|
||||
if (!target_type || !*target_type)
|
||||
return false;
|
||||
if (!selector || !*selector)
|
||||
return false;
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[(id)0x%" PRIx64 " %s]",target_type,valobj.GetPointerValue(),selector);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return false;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(lldb::eDynamicCanRunTarget);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
result_sp,
|
||||
options);
|
||||
if (!result_sp)
|
||||
return false;
|
||||
stream.Printf("%s",result_sp->GetSummaryAsCString());
|
||||
return true;
|
||||
}
|
||||
|
||||
lldb::ValueObjectSP
|
||||
lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
uint64_t index)
|
||||
{
|
||||
lldb::ValueObjectSP valobj_sp;
|
||||
if (!return_type || !*return_type)
|
||||
return valobj_sp;
|
||||
if (!selector || !*selector)
|
||||
return valobj_sp;
|
||||
StreamString expr_path_stream;
|
||||
valobj.GetExpressionPath(expr_path_stream, false);
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[%s %s:%" PRId64 "]",return_type,expr_path_stream.GetData(),selector,index);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return valobj_sp;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(lldb::eDynamicCanRunTarget);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
valobj_sp,
|
||||
options);
|
||||
return valobj_sp;
|
||||
}
|
||||
|
||||
lldb::ValueObjectSP
|
||||
lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
const char* key)
|
||||
{
|
||||
lldb::ValueObjectSP valobj_sp;
|
||||
if (!return_type || !*return_type)
|
||||
return valobj_sp;
|
||||
if (!selector || !*selector)
|
||||
return valobj_sp;
|
||||
if (!key || !*key)
|
||||
return valobj_sp;
|
||||
StreamString expr_path_stream;
|
||||
valobj.GetExpressionPath(expr_path_stream, false);
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[%s %s:%s]",return_type,expr_path_stream.GetData(),selector,key);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return valobj_sp;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(lldb::eDynamicCanRunTarget);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
valobj_sp,
|
||||
options);
|
||||
return valobj_sp;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::FunctionPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options)
|
||||
{
|
||||
std::string destination;
|
||||
StreamString sstr;
|
||||
AddressType func_ptr_address_type = eAddressTypeInvalid;
|
||||
addr_t func_ptr_address = valobj.GetPointerValue (&func_ptr_address_type);
|
||||
if (func_ptr_address != 0 && func_ptr_address != LLDB_INVALID_ADDRESS)
|
||||
{
|
||||
switch (func_ptr_address_type)
|
||||
{
|
||||
case eAddressTypeInvalid:
|
||||
case eAddressTypeFile:
|
||||
case eAddressTypeHost:
|
||||
break;
|
||||
|
||||
case eAddressTypeLoad:
|
||||
{
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
|
||||
Address so_addr;
|
||||
Target *target = exe_ctx.GetTargetPtr();
|
||||
if (target && target->GetSectionLoadList().IsEmpty() == false)
|
||||
{
|
||||
if (target->GetSectionLoadList().ResolveLoadAddress(func_ptr_address, so_addr))
|
||||
{
|
||||
so_addr.Dump (&sstr,
|
||||
exe_ctx.GetBestExecutionContextScope(),
|
||||
Address::DumpStyleResolvedDescription,
|
||||
Address::DumpStyleSectionNameOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sstr.GetSize() > 0)
|
||||
{
|
||||
stream.Printf("(%s)", sstr.GetData());
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options)
|
||||
{
|
||||
stream.Printf("%s",valobj.GetObjectDescription());
|
||||
return true;
|
||||
}
|
||||
|
||||
size_t
|
||||
lldb_private::formatters::ExtractIndexFromString (const char* item_name)
|
||||
{
|
||||
if (!item_name || !*item_name)
|
||||
return UINT32_MAX;
|
||||
if (*item_name != '[')
|
||||
return UINT32_MAX;
|
||||
item_name++;
|
||||
char* endptr = NULL;
|
||||
unsigned long int idx = ::strtoul(item_name, &endptr, 0);
|
||||
if (idx == 0 && endptr == item_name)
|
||||
return UINT32_MAX;
|
||||
if (idx == ULONG_MAX)
|
||||
return UINT32_MAX;
|
||||
return idx;
|
||||
}
|
|
@ -0,0 +1,63 @@
|
|||
//===-- CXXFormatterFunctions.cpp---------------------------------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file is distributed under the University of Illinois Open Source
|
||||
// License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFunctionPointer.h"
|
||||
#include "lldb/Target/SectionLoadList.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
using namespace lldb_private::formatters;
|
||||
|
||||
bool
|
||||
lldb_private::formatters::CXXFunctionPointerSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options)
|
||||
{
|
||||
std::string destination;
|
||||
StreamString sstr;
|
||||
AddressType func_ptr_address_type = eAddressTypeInvalid;
|
||||
addr_t func_ptr_address = valobj.GetPointerValue (&func_ptr_address_type);
|
||||
if (func_ptr_address != 0 && func_ptr_address != LLDB_INVALID_ADDRESS)
|
||||
{
|
||||
switch (func_ptr_address_type)
|
||||
{
|
||||
case eAddressTypeInvalid:
|
||||
case eAddressTypeFile:
|
||||
case eAddressTypeHost:
|
||||
break;
|
||||
|
||||
case eAddressTypeLoad:
|
||||
{
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
|
||||
Address so_addr;
|
||||
Target *target = exe_ctx.GetTargetPtr();
|
||||
if (target && target->GetSectionLoadList().IsEmpty() == false)
|
||||
{
|
||||
if (target->GetSectionLoadList().ResolveLoadAddress(func_ptr_address, so_addr))
|
||||
{
|
||||
so_addr.Dump (&sstr,
|
||||
exe_ctx.GetBestExecutionContextScope(),
|
||||
Address::DumpStyleResolvedDescription,
|
||||
Address::DumpStyleSectionNameOffset);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (sstr.GetSize() > 0)
|
||||
{
|
||||
stream.Printf("(%s)", sstr.GetData());
|
||||
return true;
|
||||
}
|
||||
else
|
||||
return false;
|
||||
}
|
|
@ -7,20 +7,21 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/DataFormatters/Cocoa.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
||||
#include "lldb/Target/Process.h"
|
||||
#include "lldb/Utility/ProcessStructReader.h"
|
||||
|
||||
using namespace lldb;
|
||||
|
@ -1129,6 +1130,13 @@ lldb_private::formatters::GetOSXEpoch ()
|
|||
return epoch;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::RuntimeSpecificDescriptionSummaryProvider (ValueObject& valobj, Stream& stream, const TypeSummaryOptions& options)
|
||||
{
|
||||
stream.Printf("%s",valobj.GetObjectDescription());
|
||||
return true;
|
||||
}
|
||||
|
||||
template bool
|
||||
lldb_private::formatters::NSDataSummaryProvider<true> (ValueObject&, Stream&, const TypeSummaryOptions&) ;
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/CoreMedia.h"
|
||||
|
||||
#include "lldb/Core/Flags.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
|
|
|
@ -7,9 +7,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/DataFormatters/CxxStringTypes.h"
|
||||
|
||||
#include "llvm/Support/ConvertUTF.h"
|
||||
|
||||
|
@ -18,12 +16,13 @@
|
|||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/SectionLoadList.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
#include "lldb/Target/Thread.h"
|
||||
|
||||
#include "lldb/Utility/ProcessStructReader.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
|
|
@ -15,7 +15,14 @@
|
|||
// Project includes
|
||||
|
||||
#include "lldb/Core/Debugger.h"
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/CF.h"
|
||||
#include "lldb/DataFormatters/Cocoa.h"
|
||||
#include "lldb/DataFormatters/CoreMedia.h"
|
||||
#include "lldb/DataFormatters/CXXFunctionPointer.h"
|
||||
#include "lldb/DataFormatters/CxxStringTypes.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
#include "lldb/DataFormatters/LibStdcpp.h"
|
||||
#include "lldb/DataFormatters/VectorType.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/DataFormatters/LanguageCategory.h"
|
||||
#include "lldb/Target/ExecutionContext.h"
|
||||
|
@ -1635,7 +1642,7 @@ FormatManager::LoadHardcodedFormatters()
|
|||
[](lldb_private::ValueObject& valobj,
|
||||
lldb::DynamicValueType,
|
||||
FormatManager&) -> TypeSummaryImpl::SharedPointer {
|
||||
static CXXFunctionSummaryFormat::SharedPointer formatter_sp(new CXXFunctionSummaryFormat(TypeSummaryImpl::Flags(), lldb_private::formatters::FunctionPointerSummaryProvider, "Function pointer summary provider"));
|
||||
static CXXFunctionSummaryFormat::SharedPointer formatter_sp(new CXXFunctionSummaryFormat(TypeSummaryImpl::Flags(), lldb_private::formatters::CXXFunctionPointerSummaryProvider, "Function pointer summary provider"));
|
||||
if (valobj.GetCompilerType().IsFunctionPointerType())
|
||||
{
|
||||
return formatter_sp;
|
||||
|
|
|
@ -18,6 +18,8 @@
|
|||
|
||||
#include "lldb/Core/ConstString.h"
|
||||
#include "lldb/Core/RegularExpression.h"
|
||||
#include "lldb/Target/StackFrame.h"
|
||||
#include "lldb/Target/Thread.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
|
@ -118,3 +120,178 @@ lldb_private::formatters::AddFilter (TypeCategoryImpl::SharedPointer category_s
|
|||
category_sp->GetTypeFiltersContainer()->Add(type_name,filter_sp);
|
||||
}
|
||||
#endif
|
||||
|
||||
StackFrame*
|
||||
lldb_private::formatters::GetViableFrame (ExecutionContext exe_ctx)
|
||||
{
|
||||
StackFrame* frame = exe_ctx.GetFramePtr();
|
||||
if (frame)
|
||||
return frame;
|
||||
|
||||
Process* process = exe_ctx.GetProcessPtr();
|
||||
if (!process)
|
||||
return nullptr;
|
||||
|
||||
ThreadSP thread_sp(process->GetThreadList().GetSelectedThread());
|
||||
if (thread_sp)
|
||||
return thread_sp->GetSelectedFrame().get();
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::ExtractValueFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
uint64_t &value)
|
||||
{
|
||||
if (!target_type || !*target_type)
|
||||
return false;
|
||||
if (!selector || !*selector)
|
||||
return false;
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[(id)0x%" PRIx64 " %s]",target_type,valobj.GetPointerValue(),selector);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return false;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
result_sp,
|
||||
options);
|
||||
if (!result_sp)
|
||||
return false;
|
||||
value = result_sp->GetValueAsUnsigned(0);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::ExtractSummaryFromObjCExpression (ValueObject &valobj,
|
||||
const char* target_type,
|
||||
const char* selector,
|
||||
Stream &stream)
|
||||
{
|
||||
if (!target_type || !*target_type)
|
||||
return false;
|
||||
if (!selector || !*selector)
|
||||
return false;
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[(id)0x%" PRIx64 " %s]",target_type,valobj.GetPointerValue(),selector);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return false;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(lldb::eDynamicCanRunTarget);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
result_sp,
|
||||
options);
|
||||
if (!result_sp)
|
||||
return false;
|
||||
stream.Printf("%s",result_sp->GetSummaryAsCString());
|
||||
return true;
|
||||
}
|
||||
|
||||
lldb::ValueObjectSP
|
||||
lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
uint64_t index)
|
||||
{
|
||||
lldb::ValueObjectSP valobj_sp;
|
||||
if (!return_type || !*return_type)
|
||||
return valobj_sp;
|
||||
if (!selector || !*selector)
|
||||
return valobj_sp;
|
||||
StreamString expr_path_stream;
|
||||
valobj.GetExpressionPath(expr_path_stream, false);
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[%s %s:%" PRId64 "]",return_type,expr_path_stream.GetData(),selector,index);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return valobj_sp;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(lldb::eDynamicCanRunTarget);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
valobj_sp,
|
||||
options);
|
||||
return valobj_sp;
|
||||
}
|
||||
|
||||
lldb::ValueObjectSP
|
||||
lldb_private::formatters::CallSelectorOnObject (ValueObject &valobj,
|
||||
const char* return_type,
|
||||
const char* selector,
|
||||
const char* key)
|
||||
{
|
||||
lldb::ValueObjectSP valobj_sp;
|
||||
if (!return_type || !*return_type)
|
||||
return valobj_sp;
|
||||
if (!selector || !*selector)
|
||||
return valobj_sp;
|
||||
if (!key || !*key)
|
||||
return valobj_sp;
|
||||
StreamString expr_path_stream;
|
||||
valobj.GetExpressionPath(expr_path_stream, false);
|
||||
StreamString expr;
|
||||
expr.Printf("(%s)[%s %s:%s]",return_type,expr_path_stream.GetData(),selector,key);
|
||||
ExecutionContext exe_ctx (valobj.GetExecutionContextRef());
|
||||
lldb::ValueObjectSP result_sp;
|
||||
Target* target = exe_ctx.GetTargetPtr();
|
||||
StackFrame* stack_frame = GetViableFrame(exe_ctx);
|
||||
if (!target || !stack_frame)
|
||||
return valobj_sp;
|
||||
|
||||
EvaluateExpressionOptions options;
|
||||
options.SetCoerceToId(false);
|
||||
options.SetUnwindOnError(true);
|
||||
options.SetKeepInMemory(true);
|
||||
options.SetUseDynamic(lldb::eDynamicCanRunTarget);
|
||||
|
||||
target->EvaluateExpression(expr.GetData(),
|
||||
stack_frame,
|
||||
valobj_sp,
|
||||
options);
|
||||
return valobj_sp;
|
||||
}
|
||||
|
||||
size_t
|
||||
lldb_private::formatters::ExtractIndexFromString (const char* item_name)
|
||||
{
|
||||
if (!item_name || !*item_name)
|
||||
return UINT32_MAX;
|
||||
if (*item_name != '[')
|
||||
return UINT32_MAX;
|
||||
item_name++;
|
||||
char* endptr = NULL;
|
||||
unsigned long int idx = ::strtoul(item_name, &endptr, 0);
|
||||
if (idx == 0 && endptr == item_name)
|
||||
return UINT32_MAX;
|
||||
if (idx == ULONG_MAX)
|
||||
return UINT32_MAX;
|
||||
return idx;
|
||||
}
|
||||
|
|
|
@ -7,9 +7,7 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Debugger.h"
|
||||
|
@ -18,6 +16,10 @@
|
|||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/DataFormatters/StringPrinter.h"
|
||||
#include "lldb/DataFormatters/TypeSummary.h"
|
||||
#include "lldb/DataFormatters/VectorIterator.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
|
||||
#include "lldb/Core/ConstString.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/LibCxx.h"
|
||||
|
||||
#include "lldb/Core/ConstString.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
|
||||
using namespace lldb;
|
||||
using namespace lldb_private;
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/LibStdcpp.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/VectorIterator.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/Target.h"
|
||||
|
@ -22,6 +23,36 @@ using namespace lldb;
|
|||
using namespace lldb_private;
|
||||
using namespace lldb_private::formatters;
|
||||
|
||||
class LibstdcppMapIteratorSyntheticFrontEnd : public SyntheticChildrenFrontEnd
|
||||
{
|
||||
public:
|
||||
LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp);
|
||||
|
||||
size_t
|
||||
CalculateNumChildren() override;
|
||||
|
||||
lldb::ValueObjectSP
|
||||
GetChildAtIndex(size_t idx) override;
|
||||
|
||||
bool
|
||||
Update() override;
|
||||
|
||||
bool
|
||||
MightHaveChildren() override;
|
||||
|
||||
size_t
|
||||
GetIndexOfChildWithName (const ConstString &name) override;
|
||||
|
||||
~LibstdcppMapIteratorSyntheticFrontEnd() override;
|
||||
|
||||
private:
|
||||
ExecutionContextRef m_exe_ctx_ref;
|
||||
lldb::addr_t m_pair_address;
|
||||
CompilerType m_pair_type;
|
||||
EvaluateExpressionOptions m_options;
|
||||
lldb::ValueObjectSP m_pair_sp;
|
||||
};
|
||||
|
||||
/*
|
||||
(std::_Rb_tree_iterator<std::pair<const int, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >) ibeg = {
|
||||
(_Base_ptr) _M_node = 0x0000000100103910 {
|
||||
|
@ -33,7 +64,7 @@ using namespace lldb_private::formatters;
|
|||
}
|
||||
*/
|
||||
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) :
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::LibstdcppMapIteratorSyntheticFrontEnd (lldb::ValueObjectSP valobj_sp) :
|
||||
SyntheticChildrenFrontEnd(*valobj_sp.get()),
|
||||
m_exe_ctx_ref(),
|
||||
m_pair_address(0),
|
||||
|
@ -50,7 +81,7 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::LibstdcppMapIte
|
|||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::Update()
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::Update()
|
||||
{
|
||||
ValueObjectSP valobj_sp = m_backend.GetSP();
|
||||
if (!valobj_sp)
|
||||
|
@ -93,13 +124,13 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::Update()
|
|||
}
|
||||
|
||||
size_t
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::CalculateNumChildren ()
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::CalculateNumChildren ()
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
lldb::ValueObjectSP
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex (size_t idx)
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex (size_t idx)
|
||||
{
|
||||
if (m_pair_address != 0 && m_pair_type)
|
||||
{
|
||||
|
@ -112,13 +143,13 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetChildAtIndex
|
|||
}
|
||||
|
||||
bool
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::MightHaveChildren ()
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::MightHaveChildren ()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
size_t
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name)
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChildWithName (const ConstString &name)
|
||||
{
|
||||
if (name == ConstString("first"))
|
||||
return 0;
|
||||
|
@ -127,7 +158,7 @@ lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::GetIndexOfChild
|
|||
return UINT32_MAX;
|
||||
}
|
||||
|
||||
lldb_private::formatters::LibstdcppMapIteratorSyntheticFrontEnd::~LibstdcppMapIteratorSyntheticFrontEnd ()
|
||||
LibstdcppMapIteratorSyntheticFrontEnd::~LibstdcppMapIteratorSyntheticFrontEnd ()
|
||||
{}
|
||||
|
||||
SyntheticChildrenFrontEnd*
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/Cocoa.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/Cocoa.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
|
|
|
@ -7,10 +7,11 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/Cocoa.h"
|
||||
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/DataFormatters/TypeSynthetic.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
#include "lldb/Target/Process.h"
|
||||
|
|
|
@ -7,13 +7,14 @@
|
|||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/Cocoa.h"
|
||||
|
||||
#include "lldb/Core/DataBufferHeap.h"
|
||||
#include "lldb/Core/Error.h"
|
||||
#include "lldb/Core/Stream.h"
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/Core/ValueObjectConstResult.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Host/Endian.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Target/ObjCLanguageRuntime.h"
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
#include "lldb/DataFormatters/VectorType.h"
|
||||
|
||||
#include "lldb/Core/ValueObject.h"
|
||||
#include "lldb/DataFormatters/CXXFormatterFunctions.h"
|
||||
#include "lldb/DataFormatters/FormattersHelpers.h"
|
||||
#include "lldb/Symbol/ClangASTContext.h"
|
||||
#include "lldb/Symbol/CompilerType.h"
|
||||
|
||||
|
|
Loading…
Reference in New Issue