xgbgen: make request function signatures shorter

This commit is contained in:
Přemysl Eric Janouch 2018-09-30 10:48:09 +02:00
parent 3e9ed4eac6
commit 7051829581
Signed by: p
GPG Key ID: A0420B94F92B9493
1 changed files with 21 additions and 2 deletions

View File

@ -247,9 +247,23 @@ func (r *Request) ParamNames() string {
func (r *Request) ParamNameTypes() string {
nameTypes := make([]string, 0, len(r.Fields))
chunk := make([]string, 0)
chunkType := ""
flushChunk := func() {
if len(chunk) > 0 {
nameTypes = append(nameTypes, chunk[:len(chunk)-1]...)
nameTypes = append(nameTypes,
fmt.Sprintf("%s %s", chunk[len(chunk)-1], chunkType))
}
chunk = nil
chunkType = ""
}
for _, field := range r.Fields {
switch f := field.(type) {
case *ValueField:
flushChunk()
nameTypes = append(nameTypes,
fmt.Sprintf("%s %s", f.MaskName, f.MaskType.SrcName()))
nameTypes = append(nameTypes,
@ -261,9 +275,14 @@ func (r *Request) ParamNameTypes() string {
case *RequiredStartAlign:
continue
default:
nameTypes = append(nameTypes,
fmt.Sprintf("%s %s", field.SrcName(), field.SrcType()))
curType := field.SrcType()
if curType != chunkType {
flushChunk()
}
chunk = append(chunk, field.SrcName())
chunkType = curType
}
}
flushChunk()
return strings.Join(nameTypes, ", ")
}