aboutsummaryrefslogtreecommitdiff
path: root/nexgb/xgbgen/go_request_reply.go
diff options
context:
space:
mode:
Diffstat (limited to 'nexgb/xgbgen/go_request_reply.go')
-rw-r--r--nexgb/xgbgen/go_request_reply.go23
1 files changed, 21 insertions, 2 deletions
diff --git a/nexgb/xgbgen/go_request_reply.go b/nexgb/xgbgen/go_request_reply.go
index 1c0ce14..90dddb4 100644
--- a/nexgb/xgbgen/go_request_reply.go
+++ b/nexgb/xgbgen/go_request_reply.go
@@ -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, ", ")
}