branched-generated-encoder #9

Merged
sashakoshka merged 24 commits from branched-generated-encoder into message-size-increase 2025-08-06 19:11:11 -06:00
Showing only changes of commit 12142706e1 - Show all commits

View File

@ -183,11 +183,11 @@ func (this *Generator) generateTypedef(name string, typ Type) (n int, err error)
nn, err = this.printf(") {\n")
n += nn; if err != nil { return n, err }
this.push()
nn, err = this.iprintf("nn, err = tape.Skim(decoder, tag)")
nn, err = this.iprintf("nn, err = tape.Skim(decoder, tag)\n")
n += nn; if err != nil { return n, err }
nn, err = this.generateErrorCheck()
n += nn; if err != nil { return n, err }
nn, err = this.iprintf("return n, nil")
nn, err = this.iprintf("return n, nil\n")
n += nn; if err != nil { return n, err }
this.pop()
nn, err = this.iprintf("}\n")
@ -272,11 +272,11 @@ func (this *Generator) generateMessage(method uint16, message Message) (n int, e
nn, err = this.printf(") {\n")
n += nn; if err != nil { return n, err }
this.push()
nn, err = this.iprintf("nn, err = tape.Skim(decoder, tag)")
nn, err = this.iprintf("nn, err = tape.Skim(decoder, tag)\n")
n += nn; if err != nil { return n, err }
nn, err = this.generateErrorCheck()
n += nn; if err != nil { return n, err }
nn, err = this.iprintf("return n, nil")
nn, err = this.iprintf("return n, nil\n")
n += nn; if err != nil { return n, err }
this.pop()
nn, err = this.iprintf("}\n")
@ -589,11 +589,11 @@ func (this *Generator) generateDecodeBranchCall(typ Type, valueSource, tagSource
// generateDecodeBranch generates an aggregate decoder function definition for a
// specified type. It assumes that hash == HashType(typ).
func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type) (n int, err error) {
nn, err := this.iprintf("func %s(this *", this.decodeBranchName(hash))
nn, err := this.iprintf("\nfunc %s(this *", this.decodeBranchName(hash))
n += nn; if err != nil { return n, err }
nn, err = this.generateType(typ)
n += nn; if err != nil { return n, err }
nn, err = this.printf(" decoder *tape.Decoder, tag tape.Tag) (nn int, err error) \n{")
nn, err = this.printf(", decoder *tape.Decoder, tag tape.Tag) (nn int, err error) {\n")
n += nn; if err != nil { return n, err }
this.push()
@ -625,7 +625,7 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type) (n int, err
nn, err = this.iprintf("for _ = range %s {\n", lengthVar)
n += nn; if err != nil { return n, err }
this.push()
nn, err = this.iprintf("nn, err = tape.Skim(decoder, %s)", elementTagVar)
nn, err = this.iprintf("nn, err = tape.Skim(decoder, %s)\n", elementTagVar)
n += nn; if err != nil { return n, err }
nn, err = this.generateErrorCheck()
n += nn; if err != nil { return n, err }
@ -712,7 +712,7 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type) (n int, err
// abort field macro
abortField := func() (n int, err error) {
nn, err = this.iprintf("tape.Skim(decoder, %s)", fieldTagVar)
nn, err = this.iprintf("tape.Skim(decoder, %s)\n", fieldTagVar)
n += nn; if err != nil { return n, err }
nn, err = this.iprintf("continue")
n += nn; if err != nil { return n, err }
@ -722,7 +722,6 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type) (n int, err
// switch on tag
nn, err = this.iprintf("switch %s {\n", fieldTagVar)
n += nn; if err != nil { return n, err }
this.push()
for _, key := range slices.Sorted(maps.Keys(typ.Fields)) {
field := typ.Fields[key]
nn, err = this.iprintf("case %s:\n", fieldTagVar)
@ -772,7 +771,7 @@ func (this *Generator) generateDecodeBranch(hash [16]byte, typ Type) (n int, err
}
this.pop()
nn, err = this.iprintf("}")
nn, err = this.iprintf("}\n")
n += nn; if err != nil { return n, err }
return n, nil
}