llcppsigfetch:anonymous record name

This commit is contained in:
luoliwoshang
2024-08-21 14:50:42 +08:00
parent 5e5c84ba27
commit 815fe25f2c
4 changed files with 132 additions and 24 deletions

View File

@@ -427,10 +427,15 @@ func (ct *Converter) ProcessMethods(cursor clang.Cursor) []*ast.FuncDecl {
return methods
}
func (ct *Converter) ProcessStructOrClass(cursor clang.Cursor, tag ast.Tag) *ast.TypeDecl {
func (ct *Converter) ProcessRecord(cursor clang.Cursor, tag ast.Tag) *ast.TypeDecl {
anony := cursor.IsAnonymousRecordDecl()
name := cursor.String()
defer name.Dispose()
var name *ast.Ident
if anony == 0 {
cursorName := cursor.String()
defer cursorName.Dispose()
name = &ast.Ident{Name: c.GoString(cursorName.CStr())}
}
fields := ct.ProcessFieldList(cursor)
methods := ct.ProcessMethods(cursor)
@@ -438,7 +443,7 @@ func (ct *Converter) ProcessStructOrClass(cursor clang.Cursor, tag ast.Tag) *ast
decl := &ast.TypeDecl{
DeclBase: ct.CreateDeclBase(cursor),
Tag: tag,
Name: &ast.Ident{Name: c.GoString(name.CStr())},
Name: name,
Fields: fields,
Methods: methods,
}
@@ -447,15 +452,15 @@ func (ct *Converter) ProcessStructOrClass(cursor clang.Cursor, tag ast.Tag) *ast
}
func (ct *Converter) ProcessStruct(cursor clang.Cursor) *ast.TypeDecl {
return ct.ProcessStructOrClass(cursor, ast.Struct)
return ct.ProcessRecord(cursor, ast.Struct)
}
func (ct *Converter) ProcessUnion(cursor clang.Cursor) *ast.TypeDecl {
return ct.ProcessStructOrClass(cursor, ast.Union)
return ct.ProcessRecord(cursor, ast.Union)
}
func (ct *Converter) ProcessClass(cursor clang.Cursor) *ast.TypeDecl {
return ct.ProcessStructOrClass(cursor, ast.Class)
return ct.ProcessRecord(cursor, ast.Class)
}
func (ct *Converter) ProcessBuiltinType(t clang.Type) *ast.BuiltinType {