Compare commits
2 Commits
e75d7534c1
...
9ff317d443
| Author | SHA1 | Date | |
|---|---|---|---|
| 9ff317d443 | |||
| cdba8ee601 |
@@ -14,14 +14,11 @@ import "git.tebibyte.media/sashakoshka/hopp/tape"
|
|||||||
`
|
`
|
||||||
|
|
||||||
const preamble = `
|
const preamble = `
|
||||||
/* # Do not edit this package by hand!
|
// Code generated by the Holanet PDL compiler. DO NOT EDIT.
|
||||||
*
|
// The source file is located at <path>
|
||||||
* This file was automatically generated by the Holanet PDL compiler. The
|
// Please edit that file instead, and re-compile it to this location.
|
||||||
* source file is located at <path>
|
// HOPP, TAPE, METADAPT, PDL/0 (c) 2025 holanet.xyz
|
||||||
* Please edit that file instead, and re-compile it to this location.
|
|
||||||
*
|
|
||||||
* HOPP, TAPE, METADAPT, PDL/0 (c) 2025 holanet.xyz
|
|
||||||
*/
|
|
||||||
`
|
`
|
||||||
|
|
||||||
const static = `
|
const static = `
|
||||||
@@ -174,7 +171,7 @@ func (this *Generator) generateMessage(method uint16, message Message) (n int, e
|
|||||||
nn, err = this.iprintf("\n// Encode encodes this message's tag and value.\n")
|
nn, err = this.iprintf("\n// Encode encodes this message's tag and value.\n")
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
nn, err = this.iprintf(
|
nn, err = this.iprintf(
|
||||||
"func(this %s) Encode(encoder *tape.Encoder) (n int, err error) {\n",
|
"func(this *%s) Encode(encoder *tape.Encoder) (n int, err error) {\n",
|
||||||
this.resolveMessageName(message.Name))
|
this.resolveMessageName(message.Name))
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
this.push()
|
this.push()
|
||||||
@@ -311,7 +308,7 @@ func (this *Generator) generateEncodeValue(typ Type, valueSource, tagSource stri
|
|||||||
case TypeTableDefined:
|
case TypeTableDefined:
|
||||||
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
|
// KTV: <length: UN> (<key: U16> <tag: Tag> <value>)*
|
||||||
nn, err := this.iprintf(
|
nn, err := this.iprintf(
|
||||||
"nn, err = encoder.WriteUintN(%s.CN(), %d)\n",
|
"nn, err = encoder.WriteUintN(uint64(%s.CN()), %d)\n",
|
||||||
tagSource, len(typ.Fields))
|
tagSource, len(typ.Fields))
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
nn, err = this.generateErrorCheck()
|
nn, err = this.generateErrorCheck()
|
||||||
@@ -379,29 +376,29 @@ func (this *Generator) generateTag(typ Type, source string) (n int, err error) {
|
|||||||
switch typ := typ.(type) {
|
switch typ := typ.(type) {
|
||||||
case TypeInt:
|
case TypeInt:
|
||||||
if typ.Bits <= 5 {
|
if typ.Bits <= 5 {
|
||||||
nn, err := this.printf("tape.TagSI")
|
nn, err := this.printf("tape.SI")
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
} else {
|
} else {
|
||||||
nn, err := this.printf("tape.TagLI.WithCN(%d)", bitsToCN(typ.Bits))
|
nn, err := this.printf("tape.LI.WithCN(%d)", bitsToCN(typ.Bits))
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
}
|
}
|
||||||
case TypeFloat:
|
case TypeFloat:
|
||||||
nn, err := this.printf("tape.TagFP.WithCN(%d)", bitsToCN(typ.Bits))
|
nn, err := this.printf("tape.FP.WithCN(%d)", bitsToCN(typ.Bits))
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeString:
|
case TypeString:
|
||||||
nn, err := this.generateTag(TypeBuffer { }, source)
|
nn, err := this.generateTag(TypeBuffer { }, source)
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeBuffer:
|
case TypeBuffer:
|
||||||
nn, err := this.printf("bufferTag(%s)", source)
|
nn, err := this.printf("tape.BufferTag(%s)", source)
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeArray:
|
case TypeArray:
|
||||||
nn, err := this.printf("arrayTag(tape.TagOTA.WithCN(tape.IntBytes(uint64(len(%s)))))", source)
|
nn, err := this.printf("arrayTag(tape.OTA.WithCN(tape.IntBytes(uint64(len(%s)))))", source)
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeTable:
|
case TypeTable:
|
||||||
nn, err := this.printf("tape.TagKTV.WithCN(tape.IntBytes(uint64(len(%s))))", source)
|
nn, err := this.printf("tape.KTV.WithCN(tape.IntBytes(uint64(len(%s))))", source)
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeTableDefined:
|
case TypeTableDefined:
|
||||||
nn, err := this.printf("tape.TagKTV.WithCN(%d)", tape.IntBytes(uint64(len(typ.Fields))))
|
nn, err := this.printf("tape.KTV.WithCN(%d)", tape.IntBytes(uint64(len(typ.Fields))))
|
||||||
n += nn; if err != nil { return n, err }
|
n += nn; if err != nil { return n, err }
|
||||||
case TypeNamed:
|
case TypeNamed:
|
||||||
resolved, err := this.resolveTypeName(typ.Name)
|
resolved, err := this.resolveTypeName(typ.Name)
|
||||||
|
|||||||
Reference in New Issue
Block a user