44 auto type_system_or_err = target_sp->GetScratchTypeSystemForLanguage(
46 if (
auto err = type_system_or_err.takeError()) {
48 "Failed to get scratch TypeSystemClang: {0}");
54 if (!clang_ast_context)
57 const char *
const isa_name(
"__isa");
60 const char *
const flags_name(
"__flags");
63 const char *
const reserved_name(
"__reserved");
66 const char *
const FuncPtr_name(
"__FuncPtr");
69 llvm::StringRef(), {{isa_name, isa_type},
70 {flags_name, flags_type},
71 {reserved_name, reserved_type},
72 {FuncPtr_name, function_pointer_type}});
78 const bool omit_empty_base_classes =
false;
91 const bool thread_and_frame_only_if_stopped =
true;
93 thread_and_frame_only_if_stopped);
94 const bool transparent_pointers =
false;
95 const bool omit_empty_base_classes =
false;
96 const bool ignore_array_bounds =
false;
99 std::string child_name;
100 uint32_t child_byte_size = 0;
101 int32_t child_byte_offset = 0;
102 uint32_t child_bitfield_bit_size = 0;
103 uint32_t child_bitfield_bit_offset = 0;
104 bool child_is_base_class =
false;
105 bool child_is_deref_of_parent =
false;
106 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,
113 child_is_base_class, child_is_deref_of_parent, value_object,
119 if (!struct_pointer_sp) {
124 ValueObjectSP struct_sp = struct_pointer_sp->Dereference(err);
126 if (!struct_sp || !err.
Success()) {
131 child_byte_offset, child_type,
true,
132 ConstString(child_name.c_str(), child_name.size())));
148 const bool omit_empty_base_classes =
false;
150 omit_empty_base_classes);
164 if (!synthetic_children) {
168 synthetic_children->
Update();
170 static const ConstString s_FuncPtr_name(
"__FuncPtr");
180 child_sp->GetQualifiedRepresentationIfAvailable(
183 const char *child_value =
184 qualified_child_representation_sp->GetValueAsCString();
186 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 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
CompilerType GetPointerType() const
Return a new CompilerType that is a pointer to this type.
uint32_t GetNumChildren(bool omit_empty_base_classes, const ExecutionContext *exe_ctx) const
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.
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.
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.
virtual size_t GetIndexOfChildWithName(ConstString name)=0
virtual lldb::ValueObjectSP GetChildAtIndex(size_t idx)=0
A TypeSystem implementation based on Clang.
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.
std::shared_ptr< lldb_private::ValueObject > ValueObjectSP
@ eLanguageTypeC_plus_plus
ISO C++:1998.
std::shared_ptr< lldb_private::Target > TargetSP