9 #include "clang/AST/DeclCXX.h"
34 if (type_flags.
AllClear(eTypeHasValue)) {
39 if (type_flags.
AllSet(eTypeIsPointer)) {
42 if (pointee_flags.
AllSet(eTypeIsPointer)) {
45 ptr_value = process_sp->ReadPointerFromMemory(ptr_value,
error);
65 size_t ptr_size = process_sp->GetAddressByteSize();
70 uint64_t code = process_sp->ReadUnsignedIntegerFromMemory(code_location,
76 process_sp->ReadPointerFromMemory(domain_location,
error);
80 if (!domain_str_value) {
81 stream.
Printf(
"domain: nil - code: %" PRIu64, code);
87 ValueObjectSP domain_str_sp = ValueObject::CreateValueObjectFromData(
88 "domain_str", isw.
GetAsData(process_sp->GetByteOrder()),
90 ScratchTypeSystemClang::GetForTarget(process_sp->GetTarget())
99 !domain_str_summary.
Empty()) {
100 stream.
Printf(
"domain: %s - code: %" PRIu64, domain_str_summary.
GetData(),
104 stream.
Printf(
"domain: nil - code: %" PRIu64, code);
128 return lldb::ValueObjectSP();
131 return m_child_ptr->GetSP();
136 m_child_ptr =
nullptr;
139 ProcessSP process_sp(m_backend.GetProcessSP());
147 size_t ptr_size = process_sp->GetAddressByteSize();
149 userinfo_location += 4 * ptr_size;
152 process_sp->ReadPointerFromMemory(userinfo_location,
error);
156 m_child_sp = CreateValueObjectFromData(
157 "_userInfo", isw.
GetAsData(process_sp->GetByteOrder()),
158 m_backend.GetExecutionContextRef(),
159 ScratchTypeSystemClang::GetForTarget(process_sp->GetTarget())
168 if (name == g_userInfo)
187 lldb::ProcessSP process_sp(valobj_sp->GetProcessSP());
197 if (!descriptor.get() || !descriptor->IsValid())
200 const char *class_name = descriptor->GetClassName().GetCString();
202 if (!class_name || !*class_name)
205 if (!strcmp(class_name,
"NSError"))
207 else if (!strcmp(class_name,
"__NSCFError"))