M main.go => main.go +12 -7
@@ 483,14 483,19 @@ func main() {
} else {
for idl := decl.InitDeclaratorList; idl != nil; idl = idl.InitDeclaratorList {
var kind declKind
- switch idl.InitDeclarator.Declarator.DirectDeclarator.Case {
- case cc.DirectDeclaratorIdent:
- kind = declVar
- case cc.DirectDeclaratorFuncParam:
- kind = declFunc
- default:
- panic(fmt.Sprintf("TODO: %v", idl.InitDeclarator.Declarator.DirectDeclarator.Case))
+ if decl.DeclarationSpecifiers != nil && decl.DeclarationSpecifiers.Case == cc.DeclarationSpecifiersStorage && decl.DeclarationSpecifiers.StorageClassSpecifier.Case == cc.StorageClassSpecifierTypedef {
+ kind = declTypedef
+ } else {
+ switch idl.InitDeclarator.Declarator.DirectDeclarator.Case {
+ case cc.DirectDeclaratorIdent:
+ kind = declVar
+ case cc.DirectDeclaratorFuncParam:
+ kind = declFunc
+ default:
+ panic(fmt.Sprintf("TODO: %v", idl.InitDeclarator.Declarator.DirectDeclarator.Case))
+ }
}
+
var proto prototype
proto.Add(declSpecsProto...).Raw(" ").Add(declaratorPrototype(idl.InitDeclarator.Declarator)...).Raw(";")
decls = append(decls, declData{
M template.go => template.go +7 -6
@@ 19,12 19,13 @@ const (
type declKind string
const (
- declFunc declKind = "func"
- declVar declKind = "var"
- declStruct declKind = "struct"
- declUnion declKind = "union"
- declEnum declKind = "enum"
- declMacro declKind = "macro"
+ declFunc declKind = "func"
+ declVar declKind = "var"
+ declStruct declKind = "struct"
+ declUnion declKind = "union"
+ declEnum declKind = "enum"
+ declMacro declKind = "macro"
+ declTypedef declKind = "typedef"
)
type inlineType int