X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=cmd%2Fbinapi-generator%2Fobjects.go;h=9871abc5722001fe7626d854a5a4aec6506a5f5a;hb=refs%2Fchanges%2F58%2F24658%2F2;hp=75c7581a77c68c3b2b286e7c5afbb2ec8b9274e4;hpb=fa21c9d726ebb807895a8571af9a16dab5cd8d6e;p=govpp.git diff --git a/cmd/binapi-generator/objects.go b/cmd/binapi-generator/objects.go index 75c7581..9871abc 100644 --- a/cmd/binapi-generator/objects.go +++ b/cmd/binapi-generator/objects.go @@ -1,15 +1,24 @@ package main +import "fmt" + // Package represents collection of objects parsed from VPP binary API JSON data type Package struct { - APIVersion string - Services []Service - Enums []Enum - Aliases []Alias - Types []Type - Unions []Union - Messages []Message - RefMap map[string]string + Name string + Version string + CRC string + Services []Service + Enums []Enum + Aliases []Alias + Types []Type + Unions []Union + Messages []Message + RefMap map[string]string + Imports map[string]Import +} + +type Import struct { + Package string } // Service represents VPP binary API service @@ -50,10 +59,18 @@ type Type struct { // Field represents VPP binary API object field type Field struct { - Name string - Type string - Length int - SizeFrom string + Name string + Type string + Length int + SpecifiedLen bool + SizeFrom string + Meta FieldMeta +} + +// FieldMeta represents VPP binary API meta info for field +type FieldMeta struct { + Limit int + Default string } // Union represents VPP binary API union @@ -79,3 +96,44 @@ const ( eventMessage // VPP event message otherMessage // other VPP message ) + +// printPackage prints all loaded objects for package +func printPackage(pkg *Package) { + logf("package: %s %s (%s)", pkg.Name, pkg.Version, pkg.CRC) + if len(pkg.Enums) > 0 { + logf(" %d enums:", len(pkg.Enums)) + for _, enum := range pkg.Enums { + logf(" - %s: %+v", enum.Name, enum) + } + } + if len(pkg.Unions) > 0 { + logf(" %d unions:", len(pkg.Unions)) + for _, union := range pkg.Unions { + logf(" - %s: %+v", union.Name, union) + } + } + if len(pkg.Types) > 0 { + logf(" %d types:", len(pkg.Types)) + for _, typ := range pkg.Types { + logf(" - %s (%d fields): %+v", typ.Name, len(typ.Fields), typ) + } + } + if len(pkg.Messages) > 0 { + logf(" %d messages:", len(pkg.Messages)) + for _, msg := range pkg.Messages { + logf(" - %s (%d fields) %s", msg.Name, len(msg.Fields), msg.CRC) + } + } + if len(pkg.Services) > 0 { + logf(" %d services:", len(pkg.Services)) + for _, svc := range pkg.Services { + var info string + if svc.Stream { + info = "(STREAM)" + } else if len(svc.Events) > 0 { + info = fmt.Sprintf("(EVENTS: %v)", svc.Events) + } + logf(" - %s: %q -> %q %s", svc.Name, svc.RequestType, svc.ReplyType, info) + } + } +}