From 0ff02b6b1f0757f5e4c011457757bd18d0a60f01 Mon Sep 17 00:00:00 2001 From: Ondrej Fabry Date: Tue, 4 Jun 2019 14:47:19 +0200 Subject: Fix union data size for types with enums - this also fixed proper alphabetical order for struct tags - env var DEBUG_BINAPI_GENERATOR=y can be used to enable debug mode Change-Id: I5b08a696ad2ff2a297872f231f9229cd956ee443 Signed-off-by: Ondrej Fabry --- cmd/binapi-generator/generate.go | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'cmd/binapi-generator/generate.go') diff --git a/cmd/binapi-generator/generate.go b/cmd/binapi-generator/generate.go index 64d1071..4ffe88e 100644 --- a/cmd/binapi-generator/generate.go +++ b/cmd/binapi-generator/generate.go @@ -20,6 +20,7 @@ import ( "fmt" "io" "path/filepath" + "sort" "strings" "unicode" ) @@ -41,6 +42,7 @@ type context struct { includeAPIVersionCrc bool // include constant with API version CRC string includeComments bool // include parts of original source in comments + includeBinapiNames bool // include binary API names as struct tag moduleName string // name of the source VPP module packageName string // name of the Go package being generated @@ -606,19 +608,31 @@ func generateField(ctx *context, w io.Writer, fields []Field, i int) { } } + if ctx.includeBinapiNames { + fieldTags["binapi"] = field.Name + } if field.Meta.Limit > 0 { - fieldTags["binapi"] = fmt.Sprintf(",limit=%d", field.Meta.Limit) + fieldTags["binapi"] = fmt.Sprintf("%s,limit=%d", fieldTags["binapi"], field.Meta.Limit) } if len(fieldTags) > 0 { fmt.Fprintf(w, "\t`") - var i int - for n, t := range fieldTags { - if i > 0 { + var keys []string + for k := range fieldTags { + keys = append(keys, k) + } + sort.Strings(keys) + var n int + for _, tt := range keys { + t, ok := fieldTags[tt] + if !ok { + continue + } + if n > 0 { fmt.Fprintf(w, " ") } - i++ - fmt.Fprintf(w, `%s:"%s"`, n, t) + n++ + fmt.Fprintf(w, `%s:"%s"`, tt, t) } fmt.Fprintf(w, "`") } -- cgit 1.2.3-korg