return typ
}
-func getSizeOfType(typ *Type) (size int) {
+func getSizeOfType(ctx *context, typ *Type) (size int) {
for _, field := range typ.Fields {
+ enum := getEnumByRef(ctx, field.Type)
+ if enum != nil {
+ size += getSizeOfBinapiTypeLength(enum.Type, field.Length)
+ continue
+ }
size += getSizeOfBinapiTypeLength(field.Type, field.Length)
}
return size
return n
}
}
+
return
}
+func getEnumByRef(ctx *context, ref string) *Enum {
+ for _, typ := range ctx.packageData.Enums {
+ if ref == toApiType(typ.Name) {
+ return &typ
+ }
+ }
+ return nil
+}
+
func getTypeByRef(ctx *context, ref string) *Type {
for _, typ := range ctx.packageData.Types {
if ref == toApiType(typ.Name) {
for _, field := range union.Fields {
typ := getTypeByRef(ctx, field.Type)
if typ != nil {
- if size := getSizeOfType(typ); size > maxSize {
+ if size := getSizeOfType(ctx, typ); size > maxSize {
maxSize = size
}
continue
continue
}
}
+ logf("getUnionSize: %s %+v max=%v", union.Name, union.Fields, maxSize)
return
}