1 // structlayout-pretty formats the output of structlayout with ASCII
13 st "honnef.co/go/tools/structlayout"
14 "honnef.co/go/tools/version"
23 flag.BoolVar(&fVerbose, "v", false, "Do not compact consecutive bytes of fields")
24 flag.BoolVar(&fVersion, "version", false, "Print version and exit")
37 if err := json.NewDecoder(os.Stdin).Decode(&fields); err != nil {
43 max := fields[len(fields)-1].End
44 maxLength := len(fmt.Sprintf("%d", max))
45 padding := strings.Repeat(" ", maxLength+2)
46 format := fmt.Sprintf(" %%%dd ", maxLength)
48 fmt.Println(padding + "+--------+")
49 for _, field := range fields {
50 name := field.Name + " " + field.Type
54 fmt.Printf(format+"| | <- %s (size %d, align %d)\n", pos, name, field.Size, field.Align)
55 fmt.Println(padding + "+--------+")
58 for i := int64(0); i < field.Size-1; i++ {
59 fmt.Printf(format+"| |\n", pos+i+1)
60 fmt.Println(padding + "+--------+")
64 fmt.Println(padding + "-........-")
65 fmt.Println(padding + "+--------+")
66 fmt.Printf(format+"| |\n", pos+field.Size-1)
67 fmt.Println(padding + "+--------+")