{{ 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 }}