|  | {{/* | 
|  | // Copyright 2018 The Fuchsia Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  | */}} | 
|  |  | 
|  | {{- define "TableDefinition" -}} | 
|  | {{range .DocComments}} | 
|  | //{{ . }} | 
|  | {{- end}} | 
|  | type {{ .Name }} struct { | 
|  | _ struct{} `{{ .Tags }}` | 
|  | I_unknownData interface{} | 
|  | {{- range .Members }} | 
|  | {{- range .DocComments}} | 
|  | //{{ . }} | 
|  | {{- end}} | 
|  | {{ .DataField }} {{ .Type }} `{{ .Tags }}` | 
|  | {{ .PresenceField }} bool | 
|  | {{- end }} | 
|  | } | 
|  |  | 
|  | {{- range .Members }} | 
|  |  | 
|  | func (u *{{ $.Name }}) {{ .Setter }}({{ .PrivateDataField }} {{ .Type }}) { | 
|  | u.{{ .DataField }} = {{ .PrivateDataField }} | 
|  | u.{{ .PresenceField }} = true | 
|  | } | 
|  |  | 
|  | func (u *{{ $.Name }}) {{ .Getter }}() {{ .Type }} { | 
|  | return u.{{ .DataField }} | 
|  | } | 
|  |  | 
|  | func (u *{{ $.Name }}) {{ .GetterWithDefault }}(_default {{ .Type }}) {{ .Type }} { | 
|  | if !u.{{ .Haser }}() { | 
|  | return _default | 
|  | } | 
|  | return u.{{ .DataField }} | 
|  | } | 
|  |  | 
|  | func (u *{{ $.Name }}) {{ .Haser }}() bool { | 
|  | return u.{{ .PresenceField }} | 
|  | } | 
|  |  | 
|  | func (u *{{ $.Name }}) {{ .Clearer }}() { | 
|  | u.{{ .PresenceField }} = false | 
|  | } | 
|  | {{- end }} | 
|  |  | 
|  | func (u *{{ .Name }}) HasUnknownData() bool { | 
|  | return u.I_unknownData != nil | 
|  | } | 
|  |  | 
|  | func (u *{{ .Name }}) GetUnknownData() map[uint64]{{ .UnknownDataType }} { | 
|  | return u.I_unknownData.(map[uint64]{{ .UnknownDataType }}) | 
|  | } | 
|  |  | 
|  | {{- end -}} | 
|  |  |