diff options
author | Ondrej Fabry <ofabry@cisco.com> | 2019-05-27 09:03:12 +0200 |
---|---|---|
committer | Ondrej Fabry <ofabry@cisco.com> | 2019-05-27 09:03:12 +0200 |
commit | b8743f90b835a18871405fd318ba8a5e1a72eafb (patch) | |
tree | 59497a90c802b16db6b73757f8699df4083fe69a /cmd/binapi-generator/generate.go | |
parent | 87e79ec9fa48e5f8b2eb949c337488db75a17b29 (diff) |
Add support for field meta data to binapi-generator
Change-Id: Id0164d36727d070e395a522000f2e09ee5444bd0
Signed-off-by: Ondrej Fabry <ofabry@cisco.com>
Diffstat (limited to 'cmd/binapi-generator/generate.go')
-rw-r--r-- | cmd/binapi-generator/generate.go | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/cmd/binapi-generator/generate.go b/cmd/binapi-generator/generate.go index f22a035..64d1071 100644 --- a/cmd/binapi-generator/generate.go +++ b/cmd/binapi-generator/generate.go @@ -591,17 +591,36 @@ func generateField(ctx *context, w io.Writer, fields []Field, i int) { } fmt.Fprintf(w, "\t%s %s", fieldName, fieldType) + fieldTags := map[string]string{} + if field.Length > 0 { // fixed size array - fmt.Fprintf(w, "\t`struc:\"[%d]%s\"`", field.Length, dataType) + fieldTags["struc"] = fmt.Sprintf("[%d]%s", field.Length, dataType) } else { for _, f := range fields { if f.SizeFrom == field.Name { // variable sized array sizeOfName := camelCaseName(f.Name) - fmt.Fprintf(w, "\t`struc:\"sizeof=%s\"`", sizeOfName) + fieldTags["struc"] = fmt.Sprintf("sizeof=%s", sizeOfName) + } + } + } + + if field.Meta.Limit > 0 { + fieldTags["binapi"] = fmt.Sprintf(",limit=%d", field.Meta.Limit) + } + + if len(fieldTags) > 0 { + fmt.Fprintf(w, "\t`") + var i int + for n, t := range fieldTags { + if i > 0 { + fmt.Fprintf(w, " ") } + i++ + fmt.Fprintf(w, `%s:"%s"`, n, t) } + fmt.Fprintf(w, "`") } fmt.Fprintln(w) |