diff --git a/generate/generate.go b/generate/generate.go index bef34a0..f1bfbcf 100644 --- a/generate/generate.go +++ b/generate/generate.go @@ -116,12 +116,16 @@ func (this *Generator) generateTypedef(name string, typedef Typedef) (n int, err typ := typedef.Type // type definition - // TODO doc - nn, err := this.iprintf( - "\n// %s represents the protocol data type %s.\n", - name, name) - n += nn; if err != nil { return n, err } - nn, err = this.iprintf("type %s ", name) + if typedef.Doc == "" { + nn, err := this.iprintf( + "\n// %s represents the protocol data type %s.\n", + name, name) + n += nn; if err != nil { return n, err } + } 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 } nn, err = this.generateType(typ) 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 // functions for the given message. func (this *Generator) generateMessage(method uint16, message Message) (n int, err error) { - // TODO doc - nn, err := this.iprintf( - "\n// %s represents the protocol message M%04X %s.\n", - message.Name, method, message.Name) - nn, err = this.iprintf("type %s ", this.resolveMessageName(message.Name)) + if message.Doc == "" { + nn, err := this.iprintf( + "\n// %s represents the protocol message M%04X %s.\n", + message.Name, method, 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 } nn, err = this.generateType(message.Type) 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)) { field := typ.Fields[key] - // TODO doc - nn, err := this.iprintf("%s ", field.Name) + nn, err := this.iprintf("%s\n", this.formatComment(field.Doc)) + n += nn; if err != nil { return n, err } + nn, err = this.iprintf("%s ", field.Name) n += nn; if err != nil { return n, err } nn, err = this.generateType(field.Type) 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...) } +func (this *Generator) formatComment(comment string) string { + return "// " + strings.ReplaceAll(comment, "\n", "\n" + this.indent() + "// ") +} + func (this *Generator) resolveMessageName(message string) string { return "Message" + message }