MCPcopy
hub / github.com/TarsCloud/TarsGo / genWriteMap

Method genWriteMap

tars/tools/tars2go/gencode/gen_go.go:542–575  ·  view source on GitHub ↗
(mb *ast.StructMember, prefix string, hasRet bool)

Source from the content-addressed store, hash-verified

540}
541
542func (g *GenGo) genWriteMap(mb *ast.StructMember, prefix string, hasRet bool) {
543 if !mb.Require {
544 g.P("if len(", g.genVariableName(prefix, mb.Key), ") > 0 {")
545 defer g.P("}")
546 }
547
548 tag := strconv.Itoa(int(mb.Tag))
549 vc := strconv.Itoa(g.vc)
550 g.vc++
551 errStr := errString(hasRet)
552 g.P("err = buf.WriteHead(codec.MAP, ", tag, ")")
553 g.P(errStr)
554 g.P("err = buf.WriteInt32(int32(len(", g.genVariableName(prefix, mb.Key), ")), 0)")
555 g.P(errStr)
556 g.P("for k", vc, ", v", vc, " := range ", g.genVariableName(prefix, mb.Key), " {")
557 // for _, v := range can nesting for _, v := range,does not conflict, support multidimensional arrays
558
559 dummy := &ast.StructMember{
560 Require: true,
561 Type: mb.Type.TypeK,
562 Key: "k" + vc,
563 }
564 g.genWriteVar(dummy, "", hasRet)
565
566 dummy = &ast.StructMember{
567 Tag: 1,
568 Require: true,
569 Type: mb.Type.TypeV,
570 Key: "v" + vc,
571 }
572 g.genWriteVar(dummy, "", hasRet)
573
574 g.P("}")
575}
576
577func (g *GenGo) genWriteStruct(mb *ast.StructMember, prefix string, hasRet bool) {
578 tag := strconv.Itoa(int(mb.Tag))

Callers 1

genWriteVarMethod · 0.95

Calls 4

PMethod · 0.95
genVariableNameMethod · 0.95
genWriteVarMethod · 0.95
errStringFunction · 0.85

Tested by

no test coverage detected