From b8743f90b835a18871405fd318ba8a5e1a72eafb Mon Sep 17 00:00:00 2001 From: Ondrej Fabry Date: Mon, 27 May 2019 09:03:12 +0200 Subject: Add support for field meta data to binapi-generator Change-Id: Id0164d36727d070e395a522000f2e09ee5444bd0 Signed-off-by: Ondrej Fabry --- cmd/binapi-generator/generate.go | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'cmd/binapi-generator/generate.go') 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) -- cgit 1.2.3-korg