45 auto type_system_or_err = target_sp->GetScratchTypeSystemForLanguage(
47 if (
auto err = type_system_or_err.takeError()) {
49 "Failed to get scratch TypeSystemClang: {0}");
55 if (!clang_ast_context)
58 const char *
const isa_name(
"__isa");
61 const char *
const flags_name(
"__flags");
64 const char *
const reserved_name(
"__reserved");
67 const char *
const FuncPtr_name(
"__FuncPtr");
70 llvm::StringRef(), {{isa_name, isa_type},
71 {flags_name, flags_type},
72 {reserved_name, reserved_type},
73 {FuncPtr_name, function_pointer_type}});
79 const bool omit_empty_base_classes =
false;
92 const bool thread_and_frame_only_if_stopped =
true;
94 thread_and_frame_only_if_stopped);
95 const bool transparent_pointers =
false;
96 const bool omit_empty_base_classes =
false;
97 const bool ignore_array_bounds =
false;
100 std::string child_name;
101 uint32_t child_byte_size = 0;
102 int32_t child_byte_offset = 0;
103 uint32_t child_bitfield_bit_size = 0;
104 uint32_t child_bitfield_bit_offset = 0;
105 bool child_is_base_class =
false;
106 bool child_is_deref_of_parent =
false;
107 uint64_t language_flags = 0;
110 &exe_ctx, idx, transparent_pointers, omit_empty_base_classes,
111 ignore_array_bounds, child_name, child_byte_size, child_byte_offset,
112 child_bitfield_bit_size, child_bitfield_bit_offset, child_is_base_class,
113 child_is_deref_of_parent, value_object, language_flags);
114 if (!child_type_or_err)
117 Status(child_type_or_err.takeError()));
123 if (!struct_pointer_sp) {
128 ValueObjectSP struct_sp = struct_pointer_sp->Dereference(err);
130 if (!struct_sp || !err.
Success()) {
135 child_byte_offset, child_type,
true,
136 ConstString(child_name.c_str(), child_name.size())));
154 const bool omit_empty_base_classes =
false;
156 omit_empty_base_classes);
170 if (!synthetic_children) {
174 synthetic_children->
Update();
176 static const ConstString s_FuncPtr_name(
"__FuncPtr");
186 child_sp->GetQualifiedRepresentationIfAvailable(
189 const char *child_value =
190 qualified_child_representation_sp->GetValueAsCString();
192 s.
Printf(
"%s", child_value);
#define LLDB_LOG_ERROR(log, error,...)
std::shared_ptr< TypeSystemType > dyn_cast_or_null()
Return a shared_ptr<TypeSystemType> if dyn_cast succeeds.
Generic representation of a type in a programming language.
TypeSystemSPWrapper GetTypeSystem() const
Accessors.
CompilerType GetPointerType() const
Return a new CompilerType that is a pointer to this type.
bool IsBlockPointerType(CompilerType *function_pointer_type_ptr=nullptr) const
uint32_t GetIndexOfChildWithName(llvm::StringRef name, bool omit_empty_base_classes) const
Lookup a child given a name.
llvm::Expected< CompilerType > GetChildCompilerTypeAtIndex(ExecutionContext *exe_ctx, size_t idx, bool transparent_pointers, bool omit_empty_base_classes, bool ignore_array_bounds, std::string &child_name, uint32_t &child_byte_size, int32_t &child_byte_offset, uint32_t &child_bitfield_bit_size, uint32_t &child_bitfield_bit_offset, bool &child_is_base_class, bool &child_is_deref_of_parent, ValueObject *valobj, uint64_t &language_flags) const
llvm::Expected< uint32_t > GetNumChildren(bool omit_empty_base_classes, const ExecutionContext *exe_ctx) const
A uniqued constant string class.
const char * AsCString(const char *value_if_empty=nullptr) const
Get the string value as a C string.
ExecutionContext Lock(bool thread_and_frame_only_if_stopped) const
Create an ExecutionContext object from this object.
"lldb/Target/ExecutionContext.h" A class that contains an execution context.
ExecutionContextScope * GetBestExecutionContextScope() const
bool Success() const
Test for success condition.
A stream class that can stream formatted output to a file.
size_t Printf(const char *format,...) __attribute__((format(printf
Output printf formatted output to the stream.
uint32_t CalculateNumChildrenIgnoringErrors(uint32_t max=UINT32_MAX)
virtual lldb::ValueObjectSP GetChildAtIndex(uint32_t idx)=0
virtual lldb::ChildCacheState Update()=0
This function is assumed to always succeed and if it fails, the front-end should know to deal with it...
virtual size_t GetIndexOfChildWithName(ConstString name)=0
A TypeSystem implementation based on Clang.
static lldb::ValueObjectSP Create(ExecutionContextScope *exe_scope, lldb::ByteOrder byte_order, uint32_t addr_byte_size, lldb::addr_t address=LLDB_INVALID_ADDRESS)
lldb::ValueObjectSP Cast(const CompilerType &compiler_type)
CompilerType GetCompilerType()
lldb::ValueObjectSP GetSP()
lldb::TargetSP GetTargetSP() const
const ExecutionContextRef & GetExecutionContextRef() const
A class that represents a running process on the host machine.
Log * GetLog(Cat mask)
Retrieve the Log object for the channel associated with the given log enum.
ChildCacheState
Specifies if children need to be re-computed after a call to SyntheticChildrenFrontEnd::Update.
@ eRefetch
Children need to be recomputed dynamically.
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP
@ eLanguageTypeC_plus_plus
ISO C++:1998.
std::shared_ptr< lldb_private::Target > TargetSP