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

31 lines
1.1 KiB
Cheetah

{{ define "zero_derive" }}{{ $s := . }}
{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.structDef*/ -}}
func ({{ $s.Receiver }} *{{ $s.Name }}) Zero() bool {
if {{ $s.Receiver }} == nil {
return true
}
{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.fieldDef*/ -}}
{{- range $f := $s.Fields }}{{- if ne ($f.Name) ($f.ConditionalField) }}
if !({{ $s.Receiver }}.{{template "compare_zero" $f}}) {
return false
}
{{- end }}{{- end }}
return true
}
{{- end -}}
{{ define "compare_zero" }}
{{- /*gotype: go.mau.fi/mautrix-telegram/pkg/gotd/gen.fieldDef*/ -}}
{{- .Name -}}
{{- if or (.Slice) (.DoubleSlice) -}} == nil
{{- else if eq (.Type) ("bin.Int128") -}} == bin.Int128{}
{{- else if eq (.Type) ("bin.Int256") -}} == bin.Int256{}
{{- else if or (hasPrefix (.Type) ("int")) (hasPrefix (.Type) ("float")) }} == 0
{{- else if eq (.Type) ("string") -}} == ""
{{- else if eq (.Type) ("bool") -}} == false
{{- else if eq (.Type) ("bin.Object") }} == nil
{{- else if hasSuffix (.Type) ("Class") }} == nil
{{- else -}}.Zero()
{{- end -}}{{- end }}