Files
mautrix-telegram/pkg/gotd/gen/_template/struct.tmpl
T
2025-06-27 20:03:37 -07:00

47 lines
1.3 KiB
Cheetah

{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.structDef*/ -}}
{{ define "struct" }}{{ $s := . }}
// {{ $s.Comment }}
{{- if $s.Docs }}
{{- template "print_comment" $s.Docs }}
{{- end }}
{{- if $s.Links }}
{{- template "print_links" $s.Links }}
{{- end }}
{{- if $s.URL }}
//
// See {{ $s.URL }} for reference.
{{- end }}
type {{ $s.Name }} struct {
{{- range $f := $s.Fields }}
{{- template "print_comment" $f.Comment }}
{{- if $f.Links}}
{{- template "print_links" $f.Links }}
{{- end }}
{{- if and ($f.Conditional) (not $f.ConditionalBool) }}
//
// Use Set{{ $f.Name }} and Get{{ $f.Name }} helpers.
{{- end }}
{{ $f.Name }} {{ template "print_type" $f }}
{{- end }}
}
// {{ $s.Name }}TypeID is TL type id of {{ $s.Name }}.
const {{ $s.Name }}TypeID = {{ if not $s.Vector }}0x{{ $s.HexID }}{{- else -}}bin.TypeVector{{- end }}
{{ if $s.Interface }}
// construct implements constructor of {{ $s.Interface }}.
func ({{ $s.Receiver }} {{ $s.Name }}) construct() {{ $s.Interface }} { return &{{ $s.Receiver }} }
{{ end }}
// Ensuring interfaces in compile-time for {{ $s.Name }}.
var (
_ bin.Encoder = &{{ $s.Name }}{}
_ bin.Decoder = &{{ $s.Name }}{}
_ bin.BareEncoder = &{{ $s.Name }}{}
_ bin.BareDecoder = &{{ $s.Name }}{}
{{ if $s.Interface }}
_ {{ $s.Interface }} = &{{ $s.Name }}{}
{{ end }}
)
{{ end }}