generated: Remove unneeded code
This commit is contained in:
parent
dcbfbe9141
commit
c86f9b03f2
@ -485,50 +485,7 @@ func (this *Generator) generateDecodeValue(typ Type, valueSource, tagSource, abo
|
|||||||
}
|
}
|
||||||
case TypeArray:
|
case TypeArray:
|
||||||
// OTA: <length: UN> <elementTag: tape.Tag> <values>*
|
// OTA: <length: UN> <elementTag: tape.Tag> <values>*
|
||||||
lengthVar := this.newTemporaryVar("length")
|
// TODO: branch
|
||||||
nn, err := this.iprintf("var %s uint64\n", lengthVar)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf(
|
|
||||||
"%s, nn, err = decoder.ReadUintN(int(%s.CN()))\n",
|
|
||||||
lengthVar, tagSource)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.generateErrorCheck()
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("*%s = make(", valueSource)
|
|
||||||
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(", int(%s))\n", lengthVar)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("var itemTag tape.Tag\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("itemTag, nn, err = decoder.ReadTag()\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("if !itemTag.Is(")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.generateTN(typ.Element)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf(") {\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.push()
|
|
||||||
nn, err = this.iprintf("%s\n", abort)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.pop()
|
|
||||||
nn, err = this.iprintf("}\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("for index := range %s {\n", lengthVar)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.push()
|
|
||||||
nn, err = this.generateDecodeValue(
|
|
||||||
typ.Element,
|
|
||||||
fmt.Sprintf("(&(*%s)[index])", valueSource),
|
|
||||||
"itemTag", abort)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.pop()
|
|
||||||
nn, err = this.iprintf("}\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
case TypeTable:
|
case TypeTable:
|
||||||
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
|
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
|
||||||
nn, err := this.iprintf(
|
nn, err := this.iprintf(
|
||||||
@ -539,73 +496,7 @@ func (this *Generator) generateDecodeValue(typ Type, valueSource, tagSource, abo
|
|||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeTableDefined:
|
case TypeTableDefined:
|
||||||
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
|
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
|
||||||
lengthVar := this.newTemporaryVar("length")
|
// TODO: branch
|
||||||
nn, err := this.iprintf("var %s uint64\n", lengthVar)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf(
|
|
||||||
"%s, nn, err = decoder.ReadUintN(int(%s.CN()))\n",
|
|
||||||
lengthVar, tagSource)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.generateErrorCheck()
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("for _ = range %s {\n", lengthVar)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.push()
|
|
||||||
nn, err = this.iprintf("var key uint16\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("key, nn, err = decoder.ReadUint16()\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("var itemTag tape.Tag\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("itemTag, nn, err = decoder.ReadTag()\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("switch key {\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
keys := slices.Collect(maps.Keys(typ.Fields))
|
|
||||||
slices.Sort(keys)
|
|
||||||
for _, key := range keys {
|
|
||||||
field := typ.Fields[key]
|
|
||||||
nn, err = this.iprintf("case 0x%04X:\n", key)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.push()
|
|
||||||
labelVar := this.newTemporaryVar("label")
|
|
||||||
fieldAbort := fmt.Sprintf("goto %s", labelVar) // TODO: skip value somehow
|
|
||||||
nn, err = this.iprintf("if !itemTag.Is(")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.generateTN(field.Type)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.printf(") {\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.push()
|
|
||||||
nn, err = this.iprintf("%s\n", fieldAbort)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.pop()
|
|
||||||
nn, err = this.iprintf("}\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("{\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.push()
|
|
||||||
nn, err = this.generateDecodeValue(
|
|
||||||
field.Type,
|
|
||||||
fmt.Sprintf("(&%s.%s)", valueSource, field.Name),
|
|
||||||
"itemTag", fieldAbort)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.pop()
|
|
||||||
nn, err = this.iprintf("}\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
nn, err = this.iprintf("%s:;\n", labelVar)
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.pop()
|
|
||||||
}
|
|
||||||
nn, err = this.iprintf("}\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
this.pop()
|
|
||||||
nn, err = this.iprintf("}\n")
|
|
||||||
n += nn; if err != nil { return n, err }
|
|
||||||
case TypeNamed:
|
case TypeNamed:
|
||||||
// WHATEVER: [WHATEVER]
|
// WHATEVER: [WHATEVER]
|
||||||
nn, err := this.iprintf("nn, err = %s.DecodeValue(decoder, %s)\n", valueSource, tagSource)
|
nn, err := this.iprintf("nn, err = %s.DecodeValue(decoder, %s)\n", valueSource, tagSource)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user