Skip to content

Commit

Permalink
Merge pull request #595 from tdakkota/refactor/gen-separate-flag-sett…
Browse files Browse the repository at this point in the history
…ing-function

feat(gen): separate automatic flags setting to special method
  • Loading branch information
ernado committed Dec 1, 2021
2 parents 3131337 + cb76f47 commit 81863a2
Show file tree
Hide file tree
Showing 220 changed files with 3,857 additions and 2,331 deletions.
8 changes: 2 additions & 6 deletions internal/gen/_template/encode.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,8 @@ func ({{ $s.Receiver }} *{{ $s.Name }}) EncodeBare({{ $s.BufArg }} *bin.Buffer)
if {{ $s.Receiver }} == nil {
return fmt.Errorf("can't encode {{ $s.RawType }} as nil")
}
{{- range $f := $s.Fields }}
{{- if $f.Conditional }}
if !({{ $s.Receiver }}.{{template "compare_zero" $f}}) {
{{ $s.Receiver }}.{{ $f.ConditionalField }}.Set({{ $f.ConditionalIndex }})
}
{{- end }}
{{- if hasFlags $s }}
{{ $s.Receiver }}.SetFlags()
{{- end }}
{{- range $f := $s.Fields }}
{{- if not $f.ConditionalBool }}
Expand Down
8 changes: 2 additions & 6 deletions internal/gen/_template/encode_tdlib.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,8 @@ func ({{ $s.Receiver }} *{{ $s.Name }}) EncodeTDLibJSON({{ $s.BufArg }} tdjson.E
}
{{ $s.BufArg }}.ObjStart()
{{ $s.BufArg }}.PutID("{{ $s.RawName }}")
{{- range $f := $s.Fields }}
{{- if $f.Conditional }}
if !({{ $s.Receiver }}.{{template "compare_zero" $f}}) {
{{ $s.Receiver }}.{{ $f.ConditionalField }}.Set({{ $f.ConditionalIndex }})
}
{{- end }}
{{- if hasFlags $s }}
{{ $s.Receiver }}.SetFlags()
{{- end }}
{{- range $f := $s.Fields }}
{{- if not $f.ConditionalBool }}
Expand Down
1 change: 1 addition & 0 deletions internal/gen/_template/main.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
{{ template "string_derive" $s }}
{{ if $.Flags.Mapping }}{{ template "fill_from" $s }}{{ end }}
{{ template "type_info" $s }}
{{ template "set_flags" $s }}
{{ template "encode" $s }}
{{ template "decode" $s }}
{{- if $.Flags.TDLibJSON }}
Expand Down
15 changes: 15 additions & 0 deletions internal/gen/_template/set_flags.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{{- /*gotype: github.com/gotd/td/internal/gen.structDef*/ -}}
{{ define "set_flags" }}{{ $s := . }}
{{- if hasFlags $s }}
// SetFlags sets flags for non-zero fields.
func ({{ $s.Receiver }} *{{ $s.Name }}) SetFlags() {
{{- range $f := $s.Fields }}
{{- if $f.Conditional }}
if !({{ $s.Receiver }}.{{template "compare_zero" $f}}) {
{{ $s.Receiver }}.{{ $f.ConditionalField }}.Set({{ $f.ConditionalIndex }})
}
{{- end }}
{{- end }}
}
{{- end }}
{{ end }}
17 changes: 11 additions & 6 deletions internal/gen/example/tl_abstract_message_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 19 additions & 14 deletions internal/gen/example/tl_config_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 19 additions & 14 deletions internal/gen/example/tl_dc_option_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions internal/gen/templates.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,14 @@ func Funcs() template.FuncMap {
}
return lower
},
"hasFlags": func(def structDef) bool {
for _, field := range def.Fields {
if field.Type == flagsType {
return true
}
}
return false
},

// Argument constructors
"newStructConfig": newStructConfig,
Expand Down
33 changes: 19 additions & 14 deletions tdp/internal/schema/tl_config_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 19 additions & 14 deletions tdp/internal/schema/tl_dc_option_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

62 changes: 36 additions & 26 deletions tg/e2e/tl_decrypted_message_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 81863a2

Please sign in to comment.