// Minimum alignment for a struct is 1 byte.
align = 1
- var buf bytes.Buffer
+ var buf strings.Builder
buf.WriteString("struct {")
fld := make([]*ast.Field, 0, 2*len(dt.Field)+1) // enough for padding around every field
sizes := make([]int64, 0, 2*len(dt.Field)+1)
package main
import (
- "bytes"
"fmt"
"go/ast"
"go/printer"
// godefs returns the output for -godefs mode.
func (p *Package) godefs(f *File, args []string) string {
- var buf bytes.Buffer
+ var buf strings.Builder
fmt.Fprintf(&buf, "// Code generated by cmd/cgo -godefs; DO NOT EDIT.\n")
fmt.Fprintf(&buf, "// %s %s\n", filepath.Base(args[0]), strings.Join(args[1:], " "))
return buf.String()
}
-var gofmtBuf bytes.Buffer
+var gofmtBuf strings.Builder
// gofmt returns the gofmt-formatted string for an AST node.
func gofmt(n interface{}) string {
}
fm := creat(*objDir + "_cgo_main.c")
- var gccgoInit bytes.Buffer
+ var gccgoInit strings.Builder
fflg := creat(*objDir + "_cgo_flags")
for k, v := range p.CgoFlags {
// Also assumes that gc convention is to word-align the
// input and output parameters.
func (p *Package) structType(n *Name) (string, int64) {
- var buf bytes.Buffer
+ var buf strings.Builder
fmt.Fprint(&buf, "struct {\n")
off := int64(0)
for i, t := range n.FuncType.Params {
fn := exp.Func
fntype := fn.Type
- cdeclBuf := new(bytes.Buffer)
+ cdeclBuf := new(strings.Builder)
resultCount := 0
forFieldList(fntype.Results,
func(i int, aname string, atype ast.Expr) { resultCount++ })
cRet := cdeclBuf.String()
- cdeclBuf = new(bytes.Buffer)
+ cdeclBuf = new(strings.Builder)
fmt.Fprintf(cdeclBuf, "(")
if fn.Recv != nil {
fmt.Fprintf(cdeclBuf, "%s recv", p.cgoType(fn.Recv.List[0].Type).C.String())