~emersion/gyosu

96e6cf4c3f17f688571149300784dc62faf49475 — Simon Ser 4 months ago 4c31479
Add support for typedefs

Closes: https://todo.sr.ht/~emersion/gyosu/1
2 files changed, 19 insertions(+), 13 deletions(-)

M main.go
M template.go
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