Endilll wrote:
It should be noted that after calling `FindNestedType` and successfully finding
`MaskAndShiftConstants` in the example above, the following routine in my fork
reports that `PointerIntPairInfo` has 2 enums instead of 1:
```cpp
uint32_t TypeSystemClang::GetNumMemberEnums(lldb::opaque_compiler_type_t type) {
using EnumIt = clang::DeclContext::specific_decl_iterator<clang::EnumDecl>;
if (!type)
return 0;
clang::QualType qual_type = RemoveWrappingTypes(GetCanonicalQualType(type));
if (GetCompleteQualType(&getASTContext(), qual_type)) {
const clang::RecordType *record_type =
llvm::cast<clang::RecordType>(qual_type.getTypePtr());
const clang::RecordDecl *record_decl = record_type->getDecl();
assert(record_decl);
auto result = std::distance(EnumIt(record_decl->decls_begin()),
EnumIt(record_decl->decls_end()));
return result;
}
return 0;
}
```
It's also available here:
https://github.com/Endilll/llvm-project/blob/fbad2d1fd8e9c67e4de8a196df0cd1d1788fa990/lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.cpp#L7080-L7095
https://github.com/llvm/llvm-project/pull/68705
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits