26 void TypeFilterImpl::AddExpressionPath(
const std::string &path) {
27 bool need_add_dot =
true;
28 if (path[0] ==
'.' || (path[0] ==
'-' && path[1] ==
'>') || path[0] ==
'[')
32 m_expression_paths.push_back(path);
34 m_expression_paths.push_back(
std::string(
".") + path);
37 bool TypeFilterImpl::SetExpressionPathAtIndex(
size_t i,
41 bool need_add_dot =
true;
42 if (path[0] ==
'.' || (path[0] ==
'-' && path[1] ==
'>') || path[0] ==
'[')
46 m_expression_paths[i] = path;
53 TypeFilterImpl::FrontEnd::GetIndexOfChildWithName(
ConstString name) {
56 for (
size_t i = 0; i < filter->GetCount(); i++) {
57 const char *expr_cstr = filter->GetExpressionPathAtIndex(i);
59 if (*expr_cstr ==
'.')
61 else if (*expr_cstr ==
'-' && *(expr_cstr + 1) ==
'>')
65 if (!::strcmp(name_cstr, expr_cstr))
75 sstr.
Printf(
"%s%s%s {\n", Cascades() ?
"" :
" (not cascading)",
76 SkipsPointers() ?
" (skip pointers)" :
"",
77 SkipsReferences() ?
" (skip references)" :
"");
79 for (
size_t i = 0; i < GetCount(); i++) {
80 sstr.
Printf(
" %s\n", GetExpressionPathAtIndex(i));
89 sstr.
Printf(
"%s%s%s %s", Cascades() ?
"" :
" (not cascading)",
90 SkipsPointers() ?
" (skip pointers)" :
"",
91 SkipsReferences() ?
" (skip references)" :
"",
92 m_description.c_str());
97 lldb::ValueObjectSP SyntheticChildrenFrontEnd::CreateValueObjectFromExpression(
98 llvm::StringRef name, llvm::StringRef expression,
100 ValueObjectSP valobj_sp(
101 ValueObject::CreateValueObjectFromExpression(name, expression, exe_ctx));
103 valobj_sp->SetSyntheticChildrenGenerated(
true);
107 lldb::ValueObjectSP SyntheticChildrenFrontEnd::CreateValueObjectFromAddress(
110 ValueObjectSP valobj_sp(
111 ValueObject::CreateValueObjectFromAddress(name, address, exe_ctx, type));
113 valobj_sp->SetSyntheticChildrenGenerated(
true);
117 lldb::ValueObjectSP SyntheticChildrenFrontEnd::CreateValueObjectFromData(
120 ValueObjectSP valobj_sp(
121 ValueObject::CreateValueObjectFromData(name, data, exe_ctx, type));
123 valobj_sp->SetSyntheticChildrenGenerated(
true);
130 m_wrapper_sp(), m_interpreter(nullptr) {
139 m_interpreter = target_sp->GetDebugger().GetScriptInterpreter();
150 if (!m_wrapper_sp || !m_interpreter)
151 return lldb::ValueObjectSP();
153 return m_interpreter->GetChildAtIndex(m_wrapper_sp, idx);
157 return (m_wrapper_sp && m_wrapper_sp->IsValid() && m_interpreter);
161 if (!m_wrapper_sp || m_interpreter ==
nullptr)
163 return m_interpreter->CalculateNumChildren(m_wrapper_sp,
UINT32_MAX);
167 if (!m_wrapper_sp || m_interpreter ==
nullptr)
169 return m_interpreter->CalculateNumChildren(m_wrapper_sp, max);
173 if (!m_wrapper_sp || m_interpreter ==
nullptr)
176 return m_interpreter->UpdateSynthProviderInstance(m_wrapper_sp);
180 if (!m_wrapper_sp || m_interpreter ==
nullptr)
183 return m_interpreter->MightHaveChildrenSynthProviderInstance(m_wrapper_sp);
188 if (!m_wrapper_sp || m_interpreter ==
nullptr)
190 return m_interpreter->GetIndexOfChildWithName(m_wrapper_sp,
195 if (!m_wrapper_sp || m_interpreter ==
nullptr)
198 return m_interpreter->GetSyntheticValue(m_wrapper_sp);
202 if (!m_wrapper_sp || m_interpreter ==
nullptr)
205 return m_interpreter->GetSyntheticTypeName(m_wrapper_sp);
210 sstr.
Printf(
"%s%s%s Python class %s",
Cascades() ?
"" :
" (not cascading)",