mirror of
https://github.com/JakeHillion/object-introspection.git
synced 2024-09-18 18:59:04 +01:00
Keep template parameters for pass-through types (#486)
Summary: Implement the pass-through feature in ClangTypeParser (keeping template parameters for specified types0. Reviewed By: JakeHillion Differential Revision: D53815662
This commit is contained in:
parent
34a35cd418
commit
1ba742b433
@ -88,6 +88,7 @@ class ConsumerContext {
|
||||
std::optional<bool> pic;
|
||||
const std::vector<std::unique_ptr<ContainerInfo>>& containerInfos;
|
||||
std::set<std::string_view> typesToStub;
|
||||
std::set<std::string_view> mustProcessTemplateParams;
|
||||
|
||||
private:
|
||||
clang::Sema* sema = nullptr;
|
||||
@ -142,6 +143,9 @@ int OIGenerator::generate(clang::tooling::CompilationDatabase& db,
|
||||
ctx.typesToStub.insert(stubType);
|
||||
}
|
||||
|
||||
for (const auto& cInfo : generatorConfig.passThroughTypes)
|
||||
ctx.mustProcessTemplateParams.insert(cInfo.typeName);
|
||||
|
||||
CreateTypeGraphActionFactory factory{ctx};
|
||||
|
||||
clang::tooling::ClangTool tool{db, sourcePaths};
|
||||
@ -249,6 +253,7 @@ class CreateTypeGraphConsumer : public clang::ASTConsumer {
|
||||
|
||||
type_graph::ClangTypeParserOptions opts;
|
||||
opts.typesToStub = ctx.typesToStub;
|
||||
opts.mustProcessTemplateParams = ctx.mustProcessTemplateParams;
|
||||
|
||||
type_graph::ClangTypeParser parser{ctx.typeGraph, ctx.containerInfos, opts};
|
||||
|
||||
|
@ -211,10 +211,11 @@ Type& ClangTypeParser::enumerateClass(const clang::RecordType& ty) {
|
||||
ty, kind, std::move(name), std::move(fqName), size, virtuality);
|
||||
c.setAlign(ast->getTypeAlign(clang::QualType(&ty, 0)) / 8);
|
||||
|
||||
enumerateClassTemplateParams(ty, c.templateParams);
|
||||
if (options_.mustProcessTemplateParams.contains(fqnWithoutTemplateParams))
|
||||
enumerateClassTemplateParams(ty, c.templateParams);
|
||||
|
||||
// enumerateClassParents(ty, c.parents);
|
||||
enumerateClassMembers(ty, c.members);
|
||||
// enumerateClassFunctions(type, c.functions);
|
||||
|
||||
return c;
|
||||
}
|
||||
|
@ -61,6 +61,7 @@ struct ClangTypeParserOptions {
|
||||
bool chaseRawPointers = false;
|
||||
bool readEnumValues = false;
|
||||
std::set<std::string_view> typesToStub;
|
||||
std::set<std::string_view> mustProcessTemplateParams;
|
||||
};
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user