aboutsummaryrefslogtreecommitdiffstats
path: root/cmd/binapi-generator/generate.go
diff options
context:
space:
mode:
authorOndrej Fabry <ofabry@cisco.com>2019-05-27 09:03:12 +0200
committerOndrej Fabry <ofabry@cisco.com>2019-05-27 09:03:12 +0200
commitb8743f90b835a18871405fd318ba8a5e1a72eafb (patch)
tree59497a90c802b16db6b73757f8699df4083fe69a /cmd/binapi-generator/generate.go
parent87e79ec9fa48e5f8b2eb949c337488db75a17b29 (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.go23
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)