diff options
author | Ondrej Fabry <ofabry@cisco.com> | 2019-06-04 14:47:19 +0200 |
---|---|---|
committer | Ondrej Fabry <ofabry@cisco.com> | 2019-06-04 14:47:19 +0200 |
commit | 0ff02b6b1f0757f5e4c011457757bd18d0a60f01 (patch) | |
tree | 599d8a351942ba63b2418da737d7f9e10b6c0973 /cmd/binapi-generator/generate.go | |
parent | 3f0489044a1fbc6539aa8c57ffce6d7b00de7d82 (diff) |
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 <ofabry@cisco.com>
Diffstat (limited to 'cmd/binapi-generator/generate.go')
-rw-r--r-- | cmd/binapi-generator/generate.go | 26 |
1 files changed, 20 insertions, 6 deletions
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, "`") } |