|
|
|
@ -428,17 +428,15 @@ func (this *Generator) generateDecodeValue(typ Type, valueSource, tagSource stri
|
|
|
|
case TypeString, TypeBuffer:
|
|
|
|
case TypeString, TypeBuffer:
|
|
|
|
// SBA: <data: U8>*
|
|
|
|
// SBA: <data: U8>*
|
|
|
|
// LBA: <length: UN> <data: U8>*
|
|
|
|
// LBA: <length: UN> <data: U8>*
|
|
|
|
nn, err := this.iprintf("{\n")
|
|
|
|
lengthVar := this.newTemporaryVar("length")
|
|
|
|
this.push()
|
|
|
|
nn, err := this.iprintf("var %s uint64\n", lengthVar)
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
|
|
|
|
nn, err = this.iprintf("var length uint64\n")
|
|
|
|
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
nn, err = this.iprintf("if %s.Is(tape.LBA) {\n", tagSource)
|
|
|
|
nn, err = this.iprintf("if %s.Is(tape.LBA) {\n", tagSource)
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
this.push()
|
|
|
|
this.push()
|
|
|
|
nn, err = this.iprintf(
|
|
|
|
nn, err = this.iprintf(
|
|
|
|
"length, nn, err = decoder.ReadUintN(int(%s.CN()))\n",
|
|
|
|
"%s, nn, err = decoder.ReadUintN(int(%s.CN()))\n",
|
|
|
|
tagSource)
|
|
|
|
lengthVar, tagSource)
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
nn, err = this.generateErrorCheck()
|
|
|
|
nn, err = this.generateErrorCheck()
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|
|
n += nn; if err != nil { return n, err }
|
|
|