generate: Emit doc comments (in theory)

This commit is contained in:
Sasha Koshka 2025-10-13 17:29:27 -04:00
parent 190a89fbb3
commit 5d5d3fd31c

View File

@ -116,12 +116,16 @@ func (this *Generator) generateTypedef(name string, typedef Typedef) (n int, err
typ := typedef.Type typ := typedef.Type
// type definition // type definition
// TODO doc if typedef.Doc == "" {
nn, err := this.iprintf( nn, err := this.iprintf(
"\n// %s represents the protocol data type %s.\n", "\n// %s represents the protocol data type %s.\n",
name, name) name, name)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
nn, err = this.iprintf("type %s ", name) } else {
nn, err := this.iprintf("\n%s\n", this.formatComment(typedef.Doc))
n += nn; if err != nil { return n, err }
}
nn, err := this.iprintf("type %s ", name)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
nn, err = this.generateType(typ) nn, err = this.generateType(typ)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
@ -211,11 +215,16 @@ func (this *Generator) generateTypedef(name string, typedef Typedef) (n int, err
// generateMessage generates the structure, as well as encoding decoding // generateMessage generates the structure, as well as encoding decoding
// functions for the given message. // functions for the given message.
func (this *Generator) generateMessage(method uint16, message Message) (n int, err error) { func (this *Generator) generateMessage(method uint16, message Message) (n int, err error) {
// TODO doc if message.Doc == "" {
nn, err := this.iprintf( nn, err := this.iprintf(
"\n// %s represents the protocol message M%04X %s.\n", "\n// %s represents the protocol message M%04X %s.\n",
message.Name, method, message.Name) message.Name, method, message.Name)
nn, err = this.iprintf("type %s ", this.resolveMessageName(message.Name)) n += nn; if err != nil { return n, err }
} else {
nn, err := this.iprintf("\n%s\n", this.formatComment(message.Doc))
n += nn; if err != nil { return n, err }
}
nn, err := this.iprintf("type %s ", this.resolveMessageName(message.Name))
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
nn, err = this.generateType(message.Type) nn, err = this.generateType(message.Type)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
@ -1094,8 +1103,9 @@ func (this *Generator) generateTypeTableDefined(typ TypeTableDefined) (n int, er
for _, key := range slices.Sorted(maps.Keys(typ.Fields)) { for _, key := range slices.Sorted(maps.Keys(typ.Fields)) {
field := typ.Fields[key] field := typ.Fields[key]
// TODO doc nn, err := this.iprintf("%s\n", this.formatComment(field.Doc))
nn, err := this.iprintf("%s ", field.Name) n += nn; if err != nil { return n, err }
nn, err = this.iprintf("%s ", field.Name)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
nn, err = this.generateType(field.Type) nn, err = this.generateType(field.Type)
n += nn; if err != nil { return n, err } n += nn; if err != nil { return n, err }
@ -1180,6 +1190,10 @@ func (this *Generator) iprintf(format string, args ...any) (n int, err error) {
return fmt.Fprintf(this.Output, this.indent() + format, args...) return fmt.Fprintf(this.Output, this.indent() + format, args...)
} }
func (this *Generator) formatComment(comment string) string {
return "// " + strings.ReplaceAll(comment, "\n", "\n" + this.indent() + "// ")
}
func (this *Generator) resolveMessageName(message string) string { func (this *Generator) resolveMessageName(message string) string {
return "Message" + message return "Message" + message
} }