generate: Add Generator.generateDecodeBranch stub

This commit is contained in:
Sasha Koshka 2025-08-03 22:19:06 -04:00
parent fae702edfd
commit 41b3376fa3

View File

@ -485,7 +485,8 @@ func (this *Generator) generateDecodeValue(typ Type, valueSource, tagSource, abo
}
case TypeArray:
// OTA: <length: UN> <elementTag: tape.Tag> <values>*
// TODO: branch
nn, err := this.generateDecodeBranch(typ, valueSource, tagSource)
n += nn; if err != nil { return n, err }
case TypeTable:
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
nn, err := this.iprintf(
@ -496,7 +497,8 @@ func (this *Generator) generateDecodeValue(typ Type, valueSource, tagSource, abo
n += nn; if err != nil { return n, err }
case TypeTableDefined:
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
// TODO: branch
nn, err := this.generateDecodeBranch(typ, valueSource, tagSource)
n += nn; if err != nil { return n, err }
case TypeNamed:
// WHATEVER: [WHATEVER]
nn, err := this.iprintf("nn, err = %s.DecodeValue(decoder, %s)\n", valueSource, tagSource)
@ -510,6 +512,23 @@ func (this *Generator) generateDecodeValue(typ Type, valueSource, tagSource, abo
return n, nil
}
// generateDencodeValue generates code to call an aggregate decoder function,
// for a specified type. The definition of the function is deferred so no
// duplicates are created. The function overwrites memory pointed to by the
// variable (or parenthetical statement) specified by valueSource, and the value
// will be encoded according to the tag stored in the variable (or parenthetical
// statement) specified by tagSource. the code generated is a BLOCK and expects
// these variables to be defined:
//
// - decoder *tape.Decoder
// - n int
// - err error
// - nn int
func (this *Generator) generateDecodeBranch(typ Type, valueSource, tagSource string) (n int, err error) {
// TODO
}
func (this *Generator) generateErrorCheck() (n int, err error) {
return this.iprintf("n += nn; if err != nil { return n, err }\n")
}