X-Git-Url: https://git.josue.xyz/?a=blobdiff_plain;f=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fhonnef.co%2Fgo%2Ftools%40v0.0.1-2020.1.5%2Fcmd%2Fstructlayout-pretty%2Fmain.go;fp=.config%2Fcoc%2Fextensions%2Fcoc-go-data%2Ftools%2Fpkg%2Fmod%2Fhonnef.co%2Fgo%2Ftools%40v0.0.1-2020.1.5%2Fcmd%2Fstructlayout-pretty%2Fmain.go;h=a75192c9d54a811162fb885bd0eeaeb5978ff649;hb=4d07c77cf4d78cab8639e13ddc3c22495e585b0b;hp=0000000000000000000000000000000000000000;hpb=b3950616b54221c40a7dab9099bda675007e5b6e;p=dotfiles%2F.git diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/cmd/structlayout-pretty/main.go b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/cmd/structlayout-pretty/main.go new file mode 100644 index 00000000..a75192c9 --- /dev/null +++ b/.config/coc/extensions/coc-go-data/tools/pkg/mod/honnef.co/go/tools@v0.0.1-2020.1.5/cmd/structlayout-pretty/main.go @@ -0,0 +1,72 @@ +// structlayout-pretty formats the output of structlayout with ASCII +// art. +package main + +import ( + "encoding/json" + "flag" + "fmt" + "log" + "os" + "strings" + + st "honnef.co/go/tools/structlayout" + "honnef.co/go/tools/version" +) + +var ( + fVerbose bool + fVersion bool +) + +func init() { + flag.BoolVar(&fVerbose, "v", false, "Do not compact consecutive bytes of fields") + flag.BoolVar(&fVersion, "version", false, "Print version and exit") +} + +func main() { + log.SetFlags(0) + flag.Parse() + + if fVersion { + version.Print() + os.Exit(0) + } + + var fields []st.Field + if err := json.NewDecoder(os.Stdin).Decode(&fields); err != nil { + log.Fatal(err) + } + if len(fields) == 0 { + return + } + max := fields[len(fields)-1].End + maxLength := len(fmt.Sprintf("%d", max)) + padding := strings.Repeat(" ", maxLength+2) + format := fmt.Sprintf(" %%%dd ", maxLength) + pos := int64(0) + fmt.Println(padding + "+--------+") + for _, field := range fields { + name := field.Name + " " + field.Type + if field.IsPadding { + name = "padding" + } + fmt.Printf(format+"| | <- %s (size %d, align %d)\n", pos, name, field.Size, field.Align) + fmt.Println(padding + "+--------+") + + if fVerbose { + for i := int64(0); i < field.Size-1; i++ { + fmt.Printf(format+"| |\n", pos+i+1) + fmt.Println(padding + "+--------+") + } + } else { + if field.Size > 2 { + fmt.Println(padding + "-........-") + fmt.Println(padding + "+--------+") + fmt.Printf(format+"| |\n", pos+field.Size-1) + fmt.Println(padding + "+--------+") + } + } + pos += field.Size + } +}