llcppsigfetch:output fileset

This commit is contained in:
luoliwoshang
2024-09-19 15:35:42 +08:00
parent bf87b76adb
commit e0cb6d4531
4 changed files with 18 additions and 11 deletions

View File

@@ -137,7 +137,7 @@ func runExtract() {
check(err) check(err)
_, err = converter.Convert() _, err = converter.Convert()
check(err) check(err)
result := converter.MarshalASTFiles() result := converter.MarshalOutputASTFiles()
cstr := result.Print() cstr := result.Print()
c.Printf(cstr) c.Printf(cstr)
cjson.FreeCStr(cstr) cjson.FreeCStr(cstr)

View File

@@ -872,6 +872,10 @@ func (ct *Converter) MarshalASTFiles() *cjson.JSON {
return MarshalASTFiles(ct.Files) return MarshalASTFiles(ct.Files)
} }
func (ct *Converter) MarshalOutputASTFiles() *cjson.JSON {
return MarshalOutputASTFiles(ct.Files)
}
func IsExplicitSigned(t clang.Type) bool { func IsExplicitSigned(t clang.Type) bool {
return t.Kind == clang.TypeCharS || t.Kind == clang.TypeSChar return t.Kind == clang.TypeCharS || t.Kind == clang.TypeSChar
} }

View File

@@ -6,6 +6,18 @@ import (
"github.com/goplus/llgo/chore/llcppg/ast" "github.com/goplus/llgo/chore/llcppg/ast"
) )
func MarshalOutputASTFiles(files map[string]*ast.File) *cjson.JSON {
root := cjson.Array()
for path, file := range files {
f := cjson.Object()
path := cjson.String(c.AllocaCStr(path))
f.SetItem(c.Str("path"), path)
f.SetItem(c.Str("doc"), MarshalASTFile(file))
root.AddItem(f)
}
return root
}
func MarshalASTFiles(files map[string]*ast.File) *cjson.JSON { func MarshalASTFiles(files map[string]*ast.File) *cjson.JSON {
root := cjson.Object() root := cjson.Object()
for path, file := range files { for path, file := range files {

View File

@@ -3,7 +3,6 @@ package parse
import ( import (
"errors" "errors"
"github.com/goplus/llgo/c"
"github.com/goplus/llgo/c/cjson" "github.com/goplus/llgo/c/cjson"
"github.com/goplus/llgo/chore/llcppg/ast" "github.com/goplus/llgo/chore/llcppg/ast"
) )
@@ -21,15 +20,7 @@ func NewContext(isCpp bool) *Context {
} }
func (p *Context) Output() *cjson.JSON { func (p *Context) Output() *cjson.JSON {
root := cjson.Array() return MarshalOutputASTFiles(p.Files)
for path, file := range p.Files {
f := cjson.Object()
path := cjson.String(c.AllocaCStr(path))
f.SetItem(c.Str("path"), path)
f.SetItem(c.Str("doc"), MarshalASTFile(file))
root.AddItem(f)
}
return root
} }
// ProcessFiles processes the given files and adds them to the context // ProcessFiles processes the given files and adds them to the context