Changed CppTypeInfo.decl : declaration_t to CppTypeInfo.decls : List[declaration_t] to hold multiple declarations for template instantiations.
Try quering for class declarations without default template args if the full form is not found e.g. try Foo<2> if Foo<2,2> is not found and Foo is templated like <A, B=A>.
Added a test for the above with a mesh example.
Changed CppModuleWrapperWriter.exposed_class_full_names: List[str] to CppModuleWrapperWriter.class_decls : List[pygccxml.declarations.class_t] to use the found declaration above for subsequent queries instead of the instantiated class name.
For clarity, separated the class discovery step (when module_info.use_all_classes == True) from the step associating each class (whether discovered or manually specified) with their correct declaration(s).
Changes
CppTypeInfo.decl : declaration_t
toCppTypeInfo.decls : List[declaration_t]
to hold multiple declarations for template instantiations.Foo<2>
ifFoo<2,2>
is not found andFoo
is templated like<A, B=A>
.CppModuleWrapperWriter.exposed_class_full_names: List[str]
toCppModuleWrapperWriter.class_decls : List[pygccxml.declarations.class_t]
to use the found declaration above for subsequent queries instead of the instantiated class name.module_info.use_all_classes == True
) from the step associating each class (whether discovered or manually specified) with their correct declaration(s).