binapigen: added enumflags type
[govpp.git] / binapigen / vppapi / parse_json.go
index d14865c..a2ca257 100644 (file)
@@ -41,6 +41,7 @@ const (
        fileMessages   = "messages"
        fileUnions     = "unions"
        fileEnums      = "enums"
+       fileEnumflags  = "enumflags"
        fileAliases    = "aliases"
        fileServices   = "services"
        fileImports    = "imports"
@@ -129,6 +130,20 @@ func parseJSON(data []byte) (module *File, err error) {
                module.EnumTypes = append(module.EnumTypes, *enum)
        }
 
+       // parse enumflags types
+       enumflagsNode := jsonRoot.Map(fileEnumflags)
+       module.EnumflagTypes = make([]EnumType, 0)
+       for i := 0; i < enumflagsNode.Len(); i++ {
+               enumflag, err := parseEnum(enumflagsNode.At(i))
+               if err != nil {
+                       return nil, err
+               }
+               if exists(enumflag.Name) {
+                       continue
+               }
+               module.EnumflagTypes = append(module.EnumflagTypes, *enumflag)
+       }
+
        // parse alias types
        aliasesNode := jsonRoot.Map(fileAliases)
        if aliasesNode.GetType() == jsongo.TypeMap {