Generator improvements
[govpp.git] / cmd / binapi-generator / objects.go
index 2681085..4b424f5 100644 (file)
@@ -1,33 +1,48 @@
 package main
 
-import "strings"
+import (
+       "strings"
+)
 
 // Package represents collection of objects parsed from VPP binary API JSON data
 type Package struct {
        APIVersion string
+       Services   []Service
        Enums      []Enum
-       Unions     []Union
+       Aliases    []Alias
        Types      []Type
+       Unions     []Union
        Messages   []Message
-       Services   []Service
        RefMap     map[string]string
 }
 
-// MessageType represents the type of a VPP message
-type MessageType int
+// Service represents VPP binary API service
+type Service struct {
+       Name        string
+       RequestType string
+       ReplyType   string
+       Stream      bool
+       Events      []string
+}
 
-const (
-       requestMessage MessageType = iota // VPP request message
-       replyMessage                      // VPP reply message
-       eventMessage                      // VPP event message
-       otherMessage                      // other VPP message
-)
+// Enum represents VPP binary API enum
+type Enum struct {
+       Name    string
+       Type    string
+       Entries []EnumEntry
+}
 
-// Message represents VPP binary API message
-type Message struct {
+// EnumEntry represents VPP binary API enum entry
+type EnumEntry struct {
+       Name  string
+       Value interface{}
+}
+
+// Alias represents VPP binary API alias
+type Alias struct {
        Name   string
-       CRC    string
-       Fields []Field
+       Type   string
+       Length int
 }
 
 // Type represents VPP binary API type
@@ -44,6 +59,23 @@ type Union struct {
        Fields []Field
 }
 
+// Message represents VPP binary API message
+type Message struct {
+       Name   string
+       CRC    string
+       Fields []Field
+}
+
+// MessageType represents the type of a VPP message
+type MessageType int
+
+const (
+       requestMessage MessageType = iota // VPP request message
+       replyMessage                      // VPP reply message
+       eventMessage                      // VPP event message
+       otherMessage                      // other VPP message
+)
+
 // Field represents VPP binary API object field
 type Field struct {
        Name     string
@@ -56,28 +88,6 @@ func (f *Field) IsArray() bool {
        return f.Length > 0 || f.SizeFrom != ""
 }
 
-// Enum represents VPP binary API enum
-type Enum struct {
-       Name    string
-       Type    string
-       Entries []EnumEntry
-}
-
-// EnumEntry represents VPP binary API enum entry
-type EnumEntry struct {
-       Name  string
-       Value interface{}
-}
-
-// Service represents VPP binary API service
-type Service struct {
-       Name        string
-       RequestType string
-       ReplyType   string
-       Stream      bool
-       Events      []string
-}
-
 func (s Service) MethodName() string {
        reqTyp := camelCaseName(s.RequestType)
 
@@ -105,16 +115,3 @@ func (s Service) IsRequestService() bool {
        // some binapi messages might have `null` reply (for example: memclnt)
        return s.ReplyType != "" && s.ReplyType != "null" // not null
 }
-
-func getSizeOfType(typ *Type) (size int) {
-       for _, field := range typ.Fields {
-               if n := getBinapiTypeSize(field.Type); n > 0 {
-                       if field.Length > 0 {
-                               size += n * field.Length
-                       } else {
-                               size += n
-                       }
-               }
-       }
-       return size
-}