diff --git a/chore/_xtool/llcppsigfetch/parse/cvt.go b/chore/_xtool/llcppsigfetch/parse/cvt.go index aea635a9..2a9f9df9 100644 --- a/chore/_xtool/llcppsigfetch/parse/cvt.go +++ b/chore/_xtool/llcppsigfetch/parse/cvt.go @@ -334,7 +334,9 @@ func (ct *Converter) ProcessEnumDecl(cursor clang.Cursor) *ast.EnumTypeDecl { return &ast.EnumTypeDecl{ DeclBase: ct.CreateDeclBase(cursor), Name: &ast.Ident{Name: c.GoString(name.CStr())}, - Items: items, + Type: &ast.EnumType{ + Items: items, + }, } } diff --git a/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/enum_test/llgo.expect b/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/enum_test/llgo.expect index c4965551..55ae0666 100644 --- a/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/enum_test/llgo.expect +++ b/chore/_xtool/llcppsigfetch/parse/cvt_test/decl_test/enum_test/llgo.expect @@ -13,31 +13,33 @@ TestEnumDecl Case 1: "Name": { "Name": "Foo" }, - "Items": [{ - "Name": { - "Name": "a" - }, - "Value": { - "Kind": 0, - "Value": "0" - } - }, { - "Name": { - "Name": "b" - }, - "Value": { - "Kind": 0, - "Value": "1" - } - }, { - "Name": { - "Name": "c" - }, - "Value": { - "Kind": 0, - "Value": "2" - } - }] + "Type": { + "Items": [{ + "Name": { + "Name": "a" + }, + "Value": { + "Kind": 0, + "Value": "0" + } + }, { + "Name": { + "Name": "b" + }, + "Value": { + "Kind": 0, + "Value": "1" + } + }, { + "Name": { + "Name": "c" + }, + "Value": { + "Kind": 0, + "Value": "2" + } + }] + } }], "includes": [], "macros": [] @@ -58,31 +60,33 @@ TestEnumDecl Case 2: "Name": { "Name": "Foo" }, - "Items": [{ - "Name": { - "Name": "a" - }, - "Value": { - "Kind": 0, - "Value": "1" - } - }, { - "Name": { - "Name": "b" - }, - "Value": { - "Kind": 0, - "Value": "2" - } - }, { - "Name": { - "Name": "c" - }, - "Value": { - "Kind": 0, - "Value": "4" - } - }] + "Type": { + "Items": [{ + "Name": { + "Name": "a" + }, + "Value": { + "Kind": 0, + "Value": "1" + } + }, { + "Name": { + "Name": "b" + }, + "Value": { + "Kind": 0, + "Value": "2" + } + }, { + "Name": { + "Name": "c" + }, + "Value": { + "Kind": 0, + "Value": "4" + } + }] + } }], "includes": [], "macros": [] @@ -103,31 +107,33 @@ TestEnumDecl Case 3: "Name": { "Name": "Foo" }, - "Items": [{ - "Name": { - "Name": "a" - }, - "Value": { - "Kind": 0, - "Value": "1" - } - }, { - "Name": { - "Name": "b" - }, - "Value": { - "Kind": 0, - "Value": "2" - } - }, { - "Name": { - "Name": "c" - }, - "Value": { - "Kind": 0, - "Value": "3" - } - }] + "Type": { + "Items": [{ + "Name": { + "Name": "a" + }, + "Value": { + "Kind": 0, + "Value": "1" + } + }, { + "Name": { + "Name": "b" + }, + "Value": { + "Kind": 0, + "Value": "2" + } + }, { + "Name": { + "Name": "c" + }, + "Value": { + "Kind": 0, + "Value": "3" + } + }] + } }], "includes": [], "macros": [] diff --git a/chore/_xtool/llcppsigfetch/parse/dump.go b/chore/_xtool/llcppsigfetch/parse/dump.go index 1acb8c49..70dddf8e 100644 --- a/chore/_xtool/llcppsigfetch/parse/dump.go +++ b/chore/_xtool/llcppsigfetch/parse/dump.go @@ -68,11 +68,7 @@ func MarshalASTDecl(decl ast.Decl) *cjson.JSON { case *ast.EnumTypeDecl: MarshalASTDeclBase(d.DeclBase, root) root.SetItem(c.Str("Name"), MarshalASTExpr(d.Name)) - items := cjson.Array() - for _, i := range d.Items { - items.AddItem(MarshalASTExpr(i)) - } - root.SetItem(c.Str("Items"), items) + root.SetItem(c.Str("Type"), MarshalASTExpr(d.Type)) case *ast.TypedefDecl: MarshalASTDeclBase(d.DeclBase, root) root.SetItem(c.Str("Name"), MarshalASTExpr(d.Name)) @@ -106,6 +102,15 @@ func MarshalASTExpr(t ast.Expr) *cjson.JSON { root := cjson.Object() switch d := t.(type) { + case *ast.EnumType: + items := cjson.Array() + for _, e := range d.Items { + items.AddItem(MarshalASTExpr(e)) + } + root.SetItem(c.Str("Items"), items) + case *ast.EnumItem: + root.SetItem(c.Str("Name"), MarshalASTExpr(d.Name)) + root.SetItem(c.Str("Value"), MarshalASTExpr(d.Value)) case *ast.RecordType: root.SetItem(c.Str("Tag"), cjson.Number(float64(d.Tag))) root.SetItem(c.Str("Fields"), MarshalASTExpr(d.Fields)) @@ -143,9 +148,6 @@ func MarshalASTExpr(t ast.Expr) *cjson.JSON { case *ast.TagExpr: root.SetItem(c.Str("Name"), MarshalASTExpr(d.Name)) root.SetItem(c.Str("Tag"), cjson.Number(float64(d.Tag))) - case *ast.EnumItem: - root.SetItem(c.Str("Name"), MarshalASTExpr(d.Name)) - root.SetItem(c.Str("Value"), MarshalASTExpr(d.Value)) case *ast.BasicLit: root.SetItem(c.Str("Kind"), cjson.Number(float64(d.Kind))) root.SetItem(c.Str("Value"), cjson.String(c.AllocaCStr(d.Value)))